Chromium Code Reviews| Index: Source/core/dom/WakeLock.h |
| diff --git a/Source/core/dom/WakeLock.h b/Source/core/dom/WakeLock.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fab2c3e2a0ebfcb4c8328a48aee7965ce053c656 |
| --- /dev/null |
| +++ b/Source/core/dom/WakeLock.h |
| @@ -0,0 +1,59 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef WakeLock_h |
| +#define WakeLock_h |
| + |
| +#include "core/dom/DocumentLifecycleObserver.h" |
| +#include "core/dom/DocumentSupplementable.h" |
| +#include "core/dom/WakeLockController.h" |
| +#include "core/page/PageVisibilityState.h" |
| +#include "platform/heap/Handle.h" |
| + |
| +namespace blink { |
| + |
| +class Document; |
| + |
| +class WakeLock final |
| + : public NoBaseWillBeGarbageCollectedFinalized<WakeLock> |
| + , public DocumentSupplement |
|
mlamouri (slow - plz ping)
2015/04/28 08:00:25
Hmmm, why do you have a Document supplement and a
alogvinov
2015/04/28 16:34:25
WakeLock stores the state of keepScreenAwake flag.
mlamouri (slow - plz ping)
2015/04/29 10:07:08
Couldn't WakeLockDocument rely on the value stored
alogvinov
2015/04/29 16:50:59
Those properties are read-only. keepScreenAwake is
mlamouri (slow - plz ping)
2015/04/30 13:15:38
Fair point. Though, I wonder if we would be okay w
|
| + , public DocumentLifecycleObserver { |
| + WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(WakeLock); |
| +public: |
| + static const char* supplementName(); |
| + static WakeLock& from(Document&); |
| + |
| + static bool keepScreenAwake(Document&); |
| + static void setKeepScreenAwake(Document&, bool); |
| + |
| + // DocumentLifecycleObserver implementation |
| + virtual void documentWasDetached() override; |
| + |
| + DECLARE_VIRTUAL_TRACE(); |
| + |
| +private: |
| + class WakeLockDocumentVisibilityObserver; |
| + |
| + explicit WakeLock(Document&); |
| + |
| + void didChangeVisibilityState(PageVisibilityState); |
| + void setKeepScreenAwake(bool); |
| + void notifyController() const; |
| + |
| + RawPtrWillBeMember<WakeLockController> m_controller; |
| + |
| + // We need visibility observer as a member rather than as a base becasue |
| + // when Oilpan is disabled, we need to be able to delete it before |
| + // Document's destructor runs, as it asserts empty visibility observer list. |
| + // This instance is owned by Document's base DocumentSupplementable, so |
| + // it will be destroyed only after Document's destructor has finished. |
|
mlamouri (slow - plz ping)
2015/04/28 08:00:25
I'm not sure I follow. How is HTMLCanvasElement do
alogvinov
2015/04/28 16:34:25
HTMLCanvasElement is an HTMLElement, i.e. it is pa
mlamouri (slow - plz ping)
2015/04/29 10:07:08
Ok. I see. Maybe we should have a way to clear the
|
| + OwnPtrWillBeMember<WakeLockDocumentVisibilityObserver> m_observer; |
| + |
| + PageVisibilityState m_pageVisibilityState; |
| + bool m_keepScreenAwake; |
| +}; |
| + |
| +} // namespace blink |
| + |
| +#endif // WakeLock_h |