1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ppapi/tests/test_flash.h"
#include "base/compiler_specific.h"
#include "ppapi/c/private/ppb_flash.h"
#include "ppapi/cpp/instance.h"
#include "ppapi/cpp/module.h"
#include "ppapi/cpp/var.h"
#include "ppapi/tests/testing_instance.h"
REGISTER_TEST_CASE(Flash);
using pp::Var;
TestFlash::TestFlash(TestingInstance* instance)
: TestCase(instance),
ALLOW_THIS_IN_INITIALIZER_LIST(callback_factory_(this)) {
}
bool TestFlash::Init() {
flash_interface_ = static_cast<const PPB_Flash*>(
pp::Module::Get()->GetBrowserInterface(PPB_FLASH_INTERFACE));
return !!flash_interface_;
}
void TestFlash::RunTests(const std::string& filter) {
RUN_TEST(SetInstanceAlwaysOnTop, filter);
RUN_TEST(GetProxyForURL, filter);
RUN_TEST(MessageLoop, filter);
RUN_TEST(GetLocalTimeZoneOffset, filter);
RUN_TEST(GetCommandLineArgs, filter);
}
std::string TestFlash::TestSetInstanceAlwaysOnTop() {
flash_interface_->SetInstanceAlwaysOnTop(instance_->pp_instance(), PP_TRUE);
flash_interface_->SetInstanceAlwaysOnTop(instance_->pp_instance(), PP_FALSE);
PASS();
}
std::string TestFlash::TestGetProxyForURL() {
Var result(Var::PassRef(),
flash_interface_->GetProxyForURL(instance_->pp_instance(),
"http://127.0.0.1/foobar/"));
ASSERT_TRUE(result.is_string());
// Assume no one configures a proxy for localhost.
ASSERT_EQ("DIRECT", result.AsString());
result = Var(Var::PassRef(),
flash_interface_->GetProxyForURL(instance_->pp_instance(),
"http://www.google.com"));
// Don't know what the proxy might be, but it should be a valid result.
ASSERT_TRUE(result.is_string());
result = Var(Var::PassRef(),
flash_interface_->GetProxyForURL(instance_->pp_instance(),
"file:///tmp"));
ASSERT_TRUE(result.is_string());
// Should get "DIRECT" for file:// URLs.
ASSERT_EQ("DIRECT", result.AsString());
result = Var(Var::PassRef(),
flash_interface_->GetProxyForURL(instance_->pp_instance(),
"this_isnt_an_url"));
// Should be an error.
ASSERT_TRUE(result.is_undefined());
PASS();
}
std::string TestFlash::TestMessageLoop() {
pp::CompletionCallback callback =
callback_factory_.NewRequiredCallback(&TestFlash::QuitMessageLoopTask);
pp::Module::Get()->core()->CallOnMainThread(0, callback);
flash_interface_->RunMessageLoop(instance_->pp_instance());
PASS();
}
std::string TestFlash::TestGetLocalTimeZoneOffset() {
double result = flash_interface_->GetLocalTimeZoneOffset(
instance_->pp_instance(), 1321491298.0);
// The result depends on the local time zone, but +/- 14h from UTC should
// cover the possibilities.
ASSERT_TRUE(result >= -14 * 60 * 60);
ASSERT_TRUE(result <= 14 * 60 * 60);
PASS();
}
std::string TestFlash::TestGetCommandLineArgs() {
Var result(Var::PassRef(),
flash_interface_->GetCommandLineArgs(
pp::Module::Get()->pp_module()));
ASSERT_TRUE(result.is_string());
PASS();
}
void TestFlash::QuitMessageLoopTask(int32_t) {
flash_interface_->QuitMessageLoop(instance_->pp_instance());
}
|