1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "ppapi/tests/test_flash.h" 6 7 #include "ppapi/c/pp_macros.h" 8 #include "ppapi/c/private/ppb_flash.h" 9 #include "ppapi/cpp/instance.h" 10 #include "ppapi/cpp/module.h" 11 #include "ppapi/cpp/private/flash.h" 12 #include "ppapi/cpp/var.h" 13 #include "ppapi/tests/testing_instance.h" 14 15 REGISTER_TEST_CASE(Flash); 16 17 using pp::flash::Flash; 18 using pp::Var; 19 20 TestFlash::TestFlash(TestingInstance* instance) 21 : TestCase(instance), 22 PP_ALLOW_THIS_IN_INITIALIZER_LIST(callback_factory_(this)) { 23 } 24 25 void TestFlash::RunTests(const std::string& filter) { 26 RUN_TEST(SetInstanceAlwaysOnTop, filter); 27 RUN_TEST(GetProxyForURL, filter); 28 RUN_TEST(GetLocalTimeZoneOffset, filter); 29 RUN_TEST(GetCommandLineArgs, filter); 30 RUN_TEST(GetSetting, filter); 31 RUN_TEST(SetCrashData, filter); 32 } 33 34 std::string TestFlash::TestSetInstanceAlwaysOnTop() { 35 Flash::SetInstanceAlwaysOnTop(instance_, PP_TRUE); 36 Flash::SetInstanceAlwaysOnTop(instance_, PP_FALSE); 37 PASS(); 38 } 39 40 std::string TestFlash::TestGetProxyForURL() { 41 Var result = Flash::GetProxyForURL(instance_, "http://127.0.0.1/foobar/"); 42 ASSERT_TRUE(result.is_string()); 43 // Assume no one configures a proxy for localhost. 44 ASSERT_EQ("DIRECT", result.AsString()); 45 46 result = Flash::GetProxyForURL(instance_, "http://www.google.com"); 47 // Don't know what the proxy might be, but it should be a valid result. 48 ASSERT_TRUE(result.is_string()); 49 50 result = Flash::GetProxyForURL(instance_, "file:///tmp"); 51 ASSERT_TRUE(result.is_string()); 52 // Should get "DIRECT" for file:// URLs. 53 ASSERT_EQ("DIRECT", result.AsString()); 54 55 result = Flash::GetProxyForURL(instance_, "this_isnt_an_url"); 56 // Should be an error. 57 ASSERT_TRUE(result.is_undefined()); 58 59 PASS(); 60 } 61 62 std::string TestFlash::TestGetLocalTimeZoneOffset() { 63 double result = Flash::GetLocalTimeZoneOffset(instance_, 1321491298.0); 64 // The result depends on the local time zone, but +/- 14h from UTC should 65 // cover the possibilities. 66 ASSERT_TRUE(result >= -14 * 60 * 60); 67 ASSERT_TRUE(result <= 14 * 60 * 60); 68 69 PASS(); 70 } 71 72 std::string TestFlash::TestGetCommandLineArgs() { 73 Var result = Flash::GetCommandLineArgs(pp::Module::Get()); 74 ASSERT_TRUE(result.is_string()); 75 76 PASS(); 77 } 78 79 std::string TestFlash::TestGetSetting() { 80 Var is_3denabled = Flash::GetSetting(instance_, PP_FLASHSETTING_3DENABLED); 81 ASSERT_TRUE(is_3denabled.is_bool()); 82 83 Var is_incognito = Flash::GetSetting(instance_, PP_FLASHSETTING_INCOGNITO); 84 ASSERT_TRUE(is_incognito.is_bool()); 85 86 Var is_stage3denabled = Flash::GetSetting(instance_, 87 PP_FLASHSETTING_STAGE3DENABLED); 88 // This may "fail" if 3d isn't enabled. 89 ASSERT_TRUE(is_stage3denabled.is_bool() || 90 (is_stage3denabled.is_undefined() && !is_3denabled.AsBool())); 91 92 Var num_cores = Flash::GetSetting(instance_, PP_FLASHSETTING_NUMCORES); 93 ASSERT_TRUE(num_cores.is_int() && num_cores.AsInt() > 0); 94 95 Var lso_restrictions = Flash::GetSetting(instance_, 96 PP_FLASHSETTING_LSORESTRICTIONS); 97 ASSERT_TRUE(lso_restrictions.is_int()); 98 int32_t lso_restrictions_int = lso_restrictions.AsInt(); 99 ASSERT_TRUE(lso_restrictions_int == PP_FLASHLSORESTRICTIONS_NONE || 100 lso_restrictions_int == PP_FLASHLSORESTRICTIONS_BLOCK || 101 lso_restrictions_int == PP_FLASHLSORESTRICTIONS_IN_MEMORY); 102 103 // Invalid instance cases. 104 Var result = Flash::GetSetting( 105 pp::InstanceHandle(static_cast<PP_Instance>(0)), 106 PP_FLASHSETTING_3DENABLED); 107 ASSERT_TRUE(result.is_undefined()); 108 result = Flash::GetSetting(pp::InstanceHandle(static_cast<PP_Instance>(0)), 109 PP_FLASHSETTING_INCOGNITO); 110 ASSERT_TRUE(result.is_undefined()); 111 result = Flash::GetSetting(pp::InstanceHandle(static_cast<PP_Instance>(0)), 112 PP_FLASHSETTING_STAGE3DENABLED); 113 ASSERT_TRUE(result.is_undefined()); 114 115 PASS(); 116 } 117 118 std::string TestFlash::TestSetCrashData() { 119 pp::Var url("http://..."); 120 ASSERT_TRUE(Flash::SetCrashData(instance_, PP_FLASHCRASHKEY_URL, url)); 121 122 PASS(); 123 } 124