| Index: third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp
|
| diff --git a/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp b/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp
|
| index 331e672b50e8610b5a72b99e986333bd2ca7b1de..9bb9ff1b9fb10113253c14c98d367b8cdb64813e 100644
|
| --- a/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp
|
| +++ b/third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.cpp
|
| @@ -8,10 +8,16 @@
|
| #include "core/frame/Screen.h"
|
| #include "core/page/PageVisibilityState.h"
|
| #include "platform/RuntimeEnabledFeatures.h"
|
| -#include "public/platform/modules/wake_lock/WebWakeLockClient.h"
|
| +#include "public/platform/ServiceRegistry.h"
|
|
|
| namespace blink {
|
|
|
| +RawPtr<ScreenWakeLock> ScreenWakeLock::create(LocalFrame& frame, ServiceRegistry* registry)
|
| +{
|
| + DCHECK(RuntimeEnabledFeatures::wakeLockEnabled());
|
| + return registry ? new ScreenWakeLock(frame, registry) : nullptr;
|
| +}
|
| +
|
| // static
|
| bool ScreenWakeLock::keepAwake(Screen& screen)
|
| {
|
| @@ -26,16 +32,8 @@ bool ScreenWakeLock::keepAwake(Screen& screen)
|
| void ScreenWakeLock::setKeepAwake(Screen& screen, bool keepAwake)
|
| {
|
| ScreenWakeLock* screenWakeLock = fromScreen(screen);
|
| - if (!screenWakeLock)
|
| - return;
|
| -
|
| - screenWakeLock->setKeepAwake(keepAwake);
|
| -}
|
| -
|
| -void ScreenWakeLock::setKeepAwake(bool keepAwake)
|
| -{
|
| - m_keepAwake = keepAwake;
|
| - notifyClient();
|
| + if (screenWakeLock)
|
| + screenWakeLock->setKeepAwake(keepAwake);
|
| }
|
|
|
| // static
|
| @@ -50,16 +48,6 @@ ScreenWakeLock* ScreenWakeLock::from(LocalFrame* frame)
|
| return static_cast<ScreenWakeLock*>(Supplement<LocalFrame>::from(frame, supplementName()));
|
| }
|
|
|
| -// static
|
| -void ScreenWakeLock::provideTo(LocalFrame& frame, WebWakeLockClient* client)
|
| -{
|
| - ASSERT(RuntimeEnabledFeatures::wakeLockEnabled());
|
| - Supplement<LocalFrame>::provideTo(
|
| - frame,
|
| - ScreenWakeLock::supplementName(),
|
| - new ScreenWakeLock(frame, client));
|
| -}
|
| -
|
| void ScreenWakeLock::pageVisibilityChanged()
|
| {
|
| notifyClient();
|
| @@ -68,14 +56,13 @@ void ScreenWakeLock::pageVisibilityChanged()
|
| void ScreenWakeLock::didCommitLoad(LocalFrame* committedFrame)
|
| {
|
| // Reset wake lock flag for this frame if it is the one being navigated.
|
| - if (committedFrame == frame()) {
|
| + if (committedFrame == frame())
|
| setKeepAwake(false);
|
| - }
|
| }
|
|
|
| void ScreenWakeLock::willDetachFrameHost()
|
| {
|
| - m_client = nullptr;
|
| + setKeepAwake(false);
|
| }
|
|
|
| DEFINE_TRACE(ScreenWakeLock)
|
| @@ -85,12 +72,25 @@ DEFINE_TRACE(ScreenWakeLock)
|
| LocalFrameLifecycleObserver::trace(visitor);
|
| }
|
|
|
| -ScreenWakeLock::ScreenWakeLock(LocalFrame& frame, WebWakeLockClient* client)
|
| +ScreenWakeLock::ScreenWakeLock(LocalFrame& frame, ServiceRegistry* registry)
|
| : PageLifecycleObserver(frame.page())
|
| , LocalFrameLifecycleObserver(&frame)
|
| - , m_client(client)
|
| , m_keepAwake(false)
|
| {
|
| + DCHECK(!m_service.is_bound());
|
| + DCHECK(registry);
|
| + registry->connectToRemoteService(mojo::GetProxy(&m_service));
|
| +}
|
| +
|
| +bool ScreenWakeLock::keepAwake() const
|
| +{
|
| + return m_keepAwake;
|
| +}
|
| +
|
| +void ScreenWakeLock::setKeepAwake(bool keepAwake)
|
| +{
|
| + m_keepAwake = keepAwake;
|
| + notifyClient();
|
| }
|
|
|
| // static
|
| @@ -101,10 +101,19 @@ ScreenWakeLock* ScreenWakeLock::fromScreen(Screen& screen)
|
|
|
| void ScreenWakeLock::notifyClient()
|
| {
|
| - if (!m_client)
|
| + if (!m_service)
|
| return;
|
|
|
| - m_client->requestKeepScreenAwake(m_keepAwake && page() && page()->isPageVisible());
|
| + if (m_keepAwake && frame()->page() && frame()->page()->isPageVisible())
|
| + m_service->RequestWakeLock();
|
| + else
|
| + m_service->CancelWakeLock();
|
| }
|
|
|
| +void provideScreenWakeLockTo(LocalFrame& frame, ServiceRegistry* registry)
|
| +{
|
| + frame.provideSupplement(ScreenWakeLock::supplementName(), ScreenWakeLock::create(frame, registry));
|
| +}
|
| +
|
| +
|
| } // namespace blink
|
|
|