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

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

Issue 1794553002: [Playground] Onion Soup: moving ScreenWakeLock to Blink modules/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit DEPS Created 4 years, 8 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 "modules/wake_lock/ScreenWakeLock.h"
6
7 #include "core/dom/DOMImplementation.h"
8 #include "core/dom/Document.h"
9 #include "core/dom/DocumentInit.h"
10 #include "core/frame/LocalDOMWindow.h"
11 #include "platform/heap/Handle.h"
12 #include "platform/testing/URLTestHelpers.h"
13 #include "public/platform/Platform.h"
14 #include "public/platform/WebPageVisibilityState.h"
15 #include "public/platform/WebURLLoaderMockFactory.h"
16 #include "public/platform/modules/wake_lock/WebWakeLockClient.h"
17 #include "public/web/WebCache.h"
18 #include "testing/gtest/include/gtest/gtest.h"
19 #include "web/WebLocalFrameImpl.h"
20 #include "web/tests/FrameTestHelpers.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()->getURLLoaderMockFactory()->unregisterAllURLs ();
72 blink::WebCache::clear();
73 }
74
75 void loadFrame()
76 {
77 blink::FrameTestHelpers::loadFrame(
78 m_webViewHelper.webView()->mainFrame(),
79 "http://example.com/foo.html");
80 m_webViewHelper.webViewImpl()->updateAllLifecyclePhases();
81 }
82
83 blink::LocalFrame* frame()
84 {
85 DCHECK(m_webViewHelper.webViewImpl());
86 DCHECK(m_webViewHelper.webViewImpl()->mainFrameImpl());
87 return m_webViewHelper.webViewImpl()->mainFrameImpl()->frame();
88 }
89
90 blink::Screen* screen()
91 {
92 DCHECK(frame());
93 DCHECK(frame()->localDOMWindow());
94 return frame()->localDOMWindow()->screen();
95 }
96
97 bool screenKeepAwake()
98 {
99 DCHECK(screen());
100 return ScreenWakeLock::keepAwake(*screen());
101 }
102
103 bool clientKeepScreenAwake()
104 {
105 return m_testWebFrameClient.testWebWakeLockClient().keepScreenAwake();
106 }
107
108 void setKeepAwake(bool keepAwake)
109 {
110 DCHECK(screen());
111 ScreenWakeLock::setKeepAwake(*screen(), keepAwake);
112 }
113
114 void show()
115 {
116 DCHECK(m_webViewHelper.webView());
117 m_webViewHelper.webView()->setVisibilityState(
118 blink::WebPageVisibilityStateVisible, false);
119 }
120
121 void hide()
122 {
123 DCHECK(m_webViewHelper.webView());
124 m_webViewHelper.webView()->setVisibilityState(
125 blink::WebPageVisibilityStateHidden, false);
126 }
127
128 // Order of these members is important as we need to make sure that
129 // m_testWebFrameClient outlives m_webViewHelper (destruction order)
130 TestWebFrameClient m_testWebFrameClient;
131 blink::FrameTestHelpers::WebViewHelper m_webViewHelper;
132 };
133
134 TEST_F(ScreenWakeLockTest, setAndReset)
135 {
136 ASSERT_FALSE(screenKeepAwake());
137 ASSERT_FALSE(clientKeepScreenAwake());
138
139 setKeepAwake(true);
140 EXPECT_TRUE(screenKeepAwake());
141 EXPECT_TRUE(clientKeepScreenAwake());
142
143 setKeepAwake(false);
144 EXPECT_FALSE(screenKeepAwake());
145 EXPECT_FALSE(clientKeepScreenAwake());
146 }
147
148 TEST_F(ScreenWakeLockTest, hideWhenSet)
149 {
150 ASSERT_FALSE(screenKeepAwake());
151 ASSERT_FALSE(clientKeepScreenAwake());
152
153 setKeepAwake(true);
154 hide();
155
156 EXPECT_TRUE(screenKeepAwake());
157 EXPECT_FALSE(clientKeepScreenAwake());
158 }
159
160 TEST_F(ScreenWakeLockTest, setWhenHidden)
161 {
162 ASSERT_FALSE(screenKeepAwake());
163 ASSERT_FALSE(clientKeepScreenAwake());
164
165 hide();
166 setKeepAwake(true);
167
168 EXPECT_TRUE(screenKeepAwake());
169 EXPECT_FALSE(clientKeepScreenAwake());
170 }
171
172 TEST_F(ScreenWakeLockTest, showWhenSet)
173 {
174 ASSERT_FALSE(screenKeepAwake());
175 ASSERT_FALSE(clientKeepScreenAwake());
176
177 hide();
178 setKeepAwake(true);
179 show();
180
181 EXPECT_TRUE(screenKeepAwake());
182 EXPECT_TRUE(clientKeepScreenAwake());
183 }
184
185 TEST_F(ScreenWakeLockTest, navigate)
186 {
187 ASSERT_FALSE(screenKeepAwake());
188 ASSERT_FALSE(clientKeepScreenAwake());
189
190 setKeepAwake(true);
191 loadFrame();
192
193 EXPECT_FALSE(screenKeepAwake());
194 EXPECT_FALSE(clientKeepScreenAwake());
195 }
196
197 } // namespace
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebLocalFrameImpl.cpp ('k') | third_party/WebKit/Source/web/web.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698