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

Side by Side Diff: third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp

Issue 1883493003: [OnionSoup] Moving WakeLock Service to Blink (2/2): removing WebWakeLockClient and WakeLockDispatch… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/wake_lock/ScreenWakeLock.h" 5 #include "modules/wake_lock/ScreenWakeLock.h"
6 6
7 #include "core/frame/LocalFrame.h" 7 #include "core/frame/LocalFrame.h"
8 #include "core/frame/Screen.h" 8 #include "core/frame/Screen.h"
9 #include "core/page/PageVisibilityState.h" 9 #include "core/page/PageVisibilityState.h"
10 #include "platform/RuntimeEnabledFeatures.h" 10 #include "platform/RuntimeEnabledFeatures.h"
11 #include "public/platform/modules/wake_lock/WebWakeLockClient.h" 11 #include "public/platform/ServiceRegistry.h"
12 12
13 namespace blink { 13 namespace blink {
14 14
15 // static 15 // static
16 bool ScreenWakeLock::keepAwake(Screen& screen) 16 bool ScreenWakeLock::keepAwake(Screen& screen)
17 { 17 {
18 ScreenWakeLock* screenWakeLock = fromScreen(screen); 18 ScreenWakeLock* screenWakeLock = fromScreen(screen);
19 if (!screenWakeLock) 19 if (!screenWakeLock)
20 return false; 20 return false;
21 21
22 return screenWakeLock->keepAwake(); 22 return screenWakeLock->keepAwake();
23 } 23 }
24 24
25 // static 25 // static
26 void ScreenWakeLock::setKeepAwake(Screen& screen, bool keepAwake) 26 void ScreenWakeLock::setKeepAwake(Screen& screen, bool keepAwake)
27 { 27 {
28 ScreenWakeLock* screenWakeLock = fromScreen(screen); 28 ScreenWakeLock* screenWakeLock = fromScreen(screen);
29 if (!screenWakeLock) 29 if (screenWakeLock)
30 return; 30 screenWakeLock->setKeepAwake(keepAwake);
31
32 screenWakeLock->setKeepAwake(keepAwake);
33 }
34
35 void ScreenWakeLock::setKeepAwake(bool keepAwake)
36 {
37 m_keepAwake = keepAwake;
38 notifyClient();
39 } 31 }
40 32
41 // static 33 // static
42 const char* ScreenWakeLock::supplementName() 34 const char* ScreenWakeLock::supplementName()
43 { 35 {
44 return "ScreenWakeLock"; 36 return "ScreenWakeLock";
45 } 37 }
46 38
47 // static 39 // static
48 ScreenWakeLock* ScreenWakeLock::from(LocalFrame* frame) 40 ScreenWakeLock* ScreenWakeLock::from(LocalFrame* frame)
49 { 41 {
50 return static_cast<ScreenWakeLock*>(Supplement<LocalFrame>::from(frame, supp lementName())); 42 return static_cast<ScreenWakeLock*>(Supplement<LocalFrame>::from(frame, supp lementName()));
51 } 43 }
52 44
53 // static 45 // static
54 void ScreenWakeLock::provideTo(LocalFrame& frame, WebWakeLockClient* client) 46 void ScreenWakeLock::provideTo(LocalFrame& frame, ServiceRegistry* registry)
55 { 47 {
56 ASSERT(RuntimeEnabledFeatures::wakeLockEnabled()); 48 DCHECK(RuntimeEnabledFeatures::wakeLockEnabled());
57 Supplement<LocalFrame>::provideTo( 49 Supplement<LocalFrame>::provideTo(
58 frame, 50 frame,
59 ScreenWakeLock::supplementName(), 51 ScreenWakeLock::supplementName(),
60 new ScreenWakeLock(frame, client)); 52 registry ? new ScreenWakeLock(frame, registry) : nullptr);
esprehn 2016/04/15 22:38:13 hmm, why would you ever get a null registry?
mcasas 2016/04/16 00:34:14 See below.
61 } 53 }
62 54
63 void ScreenWakeLock::pageVisibilityChanged() 55 void ScreenWakeLock::pageVisibilityChanged()
64 { 56 {
65 notifyClient(); 57 notifyClient();
66 } 58 }
67 59
68 void ScreenWakeLock::didCommitLoad(LocalFrame* committedFrame) 60 void ScreenWakeLock::didCommitLoad(LocalFrame* committedFrame)
69 { 61 {
70 // Reset wake lock flag for this frame if it is the one being navigated. 62 // Reset wake lock flag for this frame if it is the one being navigated.
71 if (committedFrame == frame()) { 63 if (committedFrame == frame())
72 setKeepAwake(false); 64 setKeepAwake(false);
73 }
74 } 65 }
75 66
76 void ScreenWakeLock::willDetachFrameHost() 67 void ScreenWakeLock::willDetachFrameHost()
77 { 68 {
78 m_client = nullptr; 69 setKeepAwake(false);
79 } 70 }
80 71
81 DEFINE_TRACE(ScreenWakeLock) 72 DEFINE_TRACE(ScreenWakeLock)
82 { 73 {
83 Supplement<LocalFrame>::trace(visitor); 74 Supplement<LocalFrame>::trace(visitor);
84 PageLifecycleObserver::trace(visitor); 75 PageLifecycleObserver::trace(visitor);
85 LocalFrameLifecycleObserver::trace(visitor); 76 LocalFrameLifecycleObserver::trace(visitor);
86 } 77 }
87 78
88 ScreenWakeLock::ScreenWakeLock(LocalFrame& frame, WebWakeLockClient* client) 79 ScreenWakeLock::ScreenWakeLock(LocalFrame& frame, ServiceRegistry* registry)
esprehn 2016/04/15 22:38:13 pass a reference
mcasas 2016/04/16 00:34:14 See below.
89 : PageLifecycleObserver(frame.page()) 80 : PageLifecycleObserver(frame.page())
90 , LocalFrameLifecycleObserver(&frame) 81 , LocalFrameLifecycleObserver(&frame)
91 , m_client(client)
92 , m_keepAwake(false) 82 , m_keepAwake(false)
93 { 83 {
84 DCHECK(!m_service.is_bound());
85 DCHECK(registry);
esprehn 2016/04/15 22:38:13 remove dcheck and just use a reference?
mcasas 2016/04/16 00:34:14 ServiceRegistry should not be null, but the caller
86 registry->connectToRemoteService(mojo::GetProxy(&m_service));
87 }
88
89 bool ScreenWakeLock::keepAwake() const
90 {
91 return m_keepAwake;
92 }
93
94 void ScreenWakeLock::setKeepAwake(bool keepAwake)
95 {
96 m_keepAwake = keepAwake;
97 notifyClient();
94 } 98 }
95 99
96 // static 100 // static
97 ScreenWakeLock* ScreenWakeLock::fromScreen(Screen& screen) 101 ScreenWakeLock* ScreenWakeLock::fromScreen(Screen& screen)
98 { 102 {
99 return screen.frame() ? ScreenWakeLock::from(screen.frame()) : nullptr; 103 return screen.frame() ? ScreenWakeLock::from(screen.frame()) : nullptr;
100 } 104 }
101 105
102 void ScreenWakeLock::notifyClient() 106 void ScreenWakeLock::notifyClient()
esprehn 2016/04/15 22:38:13 does this need a new name?
mcasas 2016/04/16 00:34:14 Done.
103 { 107 {
104 if (!m_client) 108 if (!m_service)
105 return; 109 return;
106 110
107 m_client->requestKeepScreenAwake(m_keepAwake && page() && page()->isPageVisi ble()); 111 if (m_keepAwake && frame()->page() && frame()->page()->isPageVisible())
112 m_service->RequestWakeLock();
113 else
114 m_service->CancelWakeLock();
108 } 115 }
109 116
110 } // namespace blink 117 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698