Chromium Code Reviews| 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 1efda9e2b976de93c0f7c4bc4f1ae178c8d5e812..da1e25274920e5162db0ffb354eee3ddd9c864a4 100644 |
| --- a/third_party/WebKit/Source/web/FullscreenController.cpp |
| +++ b/third_party/WebKit/Source/web/FullscreenController.cpp |
| @@ -54,6 +54,7 @@ PassOwnPtrWillBeRawPtr<FullscreenController> FullscreenController::create(WebVie |
| FullscreenController::FullscreenController(WebViewImpl* webViewImpl) |
| : m_webViewImpl(webViewImpl) |
| + , m_haveEnteredFullscreen(false) |
| , m_exitFullscreenPageScaleFactor(0) |
| , m_isCancelingFullScreen(false) |
| { |
| @@ -71,15 +72,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()); |
| @@ -118,13 +116,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); |
| @@ -150,6 +147,14 @@ void FullscreenController::enterFullScreenForElement(Element* element) |
| return; |
| } |
| + // We need to store these values here rather than didEnterFullScreen since by the time the latter |
|
scheib
2015/12/01 00:30:18
Comments might as well wrap to 80 chars. (optional
bokan
2015/12/01 20:46:10
Done.
|
| + // 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()) { |