| Index: third_party/WebKit/Source/web/FullscreenController.cpp
|
| diff --git a/third_party/WebKit/Source/web/FullscreenController.cpp b/third_party/WebKit/Source/web/FullscreenController.cpp
|
| index c48ff7694afb6ed595d112f7e1392d125b381b9f..0f0e556c6fe9e893d32bda887e08dc3c89aac45a 100644
|
| --- a/third_party/WebKit/Source/web/FullscreenController.cpp
|
| +++ b/third_party/WebKit/Source/web/FullscreenController.cpp
|
| @@ -53,6 +53,7 @@ PassOwnPtrWillBeRawPtr<FullscreenController> FullscreenController::create(WebVie
|
|
|
| FullscreenController::FullscreenController(WebViewImpl* webViewImpl)
|
| : m_webViewImpl(webViewImpl)
|
| + , m_haveEnteredFullscreen(false)
|
| , m_exitFullscreenPageScaleFactor(0)
|
| , m_isCancelingFullScreen(false)
|
| {
|
| @@ -70,15 +71,12 @@ void FullscreenController::didEnterFullScreen()
|
| if (!m_fullScreenFrame)
|
| return;
|
|
|
| - if (!m_exitFullscreenPageScaleFactor) {
|
| - m_exitFullscreenPageScaleFactor = m_webViewImpl->pageScaleFactor();
|
| - m_exitFullscreenScrollOffset = m_webViewImpl->mainFrame()->scrollOffset();
|
| - m_exitFullscreenVisualViewportOffset = m_webViewImpl->visualViewportOffset();
|
| -
|
| + if (!m_haveEnteredFullscreen) {
|
| updatePageScaleConstraints(false);
|
| m_webViewImpl->setPageScaleFactor(1.0f);
|
| m_webViewImpl->mainFrame()->setScrollOffset(WebSize());
|
| m_webViewImpl->setVisualViewportOffset(FloatPoint());
|
| + m_haveEnteredFullscreen = true;
|
| }
|
|
|
| Fullscreen::from(document).didEnterFullScreenForElement(element.get());
|
| @@ -117,13 +115,12 @@ void FullscreenController::didExitFullScreen()
|
| if (isHTMLVideoElement(element) && m_webViewImpl->layerTreeView())
|
| m_webViewImpl->layerTreeView()->setHasTransparentBackground(m_webViewImpl->isTransparent());
|
|
|
| - if (m_exitFullscreenPageScaleFactor) {
|
| + if (m_haveEnteredFullscreen) {
|
| updatePageScaleConstraints(true);
|
| m_webViewImpl->setPageScaleFactor(m_exitFullscreenPageScaleFactor);
|
| m_webViewImpl->mainFrame()->setScrollOffset(WebSize(m_exitFullscreenScrollOffset));
|
| m_webViewImpl->setVisualViewportOffset(m_exitFullscreenVisualViewportOffset);
|
| - m_exitFullscreenPageScaleFactor = 0;
|
| - m_exitFullscreenScrollOffset = IntSize();
|
| + m_haveEnteredFullscreen = false;
|
| }
|
|
|
| fullscreen->didExitFullScreenForElement(0);
|
| @@ -149,6 +146,15 @@ void FullscreenController::enterFullScreenForElement(Element* element)
|
| return;
|
| }
|
|
|
| + // We need to store these values here rather than didEnterFullScreen since
|
| + // by the time the latter is called, a Resize has already occured, clamping
|
| + // the scroll offset.
|
| + if (!m_haveEnteredFullscreen) {
|
| + m_exitFullscreenPageScaleFactor = m_webViewImpl->pageScaleFactor();
|
| + m_exitFullscreenScrollOffset = m_webViewImpl->mainFrame()->scrollOffset();
|
| + m_exitFullscreenVisualViewportOffset = m_webViewImpl->visualViewportOffset();
|
| + }
|
| +
|
| // We need to transition to fullscreen mode.
|
| WebLocalFrameImpl* frame = WebLocalFrameImpl::fromFrame(element->document().frame());
|
| if (frame && frame->client()) {
|
|
|