| Index: third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp
|
| index b2cb115e0489f1f484b20a9f1a265348b673fc86..ed7548a52bcfe24d975cd47f74b3c527be43b265 100644
|
| --- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp
|
| @@ -318,12 +318,13 @@ const AffineTransform& LayoutSVGRoot::localToSVGParentTransform() const
|
| return m_localToParentTransform;
|
| }
|
|
|
| -LayoutRect LayoutSVGRoot::clippedOverflowRectForPaintInvalidation(const LayoutBoxModelObject* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationState) const
|
| +LayoutRect LayoutSVGRoot::localOverflowRectForPaintInvalidation() const
|
| {
|
| - // This is an open-coded aggregate of SVGLayoutSupport::clippedOverflowRectForPaintInvalidation,
|
| - // LayoutSVGRoot::mapToVisibleRectInAncestorSpace and LayoutReplaced::clippedOverflowRectForPaintInvalidation.
|
| + // This is an open-coded aggregate of SVGLayoutSupport::localOverflowRectForPaintInvalidation,
|
| + // and LayoutReplaced::localOverflowRectForPaintInvalidation.
|
| // The reason for this is to optimize/minimize the paint invalidation rect when the box is not "decorated"
|
| // (does not have background/border/etc.)
|
| + // TODO(wangxianzhu): Verify if the optimization is still needed.
|
|
|
| // Return early for any cases where we don't actually paint.
|
| if (style()->visibility() != VISIBLE && !enclosingLayer()->hasVisibleContent())
|
| @@ -346,18 +347,17 @@ LayoutRect LayoutSVGRoot::clippedOverflowRectForPaintInvalidation(const LayoutBo
|
| paintInvalidationRect.unite(decoratedPaintInvalidationRect);
|
| }
|
|
|
| - // Compute the paint invalidation rect in the parent coordinate space.
|
| - LayoutRect rect(enclosingIntRect(paintInvalidationRect));
|
| - LayoutReplaced::mapToVisibleRectInAncestorSpace(paintInvalidationContainer, rect, paintInvalidationState);
|
| - return rect;
|
| + return LayoutRect(enclosingIntRect(paintInvalidationRect));
|
| }
|
|
|
| -bool LayoutSVGRoot::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState, VisibleRectFlags visibleRectFlags) const
|
| +bool LayoutSVGRoot::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject* ancestor, LayoutRect& rect, VisibleRectFlags visibleRectFlags) const
|
| {
|
| // Note that we don't apply the border-box transform here - it's assumed
|
| // that whoever called us has done that already.
|
|
|
| // Apply initial viewport clip
|
| + // TODO(crbug.com/597813): We should not apply clip on LayoutSVGRoot's own rect. This clip should
|
| + // be applied in children's mapToVisibleRectInAncestorSpace().
|
| if (shouldApplyViewportClip()) {
|
| if (visibleRectFlags & EdgeInclusive) {
|
| if (!rect.inclusiveIntersect(LayoutRect(pixelSnappedBorderBoxRect())))
|
| @@ -367,17 +367,17 @@ bool LayoutSVGRoot::mapToVisibleRectInAncestorSpace(const LayoutBoxModelObject*
|
| }
|
| }
|
|
|
| - return LayoutReplaced::mapToVisibleRectInAncestorSpace(ancestor, rect, paintInvalidationState, visibleRectFlags);
|
| + return LayoutReplaced::mapToVisibleRectInAncestorSpace(ancestor, rect, visibleRectFlags);
|
| }
|
|
|
| // This method expects local CSS box coordinates.
|
| // Callers with local SVG viewport coordinates should first apply the localToBorderBoxTransform
|
| // to convert from SVG viewport coordinates to local CSS box coordinates.
|
| -void LayoutSVGRoot::mapLocalToAncestor(const LayoutBoxModelObject* ancestor, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed, const PaintInvalidationState* paintInvalidationState) const
|
| +void LayoutSVGRoot::mapLocalToAncestor(const LayoutBoxModelObject* ancestor, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed) const
|
| {
|
| ASSERT(!(mode & IsFixed)); // We should have no fixed content in the SVG layout tree.
|
|
|
| - LayoutReplaced::mapLocalToAncestor(ancestor, transformState, mode | ApplyContainerFlip, wasFixed, paintInvalidationState);
|
| + LayoutReplaced::mapLocalToAncestor(ancestor, transformState, mode | ApplyContainerFlip, wasFixed);
|
| }
|
|
|
| const LayoutObject* LayoutSVGRoot::pushMappingToContainer(const LayoutBoxModelObject* ancestorToStopAt, LayoutGeometryMap& geometryMap) const
|
|
|