| Index: third_party/WebKit/Source/core/paint/PaintLayer.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.cpp b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
|
| index beb5ed0b414ec45f52556a88643f2be2dc7d8991..ec9a1f44e5a2daeadd5c3321c54722094c5db494 100644
|
| --- a/third_party/WebKit/Source/core/paint/PaintLayer.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
|
| @@ -127,10 +127,10 @@ PaintLayerRareData::PaintLayerRareData()
|
|
|
| PaintLayerRareData::~PaintLayerRareData() {}
|
|
|
| -PaintLayer::PaintLayer(LayoutBoxModelObject* layoutObject)
|
| +PaintLayer::PaintLayer(LayoutBoxModelObject& layoutObject)
|
| : m_hasSelfPaintingLayerDescendant(false),
|
| m_hasSelfPaintingLayerDescendantDirty(false),
|
| - m_isRootLayer(layoutObject->isLayoutView()),
|
| + m_isRootLayer(layoutObject.isLayoutView()),
|
| m_hasVisibleContent(false),
|
| m_needsDescendantDependentFlagsUpdate(true),
|
| m_hasVisibleDescendant(false),
|
| @@ -176,7 +176,7 @@ PaintLayer::PaintLayer(LayoutBoxModelObject* layoutObject)
|
|
|
| PaintLayer::~PaintLayer() {
|
| if (m_rareData && m_rareData->resourceInfo) {
|
| - const ComputedStyle& style = layoutObject()->styleRef();
|
| + const ComputedStyle& style = layoutObject().styleRef();
|
| if (style.hasFilter())
|
| style.filter().removeClient(m_rareData->resourceInfo);
|
| if (isReferenceClipPath(style.clipPath())) {
|
| @@ -185,9 +185,9 @@ PaintLayer::~PaintLayer() {
|
| }
|
| m_rareData->resourceInfo->clearLayer();
|
| }
|
| - if (layoutObject()->frame() && layoutObject()->frame()->page()) {
|
| + if (layoutObject().frame() && layoutObject().frame()->page()) {
|
| if (ScrollingCoordinator* scrollingCoordinator =
|
| - layoutObject()->frame()->page()->scrollingCoordinator())
|
| + layoutObject().frame()->page()->scrollingCoordinator())
|
| scrollingCoordinator->willDestroyLayer(this);
|
| }
|
|
|
| @@ -206,17 +206,17 @@ PaintLayer::~PaintLayer() {
|
| }
|
|
|
| String PaintLayer::debugName() const {
|
| - return layoutObject()->debugName();
|
| + return layoutObject().debugName();
|
| }
|
|
|
| LayoutRect PaintLayer::visualRect() const {
|
| - return m_layoutObject->visualRect();
|
| + return m_layoutObject.visualRect();
|
| }
|
|
|
| PaintLayerCompositor* PaintLayer::compositor() const {
|
| - if (!layoutObject()->view())
|
| + if (!layoutObject().view())
|
| return 0;
|
| - return layoutObject()->view()->compositor();
|
| + return layoutObject().view()->compositor();
|
| }
|
|
|
| void PaintLayer::contentChanged(ContentChangeType changeType) {
|
| @@ -248,7 +248,7 @@ void PaintLayer::contentChanged(ContentChangeType changeType) {
|
| }
|
|
|
| bool PaintLayer::paintsWithFilters() const {
|
| - if (!layoutObject()->hasFilterInducingProperty())
|
| + if (!layoutObject().hasFilterInducingProperty())
|
| return false;
|
|
|
| // https://code.google.com/p/chromium/issues/detail?id=343759
|
| @@ -258,7 +258,7 @@ bool PaintLayer::paintsWithFilters() const {
|
| }
|
|
|
| bool PaintLayer::paintsWithBackdropFilters() const {
|
| - if (!layoutObject()->hasBackdropFilter())
|
| + if (!layoutObject().hasBackdropFilter())
|
| return false;
|
|
|
| // https://code.google.com/p/chromium/issues/detail?id=343759
|
| @@ -330,17 +330,17 @@ void PaintLayer::dirtyAncestorChainHasSelfPaintingLayerDescendantStatus() {
|
| }
|
|
|
| bool PaintLayer::sticksToViewport() const {
|
| - if (layoutObject()->style()->position() != EPosition::kFixed &&
|
| - layoutObject()->style()->position() != EPosition::kSticky)
|
| + if (layoutObject().style()->position() != EPosition::kFixed &&
|
| + layoutObject().style()->position() != EPosition::kSticky)
|
| return false;
|
|
|
| // TODO(pdr): This approach of calculating the nearest scroll node is O(n).
|
| // An option for improving this is to cache the nearest scroll node in
|
| // the local border box properties.
|
| if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
|
| - const auto* viewProperties = layoutObject()->view()->paintProperties();
|
| + const auto* viewProperties = layoutObject().view()->paintProperties();
|
| const ScrollPaintPropertyNode* ancestorTargetScrollNode;
|
| - if (layoutObject()->style()->position() == EPosition::kFixed) {
|
| + if (layoutObject().style()->position() == EPosition::kFixed) {
|
| ancestorTargetScrollNode = viewProperties->localBorderBoxProperties()
|
| ->transform()
|
| ->findEnclosingScrollNode();
|
| @@ -350,15 +350,15 @@ bool PaintLayer::sticksToViewport() const {
|
| ->findEnclosingScrollNode();
|
| }
|
|
|
| - const auto* properties = layoutObject()->paintProperties();
|
| + const auto* properties = layoutObject().paintProperties();
|
| const auto* transform = properties->localBorderBoxProperties()->transform();
|
| return transform->findEnclosingScrollNode() == ancestorTargetScrollNode;
|
| }
|
|
|
| - return (layoutObject()->style()->position() == EPosition::kFixed &&
|
| - layoutObject()->containerForFixedPosition() ==
|
| - layoutObject()->view()) ||
|
| - (layoutObject()->style()->position() == EPosition::kSticky &&
|
| + return (layoutObject().style()->position() == EPosition::kFixed &&
|
| + layoutObject().containerForFixedPosition() ==
|
| + layoutObject().view()) ||
|
| + (layoutObject().style()->position() == EPosition::kSticky &&
|
| (!ancestorScrollingLayer() || ancestorScrollingLayer() == root()));
|
| }
|
|
|
| @@ -395,7 +395,7 @@ void PaintLayer::updateTransform(const ComputedStyle* oldStyle,
|
| // hasTransform() on the layoutObject is also true when there is
|
| // transform-style: preserve-3d or perspective set, so check style too.
|
| bool hasTransform =
|
| - layoutObject()->hasTransformRelatedProperty() && newStyle.hasTransform();
|
| + layoutObject().hasTransformRelatedProperty() && newStyle.hasTransform();
|
| bool had3DTransform = has3DTransform();
|
|
|
| bool hadTransform = transform();
|
| @@ -419,12 +419,12 @@ void PaintLayer::updateTransform(const ComputedStyle* oldStyle,
|
| if (had3DTransform != has3DTransform())
|
| markAncestorChainForDescendantDependentFlagsUpdate();
|
|
|
| - if (FrameView* frameView = layoutObject()->document().view())
|
| + if (FrameView* frameView = layoutObject().document().view())
|
| frameView->setNeedsUpdateWidgetGeometries();
|
| }
|
|
|
| static PaintLayer* enclosingLayerForContainingBlock(PaintLayer* layer) {
|
| - if (LayoutObject* containingBlock = layer->layoutObject()->containingBlock())
|
| + if (LayoutObject* containingBlock = layer->layoutObject().containingBlock())
|
| return containingBlock->enclosingLayer();
|
| return 0;
|
| }
|
| @@ -432,7 +432,7 @@ static PaintLayer* enclosingLayerForContainingBlock(PaintLayer* layer) {
|
| static const PaintLayer* enclosingLayerForContainingBlock(
|
| const PaintLayer* layer) {
|
| if (const LayoutObject* containingBlock =
|
| - layer->layoutObject()->containingBlock())
|
| + layer->layoutObject().containingBlock())
|
| return containingBlock->enclosingLayer();
|
| return 0;
|
| }
|
| @@ -491,7 +491,7 @@ void PaintLayer::convertFromFlowThreadToVisualBoundingBoxInAncestor(
|
| LayoutRect& rect) const {
|
| PaintLayer* paginationLayer = enclosingPaginationLayer();
|
| DCHECK(paginationLayer);
|
| - LayoutFlowThread* flowThread =
|
| + LayoutFlowThread& flowThread =
|
| toLayoutFlowThread(paginationLayer->layoutObject());
|
|
|
| // First make the flow thread rectangle relative to the flow thread, not to
|
| @@ -503,7 +503,7 @@ void PaintLayer::convertFromFlowThreadToVisualBoundingBoxInAncestor(
|
| // Then make the rectangle visual, relative to the fragmentation context.
|
| // Split our box up into the actual fragment boxes that layout in the
|
| // columns/pages and unite those together to get our true bounding box.
|
| - rect = flowThread->fragmentsBoundingBox(rect);
|
| + rect = flowThread.fragmentsBoundingBox(rect);
|
|
|
| // Finally, make the visual rectangle relative to |ancestorLayer|.
|
| if (ancestorLayer->enclosingPaginationLayer() != paginationLayer) {
|
| @@ -520,7 +520,7 @@ void PaintLayer::updatePaginationRecursive(bool needsPaginationUpdate) {
|
| if (m_rareData)
|
| m_rareData->enclosingPaginationLayer = nullptr;
|
|
|
| - if (layoutObject()->isLayoutFlowThread())
|
| + if (layoutObject().isLayoutFlowThread())
|
| needsPaginationUpdate = true;
|
|
|
| if (needsPaginationUpdate) {
|
| @@ -531,7 +531,7 @@ void PaintLayer::updatePaginationRecursive(bool needsPaginationUpdate) {
|
| // enclosingPaginationLayer instead of using a simple bit, since we want to
|
| // be able to get back to that layer easily.
|
| if (LayoutFlowThread* containingFlowThread =
|
| - layoutObject()->flowThreadContainingBlock())
|
| + layoutObject().flowThreadContainingBlock())
|
| ensureRareData().enclosingPaginationLayer = containingFlowThread->layer();
|
| }
|
|
|
| @@ -549,19 +549,22 @@ void PaintLayer::clearPaginationRecursive() {
|
| void PaintLayer::mapPointInPaintInvalidationContainerToBacking(
|
| const LayoutBoxModelObject& paintInvalidationContainer,
|
| FloatPoint& point) {
|
| + // TODO(chrishtr): this should be
|
| + // PaintLayer* transformedAncestorPaintLayer =
|
| + // paintInvalidationLayer->enclosingTransformedAncestor();
|
| + // if (!transformedAncestorPaintLayer)
|
| + // return;
|
| PaintLayer* paintInvalidationLayer = paintInvalidationContainer.layer();
|
| if (!paintInvalidationLayer->groupedMapping())
|
| return;
|
|
|
| - LayoutBoxModelObject* transformedAncestor =
|
| + LayoutBoxModelObject& transformedAncestor =
|
| paintInvalidationLayer->enclosingTransformedAncestor()->layoutObject();
|
| - if (!transformedAncestor)
|
| - return;
|
|
|
| // |paintInvalidationContainer| may have a local 2D transform on it, so take
|
| // that into account when mapping into the space of the transformed ancestor.
|
| point = paintInvalidationContainer.localToAncestorPoint(point,
|
| - transformedAncestor);
|
| + &transformedAncestor);
|
|
|
| point.moveBy(-paintInvalidationLayer->groupedMapping()
|
| ->squashingOffsetFromTransformedAncestor());
|
| @@ -570,20 +573,23 @@ void PaintLayer::mapPointInPaintInvalidationContainerToBacking(
|
| void PaintLayer::mapRectInPaintInvalidationContainerToBacking(
|
| const LayoutBoxModelObject& paintInvalidationContainer,
|
| LayoutRect& rect) {
|
| + // TODO(chrishtr): this should be
|
| + // PaintLayer* transformedAncestorPaintLayer =
|
| + // paintInvalidationLayer->enclosingTransformedAncestor();
|
| + // if (!transformedAncestorPaintLayer)
|
| + // return;
|
| PaintLayer* paintInvalidationLayer = paintInvalidationContainer.layer();
|
| if (!paintInvalidationLayer->groupedMapping())
|
| return;
|
|
|
| - LayoutBoxModelObject* transformedAncestor =
|
| + LayoutBoxModelObject& transformedAncestor =
|
| paintInvalidationLayer->enclosingTransformedAncestor()->layoutObject();
|
| - if (!transformedAncestor)
|
| - return;
|
|
|
| // |paintInvalidationContainer| may have a local 2D transform on it, so take
|
| // that into account when mapping into the space of the transformed ancestor.
|
| rect =
|
| LayoutRect(paintInvalidationContainer
|
| - .localToAncestorQuad(FloatRect(rect), transformedAncestor)
|
| + .localToAncestorQuad(FloatRect(rect), &transformedAncestor)
|
| .boundingBox());
|
|
|
| rect.moveBy(-paintInvalidationLayer->groupedMapping()
|
| @@ -629,7 +635,7 @@ void PaintLayer::markAncestorChainForDescendantDependentFlagsUpdate() {
|
| layer->m_needsDescendantDependentFlagsUpdate = true;
|
|
|
| if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled())
|
| - layer->layoutObject()->setNeedsPaintPropertyUpdate();
|
| + layer->layoutObject().setNeedsPaintPropertyUpdate();
|
| }
|
| }
|
|
|
| @@ -640,7 +646,7 @@ void PaintLayer::updateScrollingStateAfterCompositingChange() {
|
| TRACE_EVENT0("blink",
|
| "PaintLayer::updateScrollingStateAfterCompositingChange");
|
| m_isAllScrollingContentComposited = true;
|
| - for (LayoutObject* r = layoutObject()->slowFirstChild(); r;
|
| + for (LayoutObject* r = layoutObject().slowFirstChild(); r;
|
| r = r->nextSibling()) {
|
| if (!r->hasLayer()) {
|
| m_isAllScrollingContentComposited = false;
|
| @@ -680,15 +686,15 @@ void PaintLayer::updateDescendantDependentFlags() {
|
| m_hasNonIsolatedDescendantWithBlendMode |=
|
| (!child->stackingNode()->isStackingContext() &&
|
| child->hasNonIsolatedDescendantWithBlendMode()) ||
|
| - child->layoutObject()->styleRef().hasBlendMode();
|
| + child->layoutObject().styleRef().hasBlendMode();
|
|
|
| m_hasDescendantWithClipPath |= child->hasDescendantWithClipPath() ||
|
| - child->layoutObject()->hasClipPath();
|
| + child->layoutObject().hasClipPath();
|
|
|
| m_hasRootScrollerAsDescendant |= child->hasRootScrollerAsDescendant() ||
|
| (child ==
|
| child->layoutObject()
|
| - ->document()
|
| + .document()
|
| .rootScrollerController()
|
| .rootScrollerPaintLayer());
|
| }
|
| @@ -696,17 +702,17 @@ void PaintLayer::updateDescendantDependentFlags() {
|
| if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled() &&
|
| oldHasNonIsolatedDescendantWithBlendMode !=
|
| static_cast<bool>(m_hasNonIsolatedDescendantWithBlendMode))
|
| - layoutObject()->setNeedsPaintPropertyUpdate();
|
| + layoutObject().setNeedsPaintPropertyUpdate();
|
| m_needsDescendantDependentFlagsUpdate = false;
|
| }
|
|
|
| bool previouslyHasVisibleContent = m_hasVisibleContent;
|
| - if (layoutObject()->style()->visibility() == EVisibility::kVisible) {
|
| + if (layoutObject().style()->visibility() == EVisibility::kVisible) {
|
| m_hasVisibleContent = true;
|
| } else {
|
| // layer may be hidden but still have some visible content, check for this
|
| m_hasVisibleContent = false;
|
| - LayoutObject* r = layoutObject()->slowFirstChild();
|
| + LayoutObject* r = layoutObject().slowFirstChild();
|
| while (r) {
|
| if (r->style()->visibility() == EVisibility::kVisible &&
|
| (!r->hasLayer() || !r->enclosingLayer()->isSelfPaintingLayer())) {
|
| @@ -722,7 +728,7 @@ void PaintLayer::updateDescendantDependentFlags() {
|
| } else {
|
| do {
|
| r = r->parent();
|
| - if (r == layoutObject())
|
| + if (r == &layoutObject())
|
| r = 0;
|
| } while (r && !r->nextSibling());
|
| if (r)
|
| @@ -737,7 +743,7 @@ void PaintLayer::updateDescendantDependentFlags() {
|
| // pretend that invisible LayoutObjects have 0x0 rects. Changing
|
| // visibility therefore changes our rect and we need to visit
|
| // this LayoutObject during the invalidateTreeIfNeeded walk.
|
| - m_layoutObject->setMayNeedPaintInvalidation();
|
| + m_layoutObject.setMayNeedPaintInvalidation();
|
| }
|
|
|
| update3DTransformedDescendantStatus();
|
| @@ -774,9 +780,9 @@ void PaintLayer::updateLayerPosition() {
|
| LayoutPoint localPoint;
|
|
|
| bool didResize = false;
|
| - if (layoutObject()->isInline() && layoutObject()->isLayoutInline()) {
|
| - LayoutInline* inlineFlow = toLayoutInline(layoutObject());
|
| - IntRect lineBox = enclosingIntRect(inlineFlow->linesBoundingBox());
|
| + if (layoutObject().isInline() && layoutObject().isLayoutInline()) {
|
| + LayoutInline& inlineFlow = toLayoutInline(layoutObject());
|
| + IntRect lineBox = enclosingIntRect(inlineFlow.linesBoundingBox());
|
| m_size = lineBox.size();
|
| } else if (LayoutBox* box = layoutBox()) {
|
| IntSize newSize = pixelSnappedIntSize(box->size(), box->location());
|
| @@ -785,11 +791,11 @@ void PaintLayer::updateLayerPosition() {
|
| localPoint.moveBy(box->physicalLocation());
|
| }
|
|
|
| - if (!layoutObject()->isOutOfFlowPositioned() &&
|
| - !layoutObject()->isColumnSpanAll()) {
|
| + if (!layoutObject().isOutOfFlowPositioned() &&
|
| + !layoutObject().isColumnSpanAll()) {
|
| // We must adjust our position by walking up the layout tree looking for the
|
| // nearest enclosing object with a layer.
|
| - LayoutObject* curr = layoutObject()->container();
|
| + LayoutObject* curr = layoutObject().container();
|
| while (curr && !curr->hasLayer()) {
|
| if (curr->isBox() && !curr->isTableRow()) {
|
| // Rows and cells share the same coordinate space (that of the section).
|
| @@ -805,23 +811,23 @@ void PaintLayer::updateLayerPosition() {
|
| }
|
|
|
| if (PaintLayer* containingLayer = this->containingLayer()) {
|
| - if (containingLayer->layoutObject()->hasOverflowClip()) {
|
| + if (containingLayer->layoutObject().hasOverflowClip()) {
|
| // Subtract our container's scroll offset.
|
| IntSize offset = containingLayer->layoutBox()->scrolledContentOffset();
|
| localPoint -= offset;
|
| - } else if (layoutObject()->isAbsolutePositioned() &&
|
| - containingLayer->layoutObject()->isInFlowPositioned() &&
|
| - containingLayer->layoutObject()->isLayoutInline()) {
|
| + } else if (layoutObject().isAbsolutePositioned() &&
|
| + containingLayer->layoutObject().isInFlowPositioned() &&
|
| + containingLayer->layoutObject().isLayoutInline()) {
|
| // Adjust offset for absolute under in-flow positioned inline.
|
| LayoutSize offset =
|
| toLayoutInline(containingLayer->layoutObject())
|
| - ->offsetForInFlowPositionedInline(*toLayoutBox(layoutObject()));
|
| + .offsetForInFlowPositionedInline(toLayoutBox(layoutObject()));
|
| localPoint += offset;
|
| }
|
| }
|
|
|
| - if (layoutObject()->isInFlowPositioned()) {
|
| - LayoutSize newOffset = layoutObject()->offsetForInFlowPosition();
|
| + if (layoutObject().isInFlowPositioned()) {
|
| + LayoutSize newOffset = layoutObject().offsetForInFlowPosition();
|
| if (m_rareData || !newOffset.isZero())
|
| ensureRareData().offsetForInFlowPosition = newOffset;
|
| localPoint.move(newOffset);
|
| @@ -840,10 +846,10 @@ void PaintLayer::updateLayerPosition() {
|
| }
|
|
|
| TransformationMatrix PaintLayer::perspectiveTransform() const {
|
| - if (!layoutObject()->hasTransformRelatedProperty())
|
| + if (!layoutObject().hasTransformRelatedProperty())
|
| return TransformationMatrix();
|
|
|
| - const ComputedStyle& style = layoutObject()->styleRef();
|
| + const ComputedStyle& style = layoutObject().styleRef();
|
| if (!style.hasPerspective())
|
| return TransformationMatrix();
|
|
|
| @@ -853,11 +859,11 @@ TransformationMatrix PaintLayer::perspectiveTransform() const {
|
| }
|
|
|
| FloatPoint PaintLayer::perspectiveOrigin() const {
|
| - if (!layoutObject()->hasTransformRelatedProperty())
|
| + if (!layoutObject().hasTransformRelatedProperty())
|
| return FloatPoint();
|
|
|
| - const LayoutRect borderBox = toLayoutBox(layoutObject())->borderBoxRect();
|
| - const ComputedStyle& style = layoutObject()->styleRef();
|
| + const LayoutRect borderBox = toLayoutBox(layoutObject()).borderBoxRect();
|
| + const ComputedStyle& style = layoutObject().styleRef();
|
|
|
| return FloatPoint(floatValueForLength(style.perspectiveOriginX(),
|
| borderBox.width().toFloat()),
|
| @@ -873,13 +879,13 @@ PaintLayer* PaintLayer::containingLayer(const PaintLayer* ancestor,
|
| if (skippedAncestor)
|
| *skippedAncestor = false;
|
|
|
| - LayoutObject* layoutObject = this->layoutObject();
|
| - if (layoutObject->isColumnSpanAll() ||
|
| - layoutObject->isFloatingWithNonContainingBlockParent()) {
|
| + LayoutObject& layoutObject = this->layoutObject();
|
| + if (layoutObject.isColumnSpanAll() ||
|
| + layoutObject.isFloatingWithNonContainingBlockParent()) {
|
| Optional<LayoutObject::AncestorSkipInfo> skipInfo;
|
| if (skippedAncestor)
|
| - skipInfo.emplace(ancestor->layoutObject());
|
| - if (auto containingBlock = layoutObject->containingBlock(
|
| + skipInfo.emplace(&ancestor->layoutObject());
|
| + if (auto containingBlock = layoutObject.containingBlock(
|
| skippedAncestor ? &*skipInfo : nullptr)) {
|
| if (skippedAncestor && skipInfo->ancestorSkipped())
|
| *skippedAncestor = true;
|
| @@ -888,14 +894,14 @@ PaintLayer* PaintLayer::containingLayer(const PaintLayer* ancestor,
|
| return nullptr;
|
| }
|
|
|
| - if (layoutObject->isOutOfFlowPositioned()) {
|
| + if (layoutObject.isOutOfFlowPositioned()) {
|
| auto canContainThisLayer =
|
| - layoutObject->isFixedPositioned()
|
| + layoutObject.isFixedPositioned()
|
| ? &LayoutObject::canContainFixedPositionObjects
|
| : &LayoutObject::canContainAbsolutePositionObjects;
|
|
|
| PaintLayer* curr = parent();
|
| - while (curr && !(curr->layoutObject()->*canContainThisLayer)()) {
|
| + while (curr && !((&curr->layoutObject())->*canContainThisLayer)()) {
|
| if (skippedAncestor && curr == ancestor)
|
| *skippedAncestor = true;
|
| curr = curr->parent();
|
| @@ -917,8 +923,8 @@ PaintLayer* PaintLayer::enclosingTransformedAncestor() const {
|
| LayoutPoint PaintLayer::computeOffsetFromTransformedAncestor() const {
|
| TransformState transformState(TransformState::ApplyTransformDirection,
|
| FloatPoint());
|
| - layoutObject()->mapLocalToAncestor(
|
| - transformAncestor() ? transformAncestor()->layoutObject() : nullptr,
|
| + layoutObject().mapLocalToAncestor(
|
| + transformAncestor() ? &transformAncestor()->layoutObject() : nullptr,
|
| transformState, 0);
|
| transformState.flatten();
|
| return LayoutPoint(transformState.lastPlanarPoint());
|
| @@ -968,8 +974,8 @@ PaintLayer::enclosingLayerForPaintInvalidationCrossingFrameBoundaries() const {
|
| while (!compositedLayer) {
|
| compositedLayer = layer->enclosingLayerForPaintInvalidation();
|
| if (!compositedLayer) {
|
| - CHECK(layer->layoutObject()->frame());
|
| - LayoutItem owner = layer->layoutObject()->frame()->ownerLayoutItem();
|
| + CHECK(layer->layoutObject().frame());
|
| + LayoutItem owner = layer->layoutObject().frame()->ownerLayoutItem();
|
| if (owner.isNull())
|
| break;
|
| layer = owner.enclosingLayer();
|
| @@ -1034,8 +1040,8 @@ void PaintLayer::didUpdateCompositingInputs() {
|
| bool PaintLayer::hasNonIsolatedDescendantWithBlendMode() const {
|
| if (m_hasNonIsolatedDescendantWithBlendMode)
|
| return true;
|
| - if (layoutObject()->isSVGRoot())
|
| - return toLayoutSVGRoot(layoutObject())->hasNonIsolatedBlendingDescendants();
|
| + if (layoutObject().isSVGRoot())
|
| + return toLayoutSVGRoot(layoutObject()).hasNonIsolatedBlendingDescendants();
|
| return false;
|
| }
|
|
|
| @@ -1103,7 +1109,7 @@ static void expandClipRectForDescendants(
|
| GlobalPaintFlags globalPaintFlags) {
|
| // If we have a mask, then the clip is limited to the border box area (and
|
| // there is no need to examine child layers).
|
| - if (!layer->layoutObject()->hasMask()) {
|
| + if (!layer->layoutObject().hasMask()) {
|
| // Note: we don't have to walk z-order lists since transparent elements
|
| // always establish a stacking container. This means we can just walk the
|
| // layer tree directly.
|
| @@ -1164,9 +1170,9 @@ LayoutRect PaintLayer::transparencyClipBox(
|
| // We have to break up the transformed extent across our columns.
|
| // Split our box up into the actual fragment boxes that layout in the
|
| // columns/pages and unite those together to get our true bounding box.
|
| - LayoutFlowThread* enclosingFlowThread =
|
| + LayoutFlowThread& enclosingFlowThread =
|
| toLayoutFlowThread(paginationLayer->layoutObject());
|
| - result = enclosingFlowThread->fragmentsBoundingBox(result);
|
| + result = enclosingFlowThread.fragmentsBoundingBox(result);
|
|
|
| LayoutPoint rootLayerDelta;
|
| paginationLayer->convertToLayerCoords(rootLayer, rootLayerDelta);
|
| @@ -1237,7 +1243,7 @@ void PaintLayer::addChild(PaintLayer* child, PaintLayer* beforeChild) {
|
| setNeedsCompositingInputsUpdate();
|
|
|
| if (!child->stackingNode()->isStacked() &&
|
| - !layoutObject()->documentBeingDestroyed())
|
| + !layoutObject().documentBeingDestroyed())
|
| compositor()->setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
|
|
|
| if (child->stackingNode()->isStacked() || child->firstChild()) {
|
| @@ -1271,7 +1277,7 @@ PaintLayer* PaintLayer::removeChild(PaintLayer* oldChild) {
|
| m_last = oldChild->previousSibling();
|
|
|
| if (!oldChild->stackingNode()->isStacked() &&
|
| - !layoutObject()->documentBeingDestroyed())
|
| + !layoutObject().documentBeingDestroyed())
|
| compositor()->setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
|
|
|
| if (oldChild->stackingNode()->isStacked() || oldChild->firstChild()) {
|
| @@ -1282,7 +1288,7 @@ PaintLayer* PaintLayer::removeChild(PaintLayer* oldChild) {
|
| oldChild->stackingNode()->dirtyStackingContextZOrderLists();
|
| }
|
|
|
| - if (layoutObject()->style()->visibility() != EVisibility::kVisible)
|
| + if (layoutObject().style()->visibility() != EVisibility::kVisible)
|
| dirtyVisibleContentStatus();
|
|
|
| oldChild->setPreviousSibling(0);
|
| @@ -1319,10 +1325,10 @@ void PaintLayer::removeOnlyThisLayerAfterStyleChange() {
|
| // invalidation container, so need paint invalidation. CompositingUpdate
|
| // can't see this layer (which has been removed) so won't do this for us.
|
| DisablePaintInvalidationStateAsserts disabler;
|
| - ObjectPaintInvalidator(*layoutObject())
|
| + ObjectPaintInvalidator(layoutObject())
|
| .invalidatePaintIncludingNonCompositingDescendants();
|
| layoutObject()
|
| - ->setShouldDoFullPaintInvalidationIncludingNonCompositingDescendants();
|
| + .setShouldDoFullPaintInvalidationIncludingNonCompositingDescendants();
|
| didSetPaintInvalidation = true;
|
| }
|
| }
|
| @@ -1352,23 +1358,23 @@ void PaintLayer::removeOnlyThisLayerAfterStyleChange() {
|
|
|
| // Remove us from the parent.
|
| m_parent->removeChild(this);
|
| - m_layoutObject->destroyLayer();
|
| + m_layoutObject.destroyLayer();
|
| }
|
|
|
| void PaintLayer::insertOnlyThisLayerAfterStyleChange() {
|
| - if (!m_parent && layoutObject()->parent()) {
|
| + if (!m_parent && layoutObject().parent()) {
|
| // We need to connect ourselves when our layoutObject() has a parent.
|
| // Find our enclosingLayer and add ourselves.
|
| - PaintLayer* parentLayer = layoutObject()->parent()->enclosingLayer();
|
| + PaintLayer* parentLayer = layoutObject().parent()->enclosingLayer();
|
| DCHECK(parentLayer);
|
| PaintLayer* beforeChild =
|
| - layoutObject()->parent()->findNextLayer(parentLayer, layoutObject());
|
| + layoutObject().parent()->findNextLayer(parentLayer, &layoutObject());
|
| parentLayer->addChild(this, beforeChild);
|
| }
|
|
|
| // Remove all descendant layers from the hierarchy and add them to the new
|
| // position.
|
| - for (LayoutObject* curr = layoutObject()->slowFirstChild(); curr;
|
| + for (LayoutObject* curr = layoutObject().slowFirstChild(); curr;
|
| curr = curr->nextSibling())
|
| curr->moveLayers(m_parent, this);
|
|
|
| @@ -1377,16 +1383,16 @@ void PaintLayer::insertOnlyThisLayerAfterStyleChange() {
|
| // and its descendants to change paint invalidation container.
|
| bool didSetPaintInvalidation = false;
|
| if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled() &&
|
| - !layoutObject()->isLayoutView() && layoutObject()->isRooted() &&
|
| - layoutObject()->styleRef().isStacked()) {
|
| + !layoutObject().isLayoutView() && layoutObject().isRooted() &&
|
| + layoutObject().styleRef().isStacked()) {
|
| const LayoutBoxModelObject& previousPaintInvalidationContainer =
|
| - layoutObject()->parent()->containerForPaintInvalidation();
|
| + layoutObject().parent()->containerForPaintInvalidation();
|
| if (!previousPaintInvalidationContainer.styleRef().isStackingContext()) {
|
| - ObjectPaintInvalidator(*layoutObject())
|
| + ObjectPaintInvalidator(layoutObject())
|
| .invalidatePaintIncludingNonSelfPaintingLayerDescendants(
|
| previousPaintInvalidationContainer);
|
| // Set needsRepaint along the original compositingContainer chain.
|
| - layoutObject()->parent()->enclosingLayer()->setNeedsRepaint();
|
| + layoutObject().parent()->enclosingLayer()->setNeedsRepaint();
|
| didSetPaintInvalidation = true;
|
| }
|
| }
|
| @@ -1409,13 +1415,13 @@ static inline const PaintLayer* accumulateOffsetTowardsAncestor(
|
| LayoutPoint& location) {
|
| DCHECK(ancestorLayer != layer);
|
|
|
| - const LayoutBoxModelObject* layoutObject = layer->layoutObject();
|
| + const LayoutBoxModelObject& layoutObject = layer->layoutObject();
|
|
|
| - if (layoutObject->isFixedPositioned() &&
|
| - (!ancestorLayer || ancestorLayer == layoutObject->view()->layer())) {
|
| + if (layoutObject.isFixedPositioned() &&
|
| + (!ancestorLayer || ancestorLayer == layoutObject.view()->layer())) {
|
| // If the fixed layer's container is the root, just add in the offset of the
|
| // view. We can obtain this by calling localToAbsolute() on the LayoutView.
|
| - FloatPoint absPos = layoutObject->localToAbsolute();
|
| + FloatPoint absPos = layoutObject.localToAbsolute();
|
| location += LayoutSize(absPos.x(), absPos.y());
|
| return ancestorLayer;
|
| }
|
| @@ -1475,10 +1481,10 @@ LayoutPoint PaintLayer::visualOffsetFromAncestor(
|
| return offset;
|
| }
|
|
|
| - LayoutFlowThread* flowThread =
|
| + LayoutFlowThread& flowThread =
|
| toLayoutFlowThread(paginationLayer->layoutObject());
|
| convertToLayerCoords(paginationLayer, offset);
|
| - offset = flowThread->flowThreadPointToVisualPoint(offset);
|
| + offset = flowThread.flowThreadPointToVisualPoint(offset);
|
| if (ancestorLayer == paginationLayer)
|
| return offset;
|
|
|
| @@ -1514,7 +1520,7 @@ void PaintLayer::updateScrollableArea() {
|
| bool PaintLayer::hasOverflowControls() const {
|
| return m_scrollableArea && (m_scrollableArea->hasScrollbar() ||
|
| m_scrollableArea->scrollCorner() ||
|
| - layoutObject()->style()->resize() != RESIZE_NONE);
|
| + layoutObject().style()->resize() != RESIZE_NONE);
|
| }
|
|
|
| void PaintLayer::appendSingleFragmentIgnoringPagination(
|
| @@ -1597,7 +1603,7 @@ void PaintLayer::collectFragments(
|
| : physicalBoundingBox(offsetWithinPaginatedLayer);
|
| layerBoundingBoxInFlowThread.intersect(backgroundRectInFlowThread.rect());
|
|
|
| - LayoutFlowThread* enclosingFlowThread =
|
| + LayoutFlowThread& enclosingFlowThread =
|
| toLayoutFlowThread(enclosingPaginationLayer()->layoutObject());
|
| // Visual offset from the root layer to the nearest fragmentation context.
|
| LayoutPoint offsetOfPaginationLayerFromRoot;
|
| @@ -1616,14 +1622,14 @@ void PaintLayer::collectFragments(
|
| // Make the dirty rect relative to the fragmentation context (multicol
|
| // container, etc.).
|
| LayoutRect dirtyRectInMulticolContainer(dirtyRect);
|
| - dirtyRectInMulticolContainer.move(enclosingFlowThread->physicalLocation() -
|
| + dirtyRectInMulticolContainer.move(enclosingFlowThread.physicalLocation() -
|
| offsetOfPaginationLayerFromRoot);
|
|
|
| // Slice the layer into fragments. Each fragment needs to be processed (e.g.
|
| // painted) separately. We pass enough information to walk a minimal number of
|
| // fragments based on the pages/columns that intersect the actual dirtyRect as
|
| // well as the pages/columns that intersect our layer's bounding box.
|
| - FragmentainerIterator iterator(*enclosingFlowThread,
|
| + FragmentainerIterator iterator(enclosingFlowThread,
|
| layerBoundingBoxInFlowThread,
|
| dirtyRectInMulticolContainer);
|
| if (iterator.atEnd())
|
| @@ -1684,8 +1690,8 @@ void PaintLayer::collectFragments(
|
| }
|
| }
|
|
|
| -static inline LayoutRect frameVisibleRect(LayoutObject* layoutObject) {
|
| - FrameView* frameView = layoutObject->document().view();
|
| +static inline LayoutRect frameVisibleRect(LayoutObject& layoutObject) {
|
| + FrameView* frameView = layoutObject.document().view();
|
| if (!frameView)
|
| return LayoutRect();
|
|
|
| @@ -1696,8 +1702,8 @@ bool PaintLayer::hitTest(HitTestResult& result) {
|
| DCHECK(isSelfPaintingLayer() || hasSelfPaintingLayerDescendant());
|
|
|
| // LayoutView should make sure to update layout before entering hit testing
|
| - DCHECK(!layoutObject()->frame()->view()->layoutPending());
|
| - DCHECK(!layoutObject()->document().layoutViewItem().needsLayout());
|
| + DCHECK(!layoutObject().frame()->view()->layoutPending());
|
| + DCHECK(!layoutObject().document().layoutViewItem().needsLayout());
|
|
|
| const HitTestRequest& request = result.hitTestRequest();
|
| const HitTestLocation& hitTestLocation = result.hitTestLocation();
|
| @@ -1705,7 +1711,7 @@ bool PaintLayer::hitTest(HitTestResult& result) {
|
| // Start with frameVisibleRect to ensure we include the scrollbars.
|
| LayoutRect hitTestArea = frameVisibleRect(layoutObject());
|
| if (request.ignoreClipping())
|
| - hitTestArea.unite(LayoutRect(layoutObject()->view()->documentRect()));
|
| + hitTestArea.unite(LayoutRect(layoutObject().view()->documentRect()));
|
|
|
| PaintLayer* insideLayer =
|
| hitTestLayer(this, 0, result, hitTestArea, hitTestLocation, false);
|
| @@ -1731,9 +1737,9 @@ bool PaintLayer::hitTest(HitTestResult& result) {
|
| fallback = true;
|
| }
|
| if (fallback) {
|
| - layoutObject()->updateHitTestResult(
|
| + layoutObject().updateHitTestResult(
|
| result, toLayoutView(layoutObject())
|
| - ->flipForWritingMode(hitTestLocation.point()));
|
| + .flipForWritingMode(hitTestLocation.point()));
|
| insideLayer = this;
|
|
|
| // Don't cache this result since it really wasn't a true hit.
|
| @@ -1753,7 +1759,7 @@ bool PaintLayer::hitTest(HitTestResult& result) {
|
| }
|
|
|
| Node* PaintLayer::enclosingNode() const {
|
| - for (LayoutObject* r = layoutObject(); r; r = r->parent()) {
|
| + for (LayoutObject* r = &layoutObject(); r; r = r->parent()) {
|
| if (Node* e = r->node())
|
| return e;
|
| }
|
| @@ -1762,7 +1768,7 @@ Node* PaintLayer::enclosingNode() const {
|
| }
|
|
|
| bool PaintLayer::isInTopLayer() const {
|
| - Node* node = layoutObject()->node();
|
| + Node* node = layoutObject().node();
|
| return node && node->isElementNode() && toElement(node)->isInTopLayer();
|
| }
|
|
|
| @@ -1809,10 +1815,10 @@ PassRefPtr<HitTestingTransformState> PaintLayer::createLocalTransformState(
|
| offset.moveBy(translationOffset);
|
|
|
| LayoutObject* containerLayoutObject =
|
| - containerLayer ? containerLayer->layoutObject() : 0;
|
| - if (layoutObject()->shouldUseTransformFromContainer(containerLayoutObject)) {
|
| + containerLayer ? &containerLayer->layoutObject() : 0;
|
| + if (layoutObject().shouldUseTransformFromContainer(containerLayoutObject)) {
|
| TransformationMatrix containerTransform;
|
| - layoutObject()->getTransformFromContainer(
|
| + layoutObject().getTransformFromContainer(
|
| containerLayoutObject, toLayoutSize(offset), containerTransform);
|
| transformState->applyTransform(
|
| containerTransform, HitTestingTransformState::AccumulateTransform);
|
| @@ -1873,7 +1879,7 @@ PaintLayer* PaintLayer::hitTestLayer(
|
| bool appliedTransform,
|
| const HitTestingTransformState* transformState,
|
| double* zOffset) {
|
| - DCHECK(layoutObject()->document().lifecycle().state() >=
|
| + DCHECK(layoutObject().document().lifecycle().state() >=
|
| DocumentLifecycle::CompositingClean);
|
|
|
| if (!isSelfPaintingLayer() && !hasSelfPaintingLayerDescendant())
|
| @@ -1928,7 +1934,7 @@ PaintLayer* PaintLayer::hitTestLayer(
|
|
|
| // Check for hit test on backface if backface-visibility is 'hidden'
|
| if (localTransformState &&
|
| - layoutObject()->style()->backfaceVisibility() ==
|
| + layoutObject().style()->backfaceVisibility() ==
|
| BackfaceVisibilityHidden) {
|
| TransformationMatrix invertedMatrix =
|
| localTransformState->m_accumulatedTransform.inverse();
|
| @@ -2010,7 +2016,7 @@ PaintLayer* PaintLayer::hitTestLayer(
|
| if (m_scrollableArea &&
|
| m_scrollableArea->hitTestResizerInFragments(layerFragments,
|
| hitTestLocation)) {
|
| - layoutObject()->updateHitTestResult(result, hitTestLocation.point());
|
| + layoutObject().updateHitTestResult(result, hitTestLocation.point());
|
| return this;
|
| }
|
|
|
| @@ -2206,7 +2212,7 @@ bool PaintLayer::hitTestContents(HitTestResult& result,
|
| HitTestFilter hitTestFilter) const {
|
| DCHECK(isSelfPaintingLayer() || hasSelfPaintingLayerDescendant());
|
|
|
| - if (!layoutObject()->hitTest(
|
| + if (!layoutObject().hitTest(
|
| result, hitTestLocation,
|
| toLayoutPoint(layerBounds.location() - layoutBoxLocation()),
|
| hitTestFilter)) {
|
| @@ -2221,7 +2227,7 @@ bool PaintLayer::hitTestContents(HitTestResult& result,
|
| // We hit something anonymous, and we didn't find a DOM node ancestor in
|
| // this layer.
|
|
|
| - if (layoutObject()->isLayoutFlowThread()) {
|
| + if (layoutObject().isLayoutFlowThread()) {
|
| // For a flow thread it's safe to just say that we didn't hit anything.
|
| // That means that we'll continue as normally, and eventually hit a column
|
| // set sibling instead. Column sets are also anonymous, but, unlike flow
|
| @@ -2294,9 +2300,9 @@ FloatRect PaintLayer::boxForFilterOrMask() const {
|
| }
|
|
|
| LayoutRect PaintLayer::boxForClipPath() const {
|
| - if (!layoutObject()->isBox()) {
|
| - SECURITY_DCHECK(layoutObject()->isLayoutInline());
|
| - const LayoutInline& layoutInline = toLayoutInline(*layoutObject());
|
| + if (!layoutObject().isBox()) {
|
| + SECURITY_DCHECK(layoutObject().isLayoutInline());
|
| + const LayoutInline& layoutInline = toLayoutInline(layoutObject());
|
| // This somewhat convoluted computation matches what Gecko does.
|
| // See crbug.com/641907.
|
| LayoutRect inlineBBox = layoutInline.linesBoundingBox();
|
| @@ -2305,13 +2311,13 @@ LayoutRect PaintLayer::boxForClipPath() const {
|
| : LayoutUnit(0));
|
| return inlineBBox;
|
| }
|
| - return toLayoutBox(layoutObject())->borderBoxRect();
|
| + return toLayoutBox(layoutObject()).borderBoxRect();
|
| }
|
|
|
| bool PaintLayer::hitTestClippedOutByClipPath(
|
| PaintLayer* rootLayer,
|
| const HitTestLocation& hitTestLocation) const {
|
| - if (!layoutObject()->hasClipPath())
|
| + if (!layoutObject().hasClipPath())
|
| return false;
|
| DCHECK(isSelfPaintingLayer());
|
| DCHECK(rootLayer);
|
| @@ -2324,7 +2330,7 @@ bool PaintLayer::hitTestClippedOutByClipPath(
|
|
|
| FloatPoint point(hitTestLocation.point());
|
|
|
| - ClipPathOperation* clipPathOperation = layoutObject()->style()->clipPath();
|
| + ClipPathOperation* clipPathOperation = layoutObject().style()->clipPath();
|
| DCHECK(clipPathOperation);
|
| if (clipPathOperation->type() == ClipPathOperation::SHAPE) {
|
| ShapeClipPathOperation* clipPath =
|
| @@ -2332,7 +2338,7 @@ bool PaintLayer::hitTestClippedOutByClipPath(
|
| return !clipPath->path(FloatRect(referenceBox)).contains(point);
|
| }
|
| DCHECK_EQ(clipPathOperation->type(), ClipPathOperation::REFERENCE);
|
| - Node* targetNode = layoutObject()->node();
|
| + Node* targetNode = layoutObject().node();
|
| if (!targetNode)
|
| return false;
|
| const ReferenceClipPathOperation& referenceClipPathOperation =
|
| @@ -2357,14 +2363,14 @@ bool PaintLayer::intersectsDamageRect(const LayoutRect& layerBounds,
|
| // Always examine the canvas and the root.
|
| // FIXME: Could eliminate the isDocumentElement() check if we fix background
|
| // painting so that the LayoutView paints the root's background.
|
| - if (isRootLayer() || layoutObject()->isDocumentElement())
|
| + if (isRootLayer() || layoutObject().isDocumentElement())
|
| return true;
|
|
|
| // If we aren't an inline flow, and our layer bounds do intersect the damage
|
| // rect, then we can go ahead and return true.
|
| - LayoutView* view = layoutObject()->view();
|
| + LayoutView* view = layoutObject().view();
|
| DCHECK(view);
|
| - if (view && !layoutObject()->isLayoutInline()) {
|
| + if (view && !layoutObject().isLayoutInline()) {
|
| if (layerBounds.intersects(damageRect))
|
| return true;
|
| }
|
| @@ -2375,23 +2381,23 @@ bool PaintLayer::intersectsDamageRect(const LayoutRect& layerBounds,
|
| }
|
|
|
| LayoutRect PaintLayer::logicalBoundingBox() const {
|
| - LayoutRect rect = layoutObject()->visualOverflowRect();
|
| + LayoutRect rect = layoutObject().visualOverflowRect();
|
|
|
| if (isRootLayer()) {
|
| rect.unite(
|
| - LayoutRect(rect.location(), layoutObject()->view()->viewRect().size()));
|
| + LayoutRect(rect.location(), layoutObject().view()->viewRect().size()));
|
| }
|
|
|
| return rect;
|
| }
|
|
|
| static inline LayoutRect flippedLogicalBoundingBox(LayoutRect boundingBox,
|
| - LayoutObject* layoutObject) {
|
| + LayoutObject& layoutObject) {
|
| LayoutRect result = boundingBox;
|
| - if (layoutObject->isBox())
|
| - toLayoutBox(layoutObject)->flipForWritingMode(result);
|
| + if (layoutObject.isBox())
|
| + toLayoutBox(layoutObject).flipForWritingMode(result);
|
| else
|
| - layoutObject->containingBlock()->flipForWritingMode(result);
|
| + layoutObject.containingBlock()->flipForWritingMode(result);
|
| return result;
|
| }
|
|
|
| @@ -2500,9 +2506,9 @@ LayoutRect PaintLayer::boundingBoxForCompositingInternal(
|
| // The root layer is the size of the document, plus any additional area due
|
| // to layout viewport being different than initial containing block.
|
| if (isRootLayer()) {
|
| - IntRect documentRect = layoutObject()->view()->documentRect();
|
| + IntRect documentRect = layoutObject().view()->documentRect();
|
|
|
| - if (FrameView* frameView = layoutObject()->document().view()) {
|
| + if (FrameView* frameView = layoutObject().document().view()) {
|
| documentRect.unite(IntRect(IntPoint(), frameView->visibleContentSize()));
|
| }
|
|
|
| @@ -2513,7 +2519,7 @@ LayoutRect PaintLayer::boundingBoxForCompositingInternal(
|
| // and hit-testing, and should not contribute to the bounding box. The
|
| // LayoutMultiColumnSets will contribute the correct size for the layout
|
| // content of the multicol container.
|
| - if (layoutObject()->isLayoutFlowThread())
|
| + if (layoutObject().isLayoutFlowThread())
|
| return LayoutRect();
|
|
|
| const_cast<PaintLayer*>(this)->stackingNode()->updateLayerListsIfNeeded();
|
| @@ -2573,7 +2579,7 @@ bool PaintLayer::isAllowedToQueryCompositingState() const {
|
| if (gCompositingQueryMode == CompositingQueriesAreAllowed ||
|
| RuntimeEnabledFeatures::slimmingPaintV2Enabled())
|
| return true;
|
| - return layoutObject()->document().lifecycle().state() >=
|
| + return layoutObject().document().lifecycle().state() >=
|
| DocumentLifecycle::InCompositingUpdate;
|
| }
|
|
|
| @@ -2589,7 +2595,7 @@ GraphicsLayer* PaintLayer::graphicsLayerBacking(const LayoutObject* obj) const {
|
| case PaintsIntoGroupedBacking:
|
| return groupedMapping()->squashingLayer();
|
| default:
|
| - return (obj != layoutObject() &&
|
| + return (obj != &layoutObject() &&
|
| compositedLayerMapping()->scrollingContentsLayer())
|
| ? compositedLayerMapping()->scrollingContentsLayer()
|
| : compositedLayerMapping()->mainGraphicsLayer();
|
| @@ -2602,10 +2608,10 @@ BackgroundPaintLocation PaintLayer::backgroundPaintLocation(
|
| if (!scrollsOverflow()) {
|
| location = BackgroundPaintInGraphicsLayer;
|
| } else if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
|
| - location = layoutObject()->backgroundPaintLocation(reasons);
|
| + location = layoutObject().backgroundPaintLocation(reasons);
|
| } else {
|
| location = isRootLayer() ? BackgroundPaintInGraphicsLayer
|
| - : layoutObject()->backgroundPaintLocation(reasons);
|
| + : layoutObject().backgroundPaintLocation(reasons);
|
| }
|
| m_stackingNode->updateLayerListsIfNeeded();
|
| if (m_stackingNode->hasNegativeZOrderList())
|
| @@ -2668,7 +2674,7 @@ void PaintLayer::setGroupedMapping(CompositedLayerMapping* groupedMapping,
|
| }
|
|
|
| bool PaintLayer::maskBlendingAppliedByCompositor() const {
|
| - DCHECK(m_layoutObject->hasMask());
|
| + DCHECK(m_layoutObject.hasMask());
|
| if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
|
| return true;
|
| return m_rareData && m_rareData->compositedLayerMapping &&
|
| @@ -2688,7 +2694,7 @@ bool PaintLayer::paintsWithTransform(GlobalPaintFlags globalPaintFlags) const {
|
| }
|
|
|
| return (transform() ||
|
| - layoutObject()->style()->position() == EPosition::kFixed) &&
|
| + layoutObject().style()->position() == EPosition::kFixed) &&
|
| ((globalPaintFlags & GlobalPaintFlattenCompositingLayers) ||
|
| compositingState() != PaintsIntoOwnBacking);
|
| }
|
| @@ -2698,7 +2704,7 @@ bool PaintLayer::compositesWithTransform() const {
|
| }
|
|
|
| bool PaintLayer::compositesWithOpacity() const {
|
| - return opacityAncestor() || layoutObject()->style()->hasOpacity();
|
| + return opacityAncestor() || layoutObject().style()->hasOpacity();
|
| }
|
|
|
| bool PaintLayer::backgroundIsKnownToBeOpaqueInRect(
|
| @@ -2709,11 +2715,11 @@ bool PaintLayer::backgroundIsKnownToBeOpaqueInRect(
|
| // We can't use hasVisibleContent(), because that will be true if our
|
| // layoutObject is hidden, but some child is visible and that child doesn't
|
| // cover the entire rect.
|
| - if (layoutObject()->style()->visibility() != EVisibility::kVisible)
|
| + if (layoutObject().style()->visibility() != EVisibility::kVisible)
|
| return false;
|
|
|
| if (paintsWithFilters() &&
|
| - layoutObject()->style()->filter().hasFilterThatAffectsOpacity())
|
| + layoutObject().style()->filter().hasFilterThatAffectsOpacity())
|
| return false;
|
|
|
| // FIXME: Handle simple transforms.
|
| @@ -2721,7 +2727,7 @@ bool PaintLayer::backgroundIsKnownToBeOpaqueInRect(
|
| return false;
|
|
|
| if (!RuntimeEnabledFeatures::compositeOpaqueFixedPositionEnabled() &&
|
| - layoutObject()->style()->position() == EPosition::kFixed &&
|
| + layoutObject().style()->position() == EPosition::kFixed &&
|
| compositingState() != PaintsIntoOwnBacking)
|
| return false;
|
|
|
| @@ -2735,12 +2741,12 @@ bool PaintLayer::backgroundIsKnownToBeOpaqueInRect(
|
| // FIXME: We currently only check the immediate layoutObject,
|
| // which will miss many cases where additional layout objects paint
|
| // into this layer.
|
| - if (layoutObject()->backgroundIsKnownToBeOpaqueInRect(localRect))
|
| + if (layoutObject().backgroundIsKnownToBeOpaqueInRect(localRect))
|
| return true;
|
|
|
| // We can't consult child layers if we clip, since they might cover
|
| // parts of the rect that are clipped out.
|
| - if (layoutObject()->hasClipRelatedProperty())
|
| + if (layoutObject().hasClipRelatedProperty())
|
| return false;
|
|
|
| // TODO(schenney): This could be improved by unioning the opaque regions of
|
| @@ -2776,11 +2782,11 @@ bool PaintLayer::childBackgroundIsKnownToBeOpaqueInRect(
|
| }
|
|
|
| bool PaintLayer::shouldBeSelfPaintingLayer() const {
|
| - if (layoutObject()->isLayoutPart() &&
|
| - toLayoutPart(layoutObject())->requiresAcceleratedCompositing())
|
| + if (layoutObject().isLayoutPart() &&
|
| + toLayoutPart(layoutObject()).requiresAcceleratedCompositing())
|
| return true;
|
|
|
| - return layoutObject()->layerTypeRequired() == NormalPaintLayer ||
|
| + return layoutObject().layerTypeRequired() == NormalPaintLayer ||
|
| (m_scrollableArea && m_scrollableArea->hasOverlayScrollbars()) ||
|
| needsCompositedScrolling();
|
| }
|
| @@ -2819,7 +2825,7 @@ bool PaintLayer::hasNonEmptyChildLayoutObjects() const {
|
| // <img src=...>
|
| // </div>
|
| // so test for 0x0 LayoutTexts here
|
| - for (LayoutObject* child = layoutObject()->slowFirstChild(); child;
|
| + for (LayoutObject* child = layoutObject().slowFirstChild(); child;
|
| child = child->nextSibling()) {
|
| if (!child->hasLayer()) {
|
| if (child->isLayoutInline() || !child->isBox())
|
| @@ -2834,8 +2840,8 @@ bool PaintLayer::hasNonEmptyChildLayoutObjects() const {
|
| }
|
|
|
| bool PaintLayer::hasBoxDecorationsOrBackground() const {
|
| - return layoutObject()->style()->hasBoxDecorations() ||
|
| - layoutObject()->style()->hasBackground();
|
| + return layoutObject().style()->hasBoxDecorations() ||
|
| + layoutObject().style()->hasBackground();
|
| }
|
|
|
| bool PaintLayer::hasVisibleBoxDecorations() const {
|
| @@ -2916,17 +2922,17 @@ bool PaintLayer::attemptDirectCompositingUpdate(StyleDifference diff,
|
| // Layers even when the non-transparent Layers are already a
|
| // stacking context.
|
| if (diff.opacityChanged() &&
|
| - m_layoutObject->style()->hasOpacity() != oldStyle->hasOpacity())
|
| + m_layoutObject.style()->hasOpacity() != oldStyle->hasOpacity())
|
| return false;
|
|
|
| // Changes in pointer-events affect hit test visibility of the scrollable
|
| // area and its |m_scrollsOverflow| value which determines if the layer
|
| // requires composited scrolling or not.
|
| if (m_scrollableArea &&
|
| - m_layoutObject->style()->pointerEvents() != oldStyle->pointerEvents())
|
| + m_layoutObject.style()->pointerEvents() != oldStyle->pointerEvents())
|
| return false;
|
|
|
| - updateTransform(oldStyle, layoutObject()->styleRef());
|
| + updateTransform(oldStyle, layoutObject().styleRef());
|
|
|
| // FIXME: Consider introducing a smaller graphics layer update scope
|
| // that just handles transforms and opacity. GraphicsLayerUpdateLocal
|
| @@ -2956,12 +2962,12 @@ void PaintLayer::styleDidChange(StyleDifference diff,
|
| // to recompute the bit once scrollbars have been updated.
|
| updateSelfPaintingLayer();
|
|
|
| - updateTransform(oldStyle, layoutObject()->styleRef());
|
| - updateFilters(oldStyle, layoutObject()->styleRef());
|
| - updateClipPath(oldStyle, layoutObject()->styleRef());
|
| + updateTransform(oldStyle, layoutObject().styleRef());
|
| + updateFilters(oldStyle, layoutObject().styleRef());
|
| + updateClipPath(oldStyle, layoutObject().styleRef());
|
|
|
| setNeedsCompositingInputsUpdate();
|
| - layoutObject()->setNeedsPaintPropertyUpdate();
|
| + layoutObject().setNeedsPaintPropertyUpdate();
|
| }
|
|
|
| PaintLayerClipper PaintLayer::clipper(
|
| @@ -2969,7 +2975,7 @@ PaintLayerClipper PaintLayer::clipper(
|
| GeometryMapper* geometryMapper = nullptr;
|
| if (geometryMapperOption == UseGeometryMapper) {
|
| DCHECK(RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled());
|
| - if (FrameView* frameView = m_layoutObject->document().view())
|
| + if (FrameView* frameView = m_layoutObject.document().view())
|
| geometryMapper = &frameView->geometryMapper();
|
| }
|
| return PaintLayerClipper(*this, geometryMapper);
|
| @@ -2985,7 +2991,7 @@ bool PaintLayer::scrollsOverflow() const {
|
| FilterOperations PaintLayer::addReflectionToFilterOperations(
|
| const ComputedStyle& style) const {
|
| FilterOperations filterOperations = style.filter();
|
| - if (layoutObject()->hasReflection() && layoutObject()->isBox()) {
|
| + if (layoutObject().hasReflection() && layoutObject().isBox()) {
|
| BoxReflection reflection = boxReflectionForPaintLayer(*this, style);
|
| filterOperations.operations().push_back(
|
| BoxReflectFilterOperation::create(reflection));
|
| @@ -3054,7 +3060,7 @@ FilterEffect* PaintLayer::lastFilterEffect() const {
|
| if (resourceInfo->lastEffect())
|
| return resourceInfo->lastEffect();
|
|
|
| - const ComputedStyle& style = layoutObject()->styleRef();
|
| + const ComputedStyle& style = layoutObject().styleRef();
|
| FloatRect zoomedReferenceBox;
|
| if (style.filter().hasReferenceFilter())
|
| zoomedReferenceBox = boxForFilterOrMask();
|
| @@ -3074,7 +3080,7 @@ FloatRect PaintLayer::mapRectForFilter(const FloatRect& rect) const {
|
| lastFilterEffect();
|
|
|
| FilterOperations filterOperations =
|
| - addReflectionToFilterOperations(layoutObject()->styleRef());
|
| + addReflectionToFilterOperations(layoutObject().styleRef());
|
| return filterOperations.mapRect(rect);
|
| }
|
|
|
| @@ -3087,7 +3093,7 @@ LayoutRect PaintLayer::mapLayoutRectForFilter(const LayoutRect& rect) const {
|
| bool PaintLayer::hasFilterThatMovesPixels() const {
|
| if (!hasFilterInducingProperty())
|
| return false;
|
| - const ComputedStyle& style = layoutObject()->styleRef();
|
| + const ComputedStyle& style = layoutObject().styleRef();
|
| if (style.hasFilter() && style.filter().hasFilterThatMovesPixels())
|
| return true;
|
| if (style.hasBoxReflect())
|
| @@ -3164,7 +3170,7 @@ void PaintLayer::markCompositingContainerChainForNeedsRepaint() {
|
|
|
| PaintLayer* container = layer->compositingContainer();
|
| if (!container) {
|
| - LayoutItem owner = layer->layoutObject()->frame()->ownerLayoutItem();
|
| + LayoutItem owner = layer->layoutObject().frame()->ownerLayoutItem();
|
| if (owner.isNull())
|
| break;
|
| container = owner.enclosingLayer();
|
| @@ -3206,7 +3212,7 @@ void showLayerTree(const blink::PaintLayer* layer) {
|
| return;
|
| }
|
|
|
| - if (blink::LocalFrame* frame = layer->layoutObject()->frame()) {
|
| + if (blink::LocalFrame* frame = layer->layoutObject().frame()) {
|
| WTF::String output = externalRepresentation(
|
| frame,
|
| blink::LayoutAsTextShowAllLayers | blink::LayoutAsTextShowLayerNesting |
|
|
|