Index: third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.cpp |
diff --git a/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.cpp b/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.cpp |
index 6414baef66c55afa760a044a6f1d2ab093455023..4b7b693c5868a6e0fcf9c172b045820929f74657 100644 |
--- a/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.cpp |
+++ b/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.cpp |
@@ -4,6 +4,7 @@ |
#include "modules/screen_orientation/ScreenOrientationControllerImpl.h" |
+#include "core/dom/Document.h" |
#include "core/events/Event.h" |
#include "core/frame/FrameHost.h" |
#include "core/frame/FrameView.h" |
@@ -39,7 +40,7 @@ ScreenOrientationControllerImpl* ScreenOrientationControllerImpl::from( |
ScreenOrientationControllerImpl::ScreenOrientationControllerImpl( |
LocalFrame& frame, |
WebScreenOrientationClient* client) |
- : DOMWindowProperty(&frame), |
+ : ContextLifecycleObserver(frame.document()), |
PlatformEventController(frame.page()), |
m_client(client), |
m_dispatchEventTimer( |
@@ -80,9 +81,13 @@ WebScreenOrientationType ScreenOrientationControllerImpl::computeOrientation( |
void ScreenOrientationControllerImpl::updateOrientation() { |
DCHECK(m_orientation); |
- DCHECK(frame()); |
- DCHECK(frame()->host()); |
+ if (!frame()) { |
+ m_orientation->setType(WebScreenOrientationPortraitPrimary); |
+ return; |
+ } |
+ |
+ DCHECK(frame()->host()); |
ChromeClient& chromeClient = frame()->host()->chromeClient(); |
WebScreenInfo screenInfo = chromeClient.screenInfo(); |
WebScreenOrientationType orientationType = screenInfo.orientationType; |
@@ -208,9 +213,9 @@ bool ScreenOrientationControllerImpl::hasLastData() { |
return true; |
} |
-void ScreenOrientationControllerImpl::frameDestroyed() { |
+void ScreenOrientationControllerImpl::contextDestroyed() { |
+ stopUpdating(); |
sof
2016/12/14 14:00:31
Seems like this is too strong a measure.
|
m_client = nullptr; |
- DOMWindowProperty::frameDestroyed(); |
m_activeLock = false; |
} |
@@ -223,7 +228,7 @@ void ScreenOrientationControllerImpl::notifyDispatcher() { |
DEFINE_TRACE(ScreenOrientationControllerImpl) { |
visitor->trace(m_orientation); |
- DOMWindowProperty::trace(visitor); |
+ ContextLifecycleObserver::trace(visitor); |
Supplement<LocalFrame>::trace(visitor); |
PlatformEventController::trace(visitor); |
} |