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
TestFlash(TestingInstance * instance)20 TestFlash::TestFlash(TestingInstance* instance)
21 : TestCase(instance),
22 callback_factory_(this) {
23 }
24
RunTests(const std::string & filter)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
TestSetInstanceAlwaysOnTop()34 std::string TestFlash::TestSetInstanceAlwaysOnTop() {
35 Flash::SetInstanceAlwaysOnTop(instance_, PP_TRUE);
36 Flash::SetInstanceAlwaysOnTop(instance_, PP_FALSE);
37 PASS();
38 }
39
TestGetProxyForURL()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
TestGetLocalTimeZoneOffset()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
TestGetCommandLineArgs()72 std::string TestFlash::TestGetCommandLineArgs() {
73 Var result = Flash::GetCommandLineArgs(pp::Module::Get());
74 ASSERT_TRUE(result.is_string());
75
76 PASS();
77 }
78
TestGetSetting()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
TestSetCrashData()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