void FullscreenController::updateSize() { if (!isFullscreen()) return; updatePageScaleConstraints(false); LayoutFullScreen* layoutObject = Fullscreen::from(*m_fullScreenFrame->document()).fullScreenLayoutObject(); if (layoutObject) layoutObject->updateStyle(); }
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(); 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(); ASSERT(containingBlock); // Since we are moving the |object| to a new parent |fullscreenLayoutObject|, // the line box tree underneath our |containingBlock| is not longer valid. containingBlock->deleteLineBoxTree(); parent->addChild(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); } ASSERT(document); Fullscreen::from(*document).setFullScreenLayoutObject(fullscreenLayoutObject); return fullscreenLayoutObject; }