| 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 952896bfa32f180512db68006f5543911c4c4a9a..c08685becc826bbd52322fc8cfd845c57b1380b5 100644
|
| --- a/third_party/WebKit/Source/web/FullscreenController.cpp
|
| +++ b/third_party/WebKit/Source/web/FullscreenController.cpp
|
| @@ -55,6 +55,7 @@ FullscreenController::FullscreenController(WebViewImpl* webViewImpl)
|
| : m_webViewImpl(webViewImpl)
|
| , m_haveEnteredFullscreen(false)
|
| , m_exitFullscreenPageScaleFactor(0)
|
| + , m_fullscreenIsForCrossProcessAncestor(false)
|
| , m_isCancelingFullScreen(false)
|
| {
|
| }
|
| @@ -74,12 +75,13 @@ void FullscreenController::didEnterFullScreen()
|
| if (!m_haveEnteredFullscreen) {
|
| updatePageScaleConstraints(false);
|
| m_webViewImpl->setPageScaleFactor(1.0f);
|
| - m_webViewImpl->mainFrame()->setScrollOffset(WebSize());
|
| + if (m_webViewImpl->mainFrame()->isWebLocalFrame())
|
| + m_webViewImpl->mainFrame()->setScrollOffset(WebSize());
|
| m_webViewImpl->setVisualViewportOffset(FloatPoint());
|
| m_haveEnteredFullscreen = true;
|
| }
|
|
|
| - Fullscreen::from(document).didEnterFullScreenForElement(element);
|
| + Fullscreen::from(document).didEnterFullScreenForElement(element, m_fullscreenIsForCrossProcessAncestor);
|
| DCHECK_EQ(Fullscreen::currentFullScreenElementFrom(document), element);
|
|
|
| if (isHTMLVideoElement(element)) {
|
| @@ -111,12 +113,14 @@ void FullscreenController::didExitFullScreen()
|
| if (m_haveEnteredFullscreen) {
|
| updatePageScaleConstraints(true);
|
| m_webViewImpl->setPageScaleFactor(m_exitFullscreenPageScaleFactor);
|
| - m_webViewImpl->mainFrame()->setScrollOffset(WebSize(m_exitFullscreenScrollOffset));
|
| + if (m_webViewImpl->mainFrame()->isWebLocalFrame())
|
| + m_webViewImpl->mainFrame()->setScrollOffset(WebSize(m_exitFullscreenScrollOffset));
|
| m_webViewImpl->setVisualViewportOffset(m_exitFullscreenVisualViewportOffset);
|
| m_haveEnteredFullscreen = false;
|
| }
|
|
|
| - fullscreen->didExitFullScreenForElement(0);
|
| + fullscreen->didExitFullScreenForElement(m_fullscreenIsForCrossProcessAncestor);
|
| + m_fullscreenIsForCrossProcessAncestor = false;
|
| }
|
| }
|
| }
|
| @@ -144,14 +148,15 @@ void FullscreenController::enterFullScreenForElement(Element* element)
|
| // the scroll offset.
|
| if (!m_haveEnteredFullscreen) {
|
| m_exitFullscreenPageScaleFactor = m_webViewImpl->pageScaleFactor();
|
| - m_exitFullscreenScrollOffset = m_webViewImpl->mainFrame()->scrollOffset();
|
| + m_exitFullscreenScrollOffset = m_webViewImpl->mainFrame()->isWebLocalFrame() ? m_webViewImpl->mainFrame()->scrollOffset() : WebSize();
|
| m_exitFullscreenVisualViewportOffset = m_webViewImpl->visualViewportOffset();
|
| }
|
|
|
| // We need to transition to fullscreen mode.
|
| WebLocalFrameImpl* frame = WebLocalFrameImpl::fromFrame(element->document().frame());
|
| if (frame && frame->client()) {
|
| - frame->client()->enterFullscreen();
|
| + if (!m_fullscreenIsForCrossProcessAncestor)
|
| + frame->client()->enterFullscreen();
|
| m_provisionalFullScreenElement = element;
|
| }
|
| }
|
|
|