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

Unified Diff: third_party/WebKit/Source/modules/wake_lock/ScreenWakeLock.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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698