| Index: third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp
|
| diff --git a/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp b/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp
|
| index a5b74047443658e8b615745eeb3474d3868bd73d..5735dc4deff19eb40905159fa36ab1793a7c6323 100644
|
| --- a/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp
|
| +++ b/third_party/WebKit/Source/modules/gamepad/NavigatorGamepad.cpp
|
| @@ -106,14 +106,15 @@ DEFINE_TRACE(NavigatorGamepad)
|
| visitor->trace(m_pendingEvents);
|
| visitor->trace(m_dispatchOneEventRunner);
|
| Supplement<Navigator>::trace(visitor);
|
| - DOMWindowProperty::trace(visitor);
|
| + ContextLifecycleObserver::trace(visitor);
|
| PlatformEventController::trace(visitor);
|
| }
|
|
|
| bool NavigatorGamepad::startUpdatingIfAttached()
|
| {
|
| + Document* document = static_cast<Document*>(getExecutionContext());
|
| // The frame must be attached to start updating.
|
| - if (frame() && frame()->host()) {
|
| + if (document && document->frame()) {
|
| startUpdating();
|
| return true;
|
| }
|
| @@ -123,14 +124,14 @@ bool NavigatorGamepad::startUpdatingIfAttached()
|
| void NavigatorGamepad::didUpdateData()
|
| {
|
| // We should stop listening once we detached.
|
| - ASSERT(frame());
|
| - ASSERT(frame()->domWindow());
|
| + Document* document = static_cast<Document*>(getExecutionContext());
|
| + DCHECK(document->frame());
|
| + DCHECK(document->frame()->domWindow());
|
|
|
| // We register to the dispatcher before sampling gamepads so we need to check if we actually have an event listener.
|
| if (!m_hasEventListener)
|
| return;
|
|
|
| - Document* document = frame()->domWindow()->document();
|
| if (document->activeDOMObjectsAreStopped() || document->activeDOMObjectsAreSuspended())
|
| return;
|
|
|
| @@ -151,20 +152,21 @@ void NavigatorGamepad::didUpdateData()
|
|
|
| void NavigatorGamepad::dispatchOneEvent()
|
| {
|
| - ASSERT(frame());
|
| - ASSERT(frame()->domWindow());
|
| - ASSERT(!m_pendingEvents.isEmpty());
|
| + Document* document = static_cast<Document*>(getExecutionContext());
|
| + DCHECK(document->frame());
|
| + DCHECK(document->frame()->domWindow());
|
| + DCHECK(!m_pendingEvents.isEmpty());
|
|
|
| Gamepad* gamepad = m_pendingEvents.takeFirst();
|
| const AtomicString& eventName = gamepad->connected() ? EventTypeNames::gamepadconnected : EventTypeNames::gamepaddisconnected;
|
| - frame()->domWindow()->dispatchEvent(GamepadEvent::create(eventName, false, true, gamepad));
|
| + document->frame()->domWindow()->dispatchEvent(GamepadEvent::create(eventName, false, true, gamepad));
|
|
|
| if (!m_pendingEvents.isEmpty())
|
| m_dispatchOneEventRunner->runAsync();
|
| }
|
|
|
| NavigatorGamepad::NavigatorGamepad(LocalFrame* frame)
|
| - : DOMWindowProperty(frame)
|
| + : ContextLifecycleObserver(frame->document())
|
| , PlatformEventController(frame ? frame->page() : 0)
|
| , m_dispatchOneEventRunner(AsyncMethodRunner<NavigatorGamepad>::create(this, &NavigatorGamepad::dispatchOneEvent))
|
| {
|
| @@ -181,16 +183,9 @@ const char* NavigatorGamepad::supplementName()
|
| return "NavigatorGamepad";
|
| }
|
|
|
| -void NavigatorGamepad::willDestroyGlobalObjectInFrame()
|
| +void NavigatorGamepad::contextDestroyed()
|
| {
|
| stopUpdating();
|
| - DOMWindowProperty::willDestroyGlobalObjectInFrame();
|
| -}
|
| -
|
| -void NavigatorGamepad::willDetachGlobalObjectFromFrame()
|
| -{
|
| - stopUpdating();
|
| - DOMWindowProperty::willDetachGlobalObjectFromFrame();
|
| }
|
|
|
| void NavigatorGamepad::registerWithDispatcher()
|
| @@ -263,7 +258,7 @@ void NavigatorGamepad::pageVisibilityChanged()
|
| GamepadList* oldGamepads = m_gamepads.release();
|
| gamepads();
|
| GamepadList* newGamepads = m_gamepads.get();
|
| - ASSERT(newGamepads);
|
| + DCHECK(newGamepads);
|
|
|
| for (unsigned i = 0; i < WebGamepads::itemsLengthCap; ++i) {
|
| Gamepad* oldGamepad = oldGamepads ? oldGamepads->item(i) : 0;
|
|
|