Chromium Code Reviews| Index: Source/core/dom/FullscreenController.cpp |
| diff --git a/Source/core/dom/FullscreenController.cpp b/Source/core/dom/FullscreenController.cpp |
| index ed63fee0ebdbed7462772c83def1e8e0e6305aec..d3baf9f4e42fd40b61067c60a4d5add42461396e 100644 |
| --- a/Source/core/dom/FullscreenController.cpp |
| +++ b/Source/core/dom/FullscreenController.cpp |
| @@ -39,7 +39,6 @@ |
| #include "core/page/Frame.h" |
| #include "core/page/Page.h" |
| #include "core/page/Settings.h" |
| -#include "core/rendering/RenderFullScreen.h" |
| namespace WebCore { |
| @@ -101,7 +100,6 @@ bool FullscreenController::isFullScreen(Document* document) |
| FullscreenController::FullscreenController(Document* document) |
| : DocumentLifecycleObserver(document) |
| , m_areKeysEnabledInFullScreen(false) |
| - , m_fullScreenRenderer(0) |
| , m_fullScreenChangeDelayTimer(this, &FullscreenController::fullScreenChangeDelayTimerFired) |
| { |
| document->setHasFullscreenController(); |
| @@ -120,9 +118,6 @@ void FullscreenController::documentWasDetached() |
| { |
| m_fullScreenChangeEventTargetQueue.clear(); |
| m_fullScreenErrorEventTargetQueue.clear(); |
| - |
| - if (m_fullScreenRenderer) |
| - setFullScreenRenderer(0); |
| } |
| void FullscreenController::documentWasDisposed() |
| @@ -361,34 +356,15 @@ void FullscreenController::webkitWillEnterFullScreenForElement(Element* element) |
| return; |
| ASSERT(document()->page()->settings()->fullScreenEnabled()); |
| - |
| - if (m_fullScreenRenderer) |
| - m_fullScreenRenderer->unwrapRenderer(); |
| - |
| m_fullScreenElement = element; |
| + document()->addToTopLayer(element); |
| #if USE(NATIVE_FULLSCREEN_VIDEO) |
| if (element && element->isMediaElement()) |
| return; |
| #endif |
| - // Create a placeholder block for a the full-screen element, to keep the page from reflowing |
| - // when the element is removed from the normal flow. Only do this for a RenderBox, as only |
| - // a box will have a frameRect. The placeholder will be created in setFullScreenRenderer() |
| - // during layout. |
| - RenderObject* renderer = m_fullScreenElement->renderer(); |
| - bool shouldCreatePlaceholder = renderer && renderer->isBox(); |
| - if (shouldCreatePlaceholder) { |
| - m_savedPlaceholderFrameRect = toRenderBox(renderer)->frameRect(); |
| - m_savedPlaceholderRenderStyle = RenderStyle::clone(renderer->style()); |
| - } |
|
trchen
2013/07/18 22:26:29
I'm not sure how Document::addToTopLayer() works,
falken
2013/07/22 17:51:44
Yes, I think so. I thought we should remove it sin
|
| - |
| - if (m_fullScreenElement != document()->documentElement()) |
| - RenderFullScreen::wrapRenderer(renderer, renderer ? renderer->parent() : 0, document()); |
| - |
| m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(true); |
| - |
| - document()->recalcStyle(Node::Force); |
|
falken
2013/07/09 12:50:22
I think this recalcStyle was a quirk needed for Re
|
| } |
| void FullscreenController::webkitDidEnterFullScreenForElement(Element*) |
| @@ -412,6 +388,7 @@ void FullscreenController::webkitWillExitFullScreenForElement(Element*) |
| if (!document()->attached()) |
| return; |
| + document()->removeFromTopLayer(m_fullScreenElement.get()); |
| m_fullScreenElement->willStopBeingFullscreenElement(); |
| } |
| @@ -424,12 +401,8 @@ void FullscreenController::webkitDidExitFullScreenForElement(Element*) |
| return; |
| m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(false); |
| - |
| m_areKeysEnabledInFullScreen = false; |
| - if (m_fullScreenRenderer) |
| - m_fullScreenRenderer->unwrapRenderer(); |
| - |
| m_fullScreenElement = 0; |
| document()->scheduleForcedStyleRecalc(); |
| @@ -442,30 +415,6 @@ void FullscreenController::webkitDidExitFullScreenForElement(Element*) |
| from(exitingDocument)->m_fullScreenChangeDelayTimer.startOneShot(0); |
| } |
| -void FullscreenController::setFullScreenRenderer(RenderFullScreen* renderer) |
| -{ |
| - if (renderer == m_fullScreenRenderer) |
| - return; |
| - |
| - if (renderer && m_savedPlaceholderRenderStyle) { |
| - renderer->createPlaceholder(m_savedPlaceholderRenderStyle.release(), m_savedPlaceholderFrameRect); |
| - } else if (renderer && m_fullScreenRenderer && m_fullScreenRenderer->placeholder()) { |
| - RenderBlock* placeholder = m_fullScreenRenderer->placeholder(); |
| - renderer->createPlaceholder(RenderStyle::clone(placeholder->style()), placeholder->frameRect()); |
| - } |
| - |
| - if (m_fullScreenRenderer) |
| - m_fullScreenRenderer->destroy(); |
| - ASSERT(!m_fullScreenRenderer); |
| - |
| - m_fullScreenRenderer = renderer; |
| -} |
| - |
| -void FullscreenController::fullScreenRendererDestroyed() |
| -{ |
| - m_fullScreenRenderer = 0; |
| -} |
| - |
| void FullscreenController::fullScreenChangeDelayTimerFired(Timer<FullscreenController>*) |
| { |
| // Since we dispatch events in this function, it's possible that the |
| @@ -541,11 +490,13 @@ void FullscreenController::popFullscreenElementStack() |
| if (m_fullScreenElementStack.isEmpty()) |
| return; |
| + document()->removeFromTopLayer(m_fullScreenElementStack.last().get()); |
| m_fullScreenElementStack.removeLast(); |
| } |
| void FullscreenController::pushFullscreenElementStack(Element* element) |
| { |
| + document()->addToTopLayer(element); |
| m_fullScreenElementStack.append(element); |
| } |