Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: Source/web/tests/ScreenWakeLockTest.cpp

Issue 1084923002: Wake Lock API implementation (Blink part) (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/web/WebLocalFrameImpl.cpp ('k') | Source/web/web.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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 bool screenKeepAwake()
97 {
98 ASSERT(screen());
99 return ScreenWakeLock::keepAwake(*screen());
100 }
101
102 bool clientKeepScreenAwake()
103 {
104 return m_testWebFrameClient.testWebWakeLockClient().keepScreenAwake();
105 }
106
107 void setKeepAwake(bool keepAwake)
108 {
109 ASSERT(screen());
110 ScreenWakeLock::setKeepAwake(*screen(), keepAwake);
111 }
112
113 void show()
114 {
115 ASSERT(m_webViewHelper.webView());
116 m_webViewHelper.webView()->setVisibilityState(
117 blink::WebPageVisibilityStateVisible, false);
118 }
119
120 void hide()
121 {
122 ASSERT(m_webViewHelper.webView());
123 m_webViewHelper.webView()->setVisibilityState(
124 blink::WebPageVisibilityStateHidden, false);
125 }
126
127 // Order of these members is important as we need to make sure that
128 // m_testWebFrameClient outlives m_webViewHelper (destruction order)
129 TestWebFrameClient m_testWebFrameClient;
130 blink::FrameTestHelpers::WebViewHelper m_webViewHelper;
131 };
132
133 TEST_F(ScreenWakeLockTest, setAndReset)
134 {
135 ASSERT_FALSE(screenKeepAwake());
136 ASSERT_FALSE(clientKeepScreenAwake());
137
138 setKeepAwake(true);
139 EXPECT_TRUE(screenKeepAwake());
140 EXPECT_TRUE(clientKeepScreenAwake());
141
142 setKeepAwake(false);
143 EXPECT_FALSE(screenKeepAwake());
144 EXPECT_FALSE(clientKeepScreenAwake());
145 }
146
147 TEST_F(ScreenWakeLockTest, hideWhenSet)
148 {
149 ASSERT_FALSE(screenKeepAwake());
150 ASSERT_FALSE(clientKeepScreenAwake());
151
152 setKeepAwake(true);
153 hide();
154
155 EXPECT_TRUE(screenKeepAwake());
156 EXPECT_FALSE(clientKeepScreenAwake());
157 }
158
159 TEST_F(ScreenWakeLockTest, setWhenHidden)
160 {
161 ASSERT_FALSE(screenKeepAwake());
162 ASSERT_FALSE(clientKeepScreenAwake());
163
164 hide();
165 setKeepAwake(true);
166
167 EXPECT_TRUE(screenKeepAwake());
168 EXPECT_FALSE(clientKeepScreenAwake());
169 }
170
171 TEST_F(ScreenWakeLockTest, showWhenSet)
172 {
173 ASSERT_FALSE(screenKeepAwake());
174 ASSERT_FALSE(clientKeepScreenAwake());
175
176 hide();
177 setKeepAwake(true);
178 show();
179
180 EXPECT_TRUE(screenKeepAwake());
181 EXPECT_TRUE(clientKeepScreenAwake());
182 }
183
184 TEST_F(ScreenWakeLockTest, navigate)
185 {
186 ASSERT_FALSE(screenKeepAwake());
187 ASSERT_FALSE(clientKeepScreenAwake());
188
189 setKeepAwake(true);
190 loadFrame();
191
192 EXPECT_FALSE(screenKeepAwake());
193 EXPECT_FALSE(clientKeepScreenAwake());
194 }
195
196 } // namespace
OLDNEW
« no previous file with comments | « Source/web/WebLocalFrameImpl.cpp ('k') | Source/web/web.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698