OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 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 "config.h" | |
6 #include "modules/wake_lock/ScreenWakeLock.h" | |
7 | |
8 #include "core/dom/DOMImplementation.h" | |
9 #include "core/dom/Document.h" | |
10 #include "core/dom/DocumentInit.h" | |
11 #include "core/frame/LocalDOMWindow.h" | |
12 #include "platform/heap/Handle.h" | |
13 #include "platform/testing/URLTestHelpers.h" | |
14 #include "public/platform/Platform.h" | |
15 #include "public/platform/WebPageVisibilityState.h" | |
16 #include "public/platform/WebUnitTestSupport.h" | |
17 #include "public/platform/modules/wake_lock/WebWakeLockClient.h" | |
18 #include "web/WebLocalFrameImpl.h" | |
19 #include "web/tests/FrameTestHelpers.h" | |
20 #include <gtest/gtest.h> | |
21 | |
22 namespace { | |
23 | |
24 using blink::ScreenWakeLock; | |
25 using blink::WebWakeLockClient; | |
26 | |
27 class TestWebWakeLockClient: public WebWakeLockClient { | |
28 public: | |
29 TestWebWakeLockClient(): m_keepScreenAwake(false) { } | |
30 | |
31 void requestKeepScreenAwake(bool keepScreenAwake) override | |
32 { | |
33 m_keepScreenAwake = keepScreenAwake; | |
34 } | |
35 | |
36 bool keepScreenAwake() const { return m_keepScreenAwake; } | |
37 | |
38 private: | |
39 bool m_keepScreenAwake; | |
40 }; | |
41 | |
42 class TestWebFrameClient: public blink::FrameTestHelpers::TestWebFrameClient { | |
43 public: | |
44 WebWakeLockClient* wakeLockClient() override | |
45 { | |
46 return &m_testWebWakeLockClient; | |
47 } | |
48 | |
49 const TestWebWakeLockClient& testWebWakeLockClient() const | |
50 { | |
51 return m_testWebWakeLockClient; | |
52 } | |
53 | |
54 private: | |
55 TestWebWakeLockClient m_testWebWakeLockClient; | |
56 }; | |
57 | |
58 class ScreenWakeLockTest: public testing::Test { | |
59 protected: | |
60 void SetUp() override | |
61 { | |
62 m_webViewHelper.initialize(true, &m_testWebFrameClient); | |
63 blink::URLTestHelpers::registerMockedURLFromBaseURL( | |
64 blink::WebString::fromUTF8("http://example.com/"), | |
65 blink::WebString::fromUTF8("foo.html")); | |
66 loadFrame(); | |
67 } | |
68 | |
69 void TearDown() override | |
70 { | |
71 blink::Platform::current()->unitTestSupport()->unregisterAllMockedURLs() ; | |
72 } | |
73 | |
74 void loadFrame() | |
75 { | |
76 blink::FrameTestHelpers::loadFrame( | |
77 m_webViewHelper.webView()->mainFrame(), | |
78 "http://example.com/foo.html"); | |
79 m_webViewHelper.webViewImpl()->layout(); | |
80 } | |
81 | |
82 blink::LocalFrame* frame() | |
83 { | |
84 ASSERT(m_webViewHelper.webViewImpl()); | |
85 ASSERT(m_webViewHelper.webViewImpl()->mainFrameImpl()); | |
86 return m_webViewHelper.webViewImpl()->mainFrameImpl()->frame(); | |
87 } | |
88 | |
89 blink::Screen* screen() | |
90 { | |
91 ASSERT(frame()); | |
92 ASSERT(frame()->localDOMWindow()); | |
93 return frame()->localDOMWindow()->screen(); | |
94 } | |
95 | |
96 // blink::Document* document() | |
97 // { | |
98 // ASSERT(frame()); | |
99 // return frame()->document(); | |
100 // } | |
mlamouri (slow - plz ping)
2015/07/05 14:50:14
nit: remove?
| |
101 | |
102 bool screenKeepAwake() | |
103 { | |
104 ASSERT(screen()); | |
105 return ScreenWakeLock::keepAwake(*screen()); | |
106 } | |
107 | |
108 bool clientKeepScreenAwake() | |
109 { | |
110 return m_testWebFrameClient.testWebWakeLockClient().keepScreenAwake(); | |
111 } | |
112 | |
113 void setKeepAwake(bool keepAwake) | |
114 { | |
115 ASSERT(screen()); | |
116 ScreenWakeLock::setKeepAwake(*screen(), keepAwake); | |
117 } | |
118 | |
119 void show() | |
120 { | |
121 ASSERT(m_webViewHelper.webView()); | |
122 m_webViewHelper.webView()->setVisibilityState( | |
123 blink::WebPageVisibilityStateVisible, false); | |
124 } | |
125 | |
126 void hide() | |
127 { | |
128 ASSERT(m_webViewHelper.webView()); | |
129 m_webViewHelper.webView()->setVisibilityState( | |
130 blink::WebPageVisibilityStateHidden, false); | |
131 } | |
132 | |
133 // Order of these members is important as we need to make sure that | |
134 // m_testWebFrameClient outlives m_webViewHelper (destruction order) | |
135 TestWebFrameClient m_testWebFrameClient; | |
136 blink::FrameTestHelpers::WebViewHelper m_webViewHelper; | |
137 }; | |
138 | |
139 TEST_F(ScreenWakeLockTest, setAndReset) | |
140 { | |
141 ASSERT_FALSE(screenKeepAwake()); | |
142 ASSERT_FALSE(clientKeepScreenAwake()); | |
143 | |
144 setKeepAwake(true); | |
145 EXPECT_TRUE(screenKeepAwake()); | |
146 EXPECT_TRUE(clientKeepScreenAwake()); | |
147 | |
148 setKeepAwake(false); | |
149 EXPECT_FALSE(screenKeepAwake()); | |
150 EXPECT_FALSE(clientKeepScreenAwake()); | |
151 } | |
152 | |
153 TEST_F(ScreenWakeLockTest, hideWhenSet) | |
154 { | |
155 ASSERT_FALSE(screenKeepAwake()); | |
156 ASSERT_FALSE(clientKeepScreenAwake()); | |
157 | |
158 setKeepAwake(true); | |
159 hide(); | |
160 | |
161 EXPECT_TRUE(screenKeepAwake()); | |
162 EXPECT_FALSE(clientKeepScreenAwake()); | |
163 } | |
164 | |
165 TEST_F(ScreenWakeLockTest, setWhenHidden) | |
166 { | |
167 ASSERT_FALSE(screenKeepAwake()); | |
168 ASSERT_FALSE(clientKeepScreenAwake()); | |
169 | |
170 hide(); | |
171 setKeepAwake(true); | |
172 | |
173 EXPECT_TRUE(screenKeepAwake()); | |
174 EXPECT_FALSE(clientKeepScreenAwake()); | |
175 } | |
176 | |
177 TEST_F(ScreenWakeLockTest, showWhenSet) | |
178 { | |
179 ASSERT_FALSE(screenKeepAwake()); | |
180 ASSERT_FALSE(clientKeepScreenAwake()); | |
181 | |
182 hide(); | |
183 setKeepAwake(true); | |
184 show(); | |
185 | |
186 EXPECT_TRUE(screenKeepAwake()); | |
187 EXPECT_TRUE(clientKeepScreenAwake()); | |
188 } | |
189 | |
190 TEST_F(ScreenWakeLockTest, navigate) | |
191 { | |
192 ASSERT_FALSE(screenKeepAwake()); | |
193 ASSERT_FALSE(clientKeepScreenAwake()); | |
194 | |
195 setKeepAwake(true); | |
196 loadFrame(); | |
197 | |
198 EXPECT_FALSE(screenKeepAwake()); | |
199 EXPECT_FALSE(clientKeepScreenAwake()); | |
200 } | |
201 | |
202 } // namespace | |
OLD | NEW |