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

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
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 // 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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698