Index: third_party/WebKit/Source/core/layout/LayoutFullScreen.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutFullScreen.cpp b/third_party/WebKit/Source/core/layout/LayoutFullScreen.cpp |
deleted file mode 100644 |
index 20b7d5c3750fa80ec8c39aa0b9416e2620f9ca71..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/Source/core/layout/LayoutFullScreen.cpp |
+++ /dev/null |
@@ -1,221 +0,0 @@ |
-/* |
- * Copyright (C) 2010 Apple Inc. All rights reserved. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions |
- * are met: |
- * 1. Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * 2. Redistributions in binary form must reproduce the above copyright |
- * notice, this list of conditions and the following disclaimer in the |
- * documentation and/or other materials provided with the distribution. |
- * |
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND |
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
- * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE |
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |
- * DAMAGE. |
- */ |
- |
-#include "core/layout/LayoutFullScreen.h" |
- |
-#include "core/dom/Fullscreen.h" |
-#include "core/frame/FrameHost.h" |
-#include "core/frame/VisualViewport.h" |
-#include "core/layout/LayoutBlockFlow.h" |
-#include "core/page/Page.h" |
- |
-#include "public/platform/WebScreenInfo.h" |
- |
-using namespace blink; |
- |
-class LayoutFullScreenPlaceholder final : public LayoutBlockFlow { |
- public: |
- LayoutFullScreenPlaceholder(LayoutFullScreen* owner) |
- : LayoutBlockFlow(nullptr), m_owner(owner) { |
- setDocumentForAnonymous(&owner->document()); |
- } |
- |
- // Must call setStyleWithWritingModeOfParent() instead. |
- void setStyle(PassRefPtr<ComputedStyle>) = delete; |
- |
- private: |
- bool isOfType(LayoutObjectType type) const override { |
- return type == LayoutObjectLayoutFullScreenPlaceholder || |
- LayoutBlockFlow::isOfType(type); |
- } |
- bool anonymousHasStylePropagationOverride() override { return true; } |
- |
- void willBeDestroyed() override; |
- LayoutFullScreen* m_owner; |
-}; |
- |
-void LayoutFullScreenPlaceholder::willBeDestroyed() { |
- m_owner->resetPlaceholder(); |
- LayoutBlockFlow::willBeDestroyed(); |
-} |
- |
-LayoutFullScreen::LayoutFullScreen() |
- : LayoutFlexibleBox(nullptr), m_placeholder(nullptr) { |
- setIsAtomicInlineLevel(false); |
-} |
- |
-LayoutFullScreen* LayoutFullScreen::createAnonymous(Document* document) { |
- LayoutFullScreen* layoutObject = new LayoutFullScreen(); |
- layoutObject->setDocumentForAnonymous(document); |
- return layoutObject; |
-} |
- |
-void LayoutFullScreen::willBeDestroyed() { |
- if (m_placeholder) { |
- remove(); |
- if (!m_placeholder->beingDestroyed()) |
- m_placeholder->destroy(); |
- DCHECK(!m_placeholder); |
- } |
- |
- // LayoutObjects are unretained, so notify the document (which holds a pointer |
- // to a LayoutFullScreen) if its LayoutFullScreen is destroyed. |
- Fullscreen& fullscreen = Fullscreen::from(document()); |
- if (fullscreen.fullScreenLayoutObject() == this) |
- fullscreen.fullScreenLayoutObjectDestroyed(); |
- |
- LayoutFlexibleBox::willBeDestroyed(); |
-} |
- |
-void LayoutFullScreen::updateStyle(LayoutObject* parent) { |
- RefPtr<ComputedStyle> fullscreenStyle = ComputedStyle::create(); |
- |
- // Create a stacking context: |
- fullscreenStyle->setZIndex(INT_MAX); |
- fullscreenStyle->setIsStackingContext(true); |
- |
- fullscreenStyle->setFontDescription(FontDescription()); |
- fullscreenStyle->font().update(nullptr); |
- |
- fullscreenStyle->setDisplay(EDisplay::Flex); |
- fullscreenStyle->setJustifyContentPosition(ContentPositionCenter); |
- // TODO (lajava): Since the FullScrenn layout object is anonymous, its Default |
- // Alignment (align-items) value can't be used to resolve its children Self |
- // Alignment 'auto' values. |
- fullscreenStyle->setAlignItemsPosition(ItemPositionCenter); |
- fullscreenStyle->setFlexDirection(FlowColumn); |
- |
- fullscreenStyle->setPosition(FixedPosition); |
- fullscreenStyle->setLeft(Length(0, blink::Fixed)); |
- fullscreenStyle->setTop(Length(0, blink::Fixed)); |
- IntSize viewportSize = document().page()->frameHost().visualViewport().size(); |
- fullscreenStyle->setWidth(Length(viewportSize.width(), blink::Fixed)); |
- fullscreenStyle->setHeight(Length(viewportSize.height(), blink::Fixed)); |
- |
- fullscreenStyle->setBackgroundColor(StyleColor(Color::black)); |
- |
- setStyleWithWritingModeOf(fullscreenStyle, parent); |
-} |
- |
-void LayoutFullScreen::updateStyle() { |
- updateStyle(parent()); |
-} |
- |
-LayoutObject* LayoutFullScreen::wrapLayoutObject(LayoutObject* object, |
- LayoutObject* parent, |
- Document* document) { |
- // FIXME: We should not modify the structure of the layout tree during |
- // layout. crbug.com/370459 |
- DeprecatedDisableModifyLayoutTreeStructureAsserts disabler; |
- |
- LayoutFullScreen* fullscreenLayoutObject = |
- LayoutFullScreen::createAnonymous(document); |
- fullscreenLayoutObject->updateStyle(parent); |
- if (parent && |
- !parent->isChildAllowed(fullscreenLayoutObject, |
- fullscreenLayoutObject->styleRef())) { |
- fullscreenLayoutObject->destroy(); |
- return nullptr; |
- } |
- if (object) { |
- // |object->parent()| can be null if the object is not yet attached |
- // to |parent|. |
- if (LayoutObject* parent = object->parent()) { |
- LayoutBlock* containingBlock = object->containingBlock(); |
- DCHECK(containingBlock); |
- // Since we are moving the |object| to a new parent |
- // |fullscreenLayoutObject|, the line box tree underneath our |
- // |containingBlock| is not longer valid. |
- if (containingBlock->isLayoutBlockFlow()) |
- toLayoutBlockFlow(containingBlock)->deleteLineBoxTree(); |
- |
- parent->addChildWithWritingModeOfParent(fullscreenLayoutObject, object); |
- object->remove(); |
- |
- // Always just do a full layout to ensure that line boxes get deleted |
- // properly. |
- // Because objects moved from |parent| to |fullscreenLayoutObject|, we |
- // want to make new line boxes instead of leaving the old ones around. |
- parent->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( |
- LayoutInvalidationReason::Fullscreen); |
- containingBlock |
- ->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( |
- LayoutInvalidationReason::Fullscreen); |
- } |
- fullscreenLayoutObject->addChild(object); |
- fullscreenLayoutObject |
- ->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( |
- LayoutInvalidationReason::Fullscreen); |
- } |
- |
- DCHECK(document); |
- Fullscreen::from(*document).setFullScreenLayoutObject(fullscreenLayoutObject); |
- return fullscreenLayoutObject; |
-} |
- |
-void LayoutFullScreen::unwrapLayoutObject() { |
- // FIXME: We should not modify the structure of the layout tree during |
- // layout. crbug.com/370459 |
- DeprecatedDisableModifyLayoutTreeStructureAsserts disabler; |
- |
- if (parent()) { |
- for (LayoutObject* child = firstChild(); child; child = firstChild()) { |
- // We have to clear the override size, because as a flexbox, we |
- // may have set one on the child, and we don't want to leave that |
- // lying around on the child. |
- if (child->isBox()) |
- toLayoutBox(child)->clearOverrideSize(); |
- child->remove(); |
- parent()->addChild(child, this); |
- parent()->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( |
- LayoutInvalidationReason::Fullscreen); |
- } |
- } |
- if (placeholder()) |
- placeholder()->remove(); |
- remove(); |
- destroy(); |
-} |
- |
-void LayoutFullScreen::createPlaceholder(PassRefPtr<ComputedStyle> style, |
- const LayoutRect& frameRect) { |
- if (style->width().isAuto()) |
- style->setWidth(Length(frameRect.width(), Fixed)); |
- if (style->height().isAuto()) |
- style->setHeight(Length(frameRect.height(), Fixed)); |
- |
- if (!m_placeholder) { |
- m_placeholder = new LayoutFullScreenPlaceholder(this); |
- m_placeholder->setStyleWithWritingModeOfParent(std::move(style)); |
- if (parent()) { |
- parent()->addChildWithWritingModeOfParent(m_placeholder, this); |
- parent()->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( |
- LayoutInvalidationReason::Fullscreen); |
- } |
- } else { |
- m_placeholder->setStyle(std::move(style)); |
- m_placeholder->setStyleWithWritingModeOfParent(std::move(style)); |
- } |
-} |