diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-07-31 15:50:41 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-08-30 12:35:23 +0000 |
commit | 7b2ffa587235a47d4094787d72f38102089f402a (patch) | |
tree | 30e82af9cbab08a7fa028bb18f4f2987a3f74dfa /chromium/third_party/blink/renderer/core/layout/svg | |
parent | d94af01c90575348c4e81a418257f254b6f8d225 (diff) | |
download | qtwebengine-chromium-7b2ffa587235a47d4094787d72f38102089f402a.tar.gz |
BASELINE: Update Chromium to 76.0.3809.94
Change-Id: I321c3f5f929c105aec0f98c5091ef6108822e647
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/layout/svg')
25 files changed, 171 insertions, 219 deletions
diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc index 7cf75ff4ffa..934918edb6e 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc @@ -21,6 +21,7 @@ #include "third_party/blink/renderer/core/layout/svg/layout_svg_block.h" +#include "third_party/blink/renderer/core/layout/geometry/transform_state.h" #include "third_party/blink/renderer/core/layout/layout_geometry_map.h" #include "third_party/blink/renderer/core/layout/layout_view.h" #include "third_party/blink/renderer/core/layout/svg/layout_svg_root.h" @@ -29,7 +30,6 @@ #include "third_party/blink/renderer/core/layout/svg/svg_resources_cache.h" #include "third_party/blink/renderer/core/style/shadow_list.h" #include "third_party/blink/renderer/core/svg/svg_element.h" -#include "third_party/blink/renderer/platform/transforms/transform_state.h" namespace blink { @@ -37,13 +37,7 @@ LayoutSVGBlock::LayoutSVGBlock(SVGElement* element) : LayoutBlockFlow(element) {} SVGElement* LayoutSVGBlock::GetElement() const { - return ToSVGElement(LayoutObject::GetNode()); -} - -void LayoutSVGBlock::AbsoluteRects(Vector<IntRect>&, const LayoutPoint&) const { - // This code path should never be taken for SVG, as we're assuming - // useTransforms=true everywhere, absoluteQuads should be used. - NOTREACHED(); + return To<SVGElement>(LayoutObject::GetNode()); } void LayoutSVGBlock::WillBeDestroyed() { @@ -89,7 +83,7 @@ void LayoutSVGBlock::MapLocalToAncestor(const LayoutBoxModelObject* ancestor, TransformState& transform_state, MapCoordinatesFlags flags) const { // Convert from local HTML coordinates to local SVG coordinates. - transform_state.Move(LocationOffset()); + transform_state.Move(PhysicalLocation()); // Apply other mappings on local SVG coordinates. SVGLayoutSupport::MapLocalToAncestor(this, ancestor, transform_state, flags); } @@ -103,20 +97,20 @@ void LayoutSVGBlock::MapAncestorToLocal(const LayoutBoxModelObject* ancestor, // Map to local SVG coordinates. SVGLayoutSupport::MapAncestorToLocal(*this, ancestor, transform_state, flags); // Convert from local SVG coordinates to local HTML coordinates. - transform_state.Move(LocationOffset()); + transform_state.Move(PhysicalLocation()); } const LayoutObject* LayoutSVGBlock::PushMappingToContainer( const LayoutBoxModelObject* ancestor_to_stop_at, LayoutGeometryMap& geometry_map) const { // Convert from local HTML coordinates to local SVG coordinates. - geometry_map.Push(this, LocationOffset()); + geometry_map.Push(this, PhysicalLocation()); // Apply other mappings on local SVG coordinates. return SVGLayoutSupport::PushMappingToContainer(this, ancestor_to_stop_at, geometry_map); } -LayoutRect LayoutSVGBlock::VisualRectInDocument(VisualRectFlags flags) const { +PhysicalRect LayoutSVGBlock::VisualRectInDocument(VisualRectFlags flags) const { return SVGLayoutSupport::VisualRectInAncestorSpace(*this, *View(), flags); } @@ -125,9 +119,9 @@ bool LayoutSVGBlock::MapToVisualRectInAncestorSpaceInternal( TransformState& transform_state, VisualRectFlags) const { transform_state.Flatten(); - LayoutRect rect(transform_state.LastPlanarQuad().BoundingBox()); + PhysicalRect rect(LayoutRect(transform_state.LastPlanarQuad().BoundingBox())); // Convert from local HTML coordinates to local SVG coordinates. - rect.MoveBy(Location()); + rect.Move(PhysicalLocation()); // Apply other mappings on local SVG coordinates. bool retval = SVGLayoutSupport::MapToVisualRectInAncestorSpace( *this, ancestor, FloatRect(rect), rect); diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.h b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.h index 31caffecd55..739c40a9c89 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.h +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.h @@ -39,14 +39,12 @@ class LayoutSVGBlock : public LayoutBlockFlow { explicit LayoutSVGBlock(SVGElement*); // These mapping functions map coordinates in HTML spaces. - void MapLocalToAncestor( - const LayoutBoxModelObject* ancestor, - TransformState&, - MapCoordinatesFlags = kApplyContainerFlip) const final; - void MapAncestorToLocal( - const LayoutBoxModelObject* ancestor, - TransformState&, - MapCoordinatesFlags = kApplyContainerFlip) const final; + void MapLocalToAncestor(const LayoutBoxModelObject* ancestor, + TransformState&, + MapCoordinatesFlags) const final; + void MapAncestorToLocal(const LayoutBoxModelObject* ancestor, + TransformState&, + MapCoordinatesFlags) const final; const LayoutObject* PushMappingToContainer( const LayoutBoxModelObject* ancestor_to_stop_at, LayoutGeometryMap&) const final; @@ -76,10 +74,7 @@ class LayoutSVGBlock : public LayoutBlockFlow { // LayoutSVGBlock subclasses should use GetElement() instead. void GetNode() const = delete; - LayoutRect VisualRectInDocument(VisualRectFlags) const final; - - void AbsoluteRects(Vector<IntRect>&, - const LayoutPoint& accumulated_offset) const final; + PhysicalRect VisualRectInDocument(VisualRectFlags) const final; void UpdateFromStyle() final; diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_ellipse.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_ellipse.cc index 93a6b9089df..a551f31cc83 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_ellipse.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_ellipse.cc @@ -133,7 +133,7 @@ bool LayoutSVGEllipse::ShapeDependentFillContains( bool LayoutSVGEllipse::HasContinuousStroke() const { const SVGComputedStyle& svg_style = StyleRef().SvgStyle(); - return svg_style.StrokeDashArray()->IsEmpty(); + return svg_style.StrokeDashArray()->data.IsEmpty(); } } // namespace blink diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object_test.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object_test.cc index 0e1e53abea3..f680a1bae07 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object_test.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object_test.cc @@ -34,32 +34,26 @@ TEST_F(LayoutSVGForeignObjectTest, DivInForeignObject) { EXPECT_EQ(AffineTransform(), foreign_object.LocalSVGTransform()); EXPECT_EQ(AffineTransform(), foreign_object.LocalToSVGParentTransform()); - // mapToVisualRectInAncestorSpace - LayoutRect div_rect(0, 0, 100, 50); + // MapToVisualRectInAncestorSpace + PhysicalRect div_rect(0, 0, 100, 50); EXPECT_TRUE(div.MapToVisualRectInAncestorSpace(&GetLayoutView(), div_rect)); - EXPECT_EQ(LayoutRect(150, 150, 100, 50), div_rect); - - // mapLocalToAncestor - TransformState transform_state(TransformState::kApplyTransformDirection, - FloatPoint()); - div.MapLocalToAncestor(&GetLayoutView(), transform_state, - kTraverseDocumentBoundaries); - transform_state.Flatten(); - EXPECT_EQ(FloatPoint(150, 150), transform_state.LastPlanarPoint()); - - // mapAncestorToLocal - TransformState transform_state1( - TransformState::kUnapplyInverseTransformDirection, FloatPoint()); - div.MapAncestorToLocal(&GetLayoutView(), transform_state1, - kTraverseDocumentBoundaries); - transform_state1.Flatten(); - EXPECT_EQ(FloatPoint(-150, -150), transform_state1.LastPlanarPoint()); - - // pushMappingToContainer + EXPECT_EQ(PhysicalRect(150, 150, 100, 50), div_rect); + + // LocalToAncestorPoint + EXPECT_EQ(PhysicalOffset(150, 150), + div.LocalToAncestorPoint(PhysicalOffset(), &GetLayoutView(), + kTraverseDocumentBoundaries)); + + // MapAncestorToLocal + EXPECT_EQ(PhysicalOffset(-150, -150), + div.AncestorToLocalPoint(&GetLayoutView(), PhysicalOffset(), + kTraverseDocumentBoundaries)); + + // PushMappingToContainer LayoutGeometryMap rgm(kTraverseDocumentBoundaries); rgm.PushMappingsToAncestor(&div, nullptr); - EXPECT_EQ(FloatQuad(FloatRect(150, 150, 1, 2)), - rgm.MapToAncestor(FloatRect(0, 0, 1, 2), nullptr)); + EXPECT_EQ(PhysicalRect(150, 150, 1, 2), + rgm.MapToAncestor(PhysicalRect(0, 0, 1, 2), nullptr)); // Hit testing EXPECT_EQ(svg, HitTest(1, 1)); @@ -110,32 +104,26 @@ TEST_F(LayoutSVGForeignObjectTest, IframeInForeignObject) { EXPECT_EQ(AffineTransform(), foreign_object.LocalSVGTransform()); EXPECT_EQ(AffineTransform(), foreign_object.LocalToSVGParentTransform()); - // mapToVisualRectInAncestorSpace - LayoutRect div_rect(0, 0, 100, 50); + // MapToVisualRectInAncestorSpace + PhysicalRect div_rect(0, 0, 100, 50); EXPECT_TRUE(div.MapToVisualRectInAncestorSpace(&GetLayoutView(), div_rect)); - EXPECT_EQ(LayoutRect(200, 200, 100, 50), div_rect); - - // mapLocalToAncestor - TransformState transform_state(TransformState::kApplyTransformDirection, - FloatPoint()); - div.MapLocalToAncestor(&GetLayoutView(), transform_state, - kTraverseDocumentBoundaries); - transform_state.Flatten(); - EXPECT_EQ(FloatPoint(200, 200), transform_state.LastPlanarPoint()); - - // mapAncestorToLocal - TransformState transform_state1( - TransformState::kUnapplyInverseTransformDirection, FloatPoint()); - div.MapAncestorToLocal(&GetLayoutView(), transform_state1, - kTraverseDocumentBoundaries); - transform_state1.Flatten(); - EXPECT_EQ(FloatPoint(-200, -200), transform_state1.LastPlanarPoint()); - - // pushMappingToContainer + EXPECT_EQ(PhysicalRect(200, 200, 100, 50), div_rect); + + // LocalToAncestorPoint + EXPECT_EQ(PhysicalOffset(200, 200), + div.LocalToAncestorPoint(PhysicalOffset(), &GetLayoutView(), + kTraverseDocumentBoundaries)); + + // AncestorToLocalPoint + EXPECT_EQ(PhysicalOffset(-200, -200), + div.AncestorToLocalPoint(&GetLayoutView(), PhysicalOffset(), + kTraverseDocumentBoundaries)); + + // PushMappingToContainer LayoutGeometryMap rgm(kTraverseDocumentBoundaries); rgm.PushMappingsToAncestor(&div, nullptr); - EXPECT_EQ(FloatQuad(FloatRect(200, 200, 1, 2)), - rgm.MapToAncestor(FloatRect(0, 0, 1, 2), nullptr)); + EXPECT_EQ(PhysicalRect(200, 200, 1, 2), + rgm.MapToAncestor(PhysicalRect(0, 0, 1, 2), nullptr)); // Hit testing EXPECT_EQ(svg, HitTest(90, 90)); @@ -182,28 +170,24 @@ TEST_F(LayoutSVGForeignObjectTest, HitTestZoomedForeignObject) { EXPECT_EQ(AffineTransform(), foreign_object.LocalSVGTransform()); EXPECT_EQ(AffineTransform(), foreign_object.LocalToSVGParentTransform()); - // mapToVisualRectInAncestorSpace - LayoutRect div_rect(0, 0, 100, 50); + // MapToVisualRectInAncestorSpace + PhysicalRect div_rect(0, 0, 100, 50); EXPECT_TRUE(div.GetLayoutObject()->MapToVisualRectInAncestorSpace( &GetLayoutView(), div_rect)); - EXPECT_EQ(LayoutRect(286, 286, 339, 170), div_rect); - - // mapLocalToAncestor - TransformState transform_state(TransformState::kApplyTransformDirection, - FloatPoint()); - div.GetLayoutObject()->MapLocalToAncestor(&GetLayoutView(), transform_state, - kTraverseDocumentBoundaries); - transform_state.Flatten(); - EXPECT_EQ(FloatPoint(286.875, 286.875), transform_state.LastPlanarPoint()); - - // mapAncestorToLocal - TransformState transform_state1( - TransformState::kUnapplyInverseTransformDirection, - FloatPoint(286.875, 286.875)); - div.GetLayoutObject()->MapAncestorToLocal(&GetLayoutView(), transform_state1, - kTraverseDocumentBoundaries); - transform_state1.Flatten(); - EXPECT_EQ(FloatPoint(), transform_state1.LastPlanarPoint()); + EXPECT_EQ(PhysicalRect(286, 286, 339, 170), div_rect); + + // LocalToAncestorPoint + EXPECT_EQ( + PhysicalOffset(LayoutUnit(286.875), LayoutUnit(286.875)), + div.GetLayoutObject()->LocalToAncestorPoint( + PhysicalOffset(), &GetLayoutView(), kTraverseDocumentBoundaries)); + + // AncestorToLocalPoint + EXPECT_EQ(PhysicalOffset(), + div.GetLayoutObject()->AncestorToLocalPoint( + &GetLayoutView(), + PhysicalOffset(LayoutUnit(286.875), LayoutUnit(286.875)), + kTraverseDocumentBoundaries)); EXPECT_EQ(svg, HitTest(20, 20)); EXPECT_EQ(foreign, HitTest(280, 280)); @@ -235,21 +219,16 @@ TEST_F(LayoutSVGForeignObjectTest, HitTestViewBoxForeignObject) { const auto& foreign = *GetDocument().getElementById("foreign"); const auto& div = *GetDocument().getElementById("div"); - // mapLocalToAncestor - TransformState transform_state(TransformState::kApplyTransformDirection, - FloatPoint()); - div.GetLayoutObject()->MapLocalToAncestor(&GetLayoutView(), transform_state, - kTraverseDocumentBoundaries); - transform_state.Flatten(); - EXPECT_EQ(FloatPoint(128, 128), transform_state.LastPlanarPoint()); - - // mapAncestorToLocal - TransformState transform_state1( - TransformState::kUnapplyInverseTransformDirection, FloatPoint(128, 128)); - div.GetLayoutObject()->MapAncestorToLocal(&GetLayoutView(), transform_state1, - kTraverseDocumentBoundaries); - transform_state1.Flatten(); - EXPECT_EQ(FloatPoint(), transform_state1.LastPlanarPoint()); + // LocalToAncestorPoint + EXPECT_EQ( + PhysicalOffset(128, 128), + div.GetLayoutObject()->LocalToAncestorPoint( + PhysicalOffset(), &GetLayoutView(), kTraverseDocumentBoundaries)); + + // AncestorToLocalPoint + EXPECT_EQ(PhysicalOffset(), div.GetLayoutObject()->AncestorToLocalPoint( + &GetLayoutView(), PhysicalOffset(128, 128), + kTraverseDocumentBoundaries)); EXPECT_EQ(svg, HitTest(20, 20)); EXPECT_EQ(foreign, HitTest(120, 110)); diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_hidden_container.h b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_hidden_container.h index 2996a565405..4d2bc9bc920 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_hidden_container.h +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_hidden_container.h @@ -48,8 +48,8 @@ class LayoutSVGHiddenContainer : public LayoutSVGContainer { bool PaintedOutputOfObjectHasNoEffectRegardlessOfSize() const final { return true; } - LayoutRect VisualRectInDocument(VisualRectFlags) const final { - return LayoutRect(); + PhysicalRect VisualRectInDocument(VisualRectFlags) const final { + return PhysicalRect(); } FloatRect VisualRectInLocalSVGCoordinates() const final { return FloatRect(); diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc index 1addc049b9d..dd420d443cf 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc @@ -83,7 +83,8 @@ FloatRect LayoutSVGInline::VisualRectInLocalSVGCoordinates() const { return FloatRect(); } -LayoutRect LayoutSVGInline::VisualRectInDocument(VisualRectFlags flags) const { +PhysicalRect LayoutSVGInline::VisualRectInDocument( + VisualRectFlags flags) const { return SVGLayoutSupport::VisualRectInAncestorSpace(*this, *View(), flags); } @@ -112,16 +113,15 @@ void LayoutSVGInline::AbsoluteQuads(Vector<FloatQuad>& quads, quads.push_back(LocalToAbsoluteQuad( FloatRect(text_bounding_box.X() + box->X().ToFloat(), text_bounding_box.Y() + box->Y().ToFloat(), - box->LogicalWidth().ToFloat(), - box->LogicalHeight().ToFloat()), + box->Width().ToFloat(), box->Height().ToFloat()), mode)); } } void LayoutSVGInline::WillBeDestroyed() { SVGResourcesCache::ClientDestroyed(*this); - SVGResources::ClearClipPathFilterMask(ToSVGElement(*GetNode()), Style()); - SVGResources::ClearPaints(ToSVGElement(*GetNode()), Style()); + SVGResources::ClearClipPathFilterMask(To<SVGElement>(*GetNode()), Style()); + SVGResources::ClearPaints(To<SVGElement>(*GetNode()), Style()); LayoutInline::WillBeDestroyed(); } @@ -136,9 +136,9 @@ void LayoutSVGInline::StyleDidChange(StyleDifference diff, SetNeedsBoundariesUpdate(); LayoutInline::StyleDidChange(diff, old_style); - SVGResources::UpdateClipPathFilterMask(ToSVGElement(*GetNode()), old_style, + SVGResources::UpdateClipPathFilterMask(To<SVGElement>(*GetNode()), old_style, StyleRef()); - SVGResources::UpdatePaints(ToSVGElement(*GetNode()), old_style, StyleRef()); + SVGResources::UpdatePaints(To<SVGElement>(*GetNode()), old_style, StyleRef()); SVGResourcesCache::ClientStyleChanged(*this, diff, StyleRef()); } diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.h b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.h index 494138fbace..6322b6218cd 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.h +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.h @@ -47,12 +47,11 @@ class LayoutSVGInline : public LayoutInline { FloatRect StrokeBoundingBox() const final; FloatRect VisualRectInLocalSVGCoordinates() const final; - LayoutRect VisualRectInDocument( + PhysicalRect VisualRectInDocument( VisualRectFlags = kDefaultVisualRectFlags) const final; - void MapLocalToAncestor( - const LayoutBoxModelObject* ancestor, - TransformState&, - MapCoordinatesFlags = kApplyContainerFlip) const final; + void MapLocalToAncestor(const LayoutBoxModelObject* ancestor, + TransformState&, + MapCoordinatesFlags) const final; const LayoutObject* PushMappingToContainer( const LayoutBoxModelObject* ancestor_to_stop_at, LayoutGeometryMap&) const final; diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.cc index 4e0ca133dd4..eca55d1583a 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.cc @@ -129,8 +129,8 @@ FloatRect LayoutSVGInlineText::FloatLinesBoundingBox() const { return bounding_box; } -LayoutRect LayoutSVGInlineText::LinesBoundingBox() const { - return EnclosingLayoutRect(FloatLinesBoundingBox()); +PhysicalRect LayoutSVGInlineText::PhysicalLinesBoundingBox() const { + return PhysicalRect::EnclosingRect(FloatLinesBoundingBox()); } bool LayoutSVGInlineText::CharacterStartsNewTextChunk(int position) const { @@ -419,7 +419,7 @@ void LayoutSVGInlineText::ComputeNewScaledFontForStyle( scaled_font.Update(document.GetStyleEngine().GetFontSelector()); } -LayoutRect LayoutSVGInlineText::VisualRectInDocument( +PhysicalRect LayoutSVGInlineText::VisualRectInDocument( VisualRectFlags flags) const { return Parent()->VisualRectInDocument(flags); } diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.h b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.h index 8b1aeac7445..47c881e2308 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.h +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.h @@ -75,10 +75,10 @@ class LayoutSVGInlineText final : public LayoutText { const InlineBox*, int caret_offset, LayoutUnit* extra_width_to_end_of_line = nullptr) const override; - LayoutRect LinesBoundingBox() const override; + PhysicalRect PhysicalLinesBoundingBox() const override; InlineTextBox* CreateTextBox(int start, uint16_t length) override; - LayoutRect VisualRectInDocument(VisualRectFlags) const final; + PhysicalRect VisualRectInDocument(VisualRectFlags) const final; FloatRect VisualRectInLocalSVGCoordinates() const final; float scaling_factor_; diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc index 8bd8cc962c1..e578f5d15c5 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc @@ -54,7 +54,7 @@ void LayoutSVGModelObject::MapLocalToAncestor( SVGLayoutSupport::MapLocalToAncestor(this, ancestor, transform_state, flags); } -LayoutRect LayoutSVGModelObject::VisualRectInDocument( +PhysicalRect LayoutSVGModelObject::VisualRectInDocument( VisualRectFlags flags) const { return SVGLayoutSupport::VisualRectInAncestorSpace(*this, *View(), flags); } @@ -73,14 +73,6 @@ const LayoutObject* LayoutSVGModelObject::PushMappingToContainer( geometry_map); } -void LayoutSVGModelObject::AbsoluteRects( - Vector<IntRect>& rects, - const LayoutPoint& accumulated_offset) const { - IntRect rect = EnclosingIntRect(StrokeBoundingBox()); - rect.MoveBy(RoundedIntPoint(accumulated_offset)); - rects.push_back(rect); -} - void LayoutSVGModelObject::AbsoluteQuads(Vector<FloatQuad>& quads, MapCoordinatesFlags mode) const { quads.push_back(LocalToAbsoluteQuad(StrokeBoundingBox(), mode)); @@ -88,10 +80,11 @@ void LayoutSVGModelObject::AbsoluteQuads(Vector<FloatQuad>& quads, // This method is called from inside PaintOutline(), and since we call // PaintOutline() while transformed to our coord system, return local coords. -void LayoutSVGModelObject::AddOutlineRects(Vector<LayoutRect>& rects, - const LayoutPoint&, +void LayoutSVGModelObject::AddOutlineRects(Vector<PhysicalRect>& rects, + const PhysicalOffset&, NGOutlineType) const { - rects.push_back(LayoutRect(VisualRectInLocalSVGCoordinates())); + rects.push_back( + PhysicalRect::EnclosingRect(VisualRectInLocalSVGCoordinates())); } FloatRect LayoutSVGModelObject::LocalBoundingBoxRectForAccessibility() const { diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.h b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.h index 3656cd2c033..ab5ee1f021d 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.h +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.h @@ -47,34 +47,30 @@ class LayoutSVGModelObject : public LayoutObject { bool IsChildAllowed(LayoutObject*, const ComputedStyle&) const override; - LayoutRect VisualRectInDocument( + PhysicalRect VisualRectInDocument( VisualRectFlags = kDefaultVisualRectFlags) const override; FloatRect VisualRectInLocalSVGCoordinates() const override { return local_visual_rect_; } - void AbsoluteRects(Vector<IntRect>&, - const LayoutPoint& accumulated_offset) const final; void AbsoluteQuads(Vector<FloatQuad>&, MapCoordinatesFlags mode = 0) const override; FloatRect LocalBoundingBoxRectForAccessibility() const final; - void MapLocalToAncestor( - const LayoutBoxModelObject* ancestor, - TransformState&, - MapCoordinatesFlags = kApplyContainerFlip) const final; - void MapAncestorToLocal( - const LayoutBoxModelObject* ancestor, - TransformState&, - MapCoordinatesFlags = kApplyContainerFlip) const final; + void MapLocalToAncestor(const LayoutBoxModelObject* ancestor, + TransformState&, + MapCoordinatesFlags) const final; + void MapAncestorToLocal(const LayoutBoxModelObject* ancestor, + TransformState&, + MapCoordinatesFlags) const final; const LayoutObject* PushMappingToContainer( const LayoutBoxModelObject* ancestor_to_stop_at, LayoutGeometryMap&) const final; void StyleDidChange(StyleDifference, const ComputedStyle* old_style) override; SVGElement* GetElement() const { - return ToSVGElement(LayoutObject::GetNode()); + return To<SVGElement>(LayoutObject::GetNode()); } bool IsOfType(LayoutObjectType type) const override { @@ -88,8 +84,8 @@ class LayoutSVGModelObject : public LayoutObject { // LayoutSVGModelObject subclasses should use GetElement() instead. void GetNode() const = delete; - void AddOutlineRects(Vector<LayoutRect>&, - const LayoutPoint& additional_offset, + void AddOutlineRects(Vector<PhysicalRect>&, + const PhysicalOffset& additional_offset, NGOutlineType) const final; protected: diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_rect.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_rect.cc index f895585e42d..f65bb230fa5 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_rect.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_rect.cc @@ -134,7 +134,7 @@ bool LayoutSVGRect::DefinitelyHasSimpleStroke() const { // miterlimits, the join style used might not be correct (e.g. a miterlimit // of 1.4142135 should result in bevel joins, but may be drawn using miter // joins). - return svg_style.StrokeDashArray()->IsEmpty() && + return svg_style.StrokeDashArray()->data.IsEmpty() && svg_style.JoinStyle() == kMiterJoin && svg_style.StrokeMiterLimit() >= 1.5; } diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc index 2fc5cecdb63..ce06ebc5c63 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc @@ -148,13 +148,13 @@ void LayoutSVGResourceContainer::InvalidateCacheAndMarkForLayout( static inline void RemoveFromCacheAndInvalidateDependencies( LayoutObject& object, bool needs_layout) { - if (!object.GetNode() || !object.GetNode()->IsSVGElement()) + auto* element = DynamicTo<SVGElement>(object.GetNode()); + if (!element) return; - SVGElement& element = ToSVGElement(*object.GetNode()); if (SVGResources* resources = SVGResourcesCache::CachedResourcesForLayoutObject(object)) { - SVGResourceClient* client = element.GetSVGResourceClient(); + SVGResourceClient* client = element->GetSVGResourceClient(); if (InvalidationModeMask invalidation_mask = resources->RemoveClientFromCacheAffectingObjectBounds(*client)) { LayoutSVGResourceContainer::MarkClientForInvalidation(object, @@ -162,7 +162,7 @@ static inline void RemoveFromCacheAndInvalidateDependencies( } } - element.NotifyIncomingReferences([needs_layout](SVGElement& element) { + element->NotifyIncomingReferences([needs_layout](SVGElement& element) { DCHECK(element.GetLayoutObject()); LayoutSVGResourceContainer::MarkForLayoutAndParentResourceInvalidation( *element.GetLayoutObject(), needs_layout); diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc index 7e4d148ae32..671631334dc 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc @@ -263,7 +263,7 @@ LayoutRect LayoutSVGRoot::ComputeContentsVisualOverflow() const { } void LayoutSVGRoot::PaintReplaced(const PaintInfo& paint_info, - const LayoutPoint& paint_offset) const { + const PhysicalOffset& paint_offset) const { SVGRootPainter(*this).PaintReplaced(paint_info, paint_offset); } @@ -447,8 +447,7 @@ AffineTransform LayoutSVGRoot::LocalToSVGParentTransform() const { void LayoutSVGRoot::MapLocalToAncestor(const LayoutBoxModelObject* ancestor, TransformState& transform_state, MapCoordinatesFlags mode) const { - LayoutReplaced::MapLocalToAncestor(ancestor, transform_state, - mode | kApplyContainerFlip); + LayoutReplaced::MapLocalToAncestor(ancestor, transform_state, mode); } const LayoutObject* LayoutSVGRoot::PushMappingToContainer( @@ -479,7 +478,8 @@ bool LayoutSVGRoot::NodeAtPoint(HitTestResult& result, // supported by nodeAtFloatPoint. bool skip_children = (result.GetHitTestRequest().GetStopNode() == this); if (!skip_children && - (local_border_box_location.Intersects(PhysicalContentBoxRect()) || + (local_border_box_location.Intersects( + PhysicalContentBoxRect().ToLayoutRect()) || (!ShouldApplyViewportClip() && local_border_box_location.Intersects(VisualOverflowRect())))) { TransformedHitTestLocation local_location(local_border_box_location, diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.h b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.h index 8c057a10471..ff3fc5a5a6a 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.h +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.h @@ -117,7 +117,7 @@ class CORE_EXPORT LayoutSVGRoot final : public LayoutReplaced { LayoutUnit estimated_used_width = LayoutUnit()) const override; void UpdateLayout() override; void PaintReplaced(const PaintInfo&, - const LayoutPoint& paint_offset) const override; + const PhysicalOffset& paint_offset) const override; void WillBeDestroyed() override; void StyleDidChange(StyleDifference, const ComputedStyle* old_style) override; @@ -142,10 +142,9 @@ class CORE_EXPORT LayoutSVGRoot final : public LayoutReplaced { const LayoutPoint& accumulated_offset, HitTestAction) override; - void MapLocalToAncestor( - const LayoutBoxModelObject* ancestor, - TransformState&, - MapCoordinatesFlags = kApplyContainerFlip) const override; + void MapLocalToAncestor(const LayoutBoxModelObject* ancestor, + TransformState&, + MapCoordinatesFlags) const override; const LayoutObject* PushMappingToContainer( const LayoutBoxModelObject* ancestor_to_stop_at, LayoutGeometryMap&) const override; diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root_test.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root_test.cc index 0640e4aa5ec..b6f99daab80 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root_test.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root_test.cc @@ -28,19 +28,18 @@ TEST_F(LayoutSVGRootTest, VisualRectMappingWithoutViewportClipWithBorder) { const LayoutSVGShape& svg_rect = *ToLayoutSVGShape(GetLayoutObjectByElementId("rect")); - LayoutRect rect = SVGLayoutSupport::VisualRectInAncestorSpace(svg_rect, root); + auto rect = SVGLayoutSupport::VisualRectInAncestorSpace(svg_rect, root); // (80, 80, 100, 100) added by root's content rect offset from border rect, // not clipped. - EXPECT_EQ(LayoutRect(90, 90, 100, 100), rect); + EXPECT_EQ(PhysicalRect(90, 90, 100, 100), rect); - LayoutRect root_visual_rect = + auto root_visual_rect = static_cast<const LayoutObject&>(root).LocalVisualRect(); // SVG root's local overflow does not include overflow from descendants. - EXPECT_EQ(LayoutRect(0, 0, 220, 120), root_visual_rect); + EXPECT_EQ(PhysicalRect(0, 0, 220, 120), root_visual_rect); - rect = root_visual_rect; - EXPECT_TRUE(root.MapToVisualRectInAncestorSpace(&root, rect)); - EXPECT_EQ(LayoutRect(0, 0, 220, 120), rect); + EXPECT_TRUE(root.MapToVisualRectInAncestorSpace(&root, root_visual_rect)); + EXPECT_EQ(PhysicalRect(0, 0, 220, 120), root_visual_rect); } TEST_F(LayoutSVGRootTest, VisualOverflowExpandsLayer) { @@ -79,19 +78,18 @@ TEST_F(LayoutSVGRootTest, VisualRectMappingWithViewportClipAndBorder) { const LayoutSVGShape& svg_rect = *ToLayoutSVGShape(GetLayoutObjectByElementId("rect")); - LayoutRect rect = SVGLayoutSupport::VisualRectInAncestorSpace(svg_rect, root); - EXPECT_EQ(LayoutRect(90, 90, 100, 20), rect); + auto rect = SVGLayoutSupport::VisualRectInAncestorSpace(svg_rect, root); + EXPECT_EQ(PhysicalRect(90, 90, 100, 20), rect); - LayoutRect root_visual_rect = + auto root_visual_rect = static_cast<const LayoutObject&>(root).LocalVisualRect(); // SVG root with overflow:hidden doesn't include overflow from children, just // border box rect. - EXPECT_EQ(LayoutRect(0, 0, 220, 120), root_visual_rect); + EXPECT_EQ(PhysicalRect(0, 0, 220, 120), root_visual_rect); - rect = root_visual_rect; - EXPECT_TRUE(root.MapToVisualRectInAncestorSpace(&root, rect)); + EXPECT_TRUE(root.MapToVisualRectInAncestorSpace(&root, root_visual_rect)); // LayoutSVGRoot should not apply overflow clip on its own rect. - EXPECT_EQ(LayoutRect(0, 0, 220, 120), rect); + EXPECT_EQ(PhysicalRect(0, 0, 220, 120), root_visual_rect); } TEST_F(LayoutSVGRootTest, diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc index 7244b3ee84e..11d4e5dc3fd 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc @@ -82,7 +82,7 @@ void LayoutSVGShape::CreatePath() { } float LayoutSVGShape::DashScaleFactor() const { - if (!StyleRef().SvgStyle().StrokeDashArray()->size()) + if (StyleRef().SvgStyle().StrokeDashArray()->data.IsEmpty()) return 1; return ToSVGGeometryElement(*GetElement()).PathLengthScaleFactor(); } diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc index ca49760d490..334d7644fca 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc @@ -189,6 +189,8 @@ void LayoutSVGText::UpdateLayout() { DCHECK(!needs_reordering_); LayoutAnalyzer::Scope analyzer(*this); + ClearOffsetMappingIfNeeded(); + // When laying out initially, build the character data map and propagate // resulting layout attributes to all LayoutSVGInlineText children in the // subtree. @@ -413,10 +415,10 @@ FloatRect LayoutSVGText::VisualRectInLocalSVGCoordinates() const { return visual_rect; } -void LayoutSVGText::AddOutlineRects(Vector<LayoutRect>& rects, - const LayoutPoint&, +void LayoutSVGText::AddOutlineRects(Vector<PhysicalRect>& rects, + const PhysicalOffset&, NGOutlineType) const { - rects.push_back(LayoutRect(ObjectBoundingBox())); + rects.push_back(PhysicalRect::EnclosingRect(ObjectBoundingBox())); } bool LayoutSVGText::IsObjectBoundingBoxValid() const { diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.h b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.h index bf9845cc258..852d90e209e 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.h +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.h @@ -46,8 +46,8 @@ class LayoutSVGText final : public LayoutSVGBlock { FloatRect StrokeBoundingBox() const override; bool IsObjectBoundingBoxValid() const; - void AddOutlineRects(Vector<LayoutRect>&, - const LayoutPoint& additional_offset, + void AddOutlineRects(Vector<PhysicalRect>&, + const PhysicalOffset& additional_offset, NGOutlineType) const override; static LayoutSVGText* LocateLayoutSVGTextAncestor(LayoutObject*); diff --git a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_transformable_container.cc b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_transformable_container.cc index 9859027a6fa..92f8d554867 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_transformable_container.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/layout_svg_transformable_container.cc @@ -35,7 +35,8 @@ LayoutSVGTransformableContainer::LayoutSVGTransformableContainer( static bool HasValidPredecessor(const Node* node) { DCHECK(node); for (node = node->previousSibling(); node; node = node->previousSibling()) { - if (node->IsSVGElement() && ToSVGElement(node)->IsValid()) + auto* svg_element = DynamicTo<SVGElement>(node); + if (svg_element && svg_element->IsValid()) return true; } return false; @@ -48,8 +49,8 @@ bool LayoutSVGTransformableContainer::IsChildAllowed( Node* child_node = child->GetNode(); if (IsSVGSwitchElement(*GetElement())) { // Reject non-SVG/non-valid elements. - if (!child_node || !child_node->IsSVGElement() || - !ToSVGElement(child_node)->IsValid()) { + auto* svg_element = DynamicTo<SVGElement>(child_node); + if (!svg_element || !svg_element->IsValid()) { return false; } // Reject this child if it isn't the first valid node. diff --git a/chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc b/chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc index 83b72dc1632..22bb64f4308 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc @@ -24,6 +24,7 @@ #include "third_party/blink/renderer/core/layout/svg/svg_layout_support.h" +#include "third_party/blink/renderer/core/layout/geometry/transform_state.h" #include "third_party/blink/renderer/core/layout/layout_geometry_map.h" #include "third_party/blink/renderer/core/layout/subtree_layout_scope.h" #include "third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object.h" @@ -45,7 +46,6 @@ #include "third_party/blink/renderer/core/svg/svg_element.h" #include "third_party/blink/renderer/core/svg/svg_length_context.h" #include "third_party/blink/renderer/platform/graphics/stroke_data.h" -#include "third_party/blink/renderer/platform/transforms/transform_state.h" #include "third_party/blink/renderer/platform/wtf/math_extras.h" namespace blink { @@ -74,29 +74,29 @@ FloatRect SVGLayoutSupport::LocalVisualRect(const LayoutObject& object) { return visual_rect; } -LayoutRect SVGLayoutSupport::VisualRectInAncestorSpace( +PhysicalRect SVGLayoutSupport::VisualRectInAncestorSpace( const LayoutObject& object, const LayoutBoxModelObject& ancestor, VisualRectFlags flags) { - LayoutRect rect; + PhysicalRect rect; MapToVisualRectInAncestorSpace(object, &ancestor, LocalVisualRect(object), rect, flags); return rect; } -LayoutRect SVGLayoutSupport::TransformVisualRect( +PhysicalRect SVGLayoutSupport::TransformVisualRect( const LayoutObject& object, const AffineTransform& root_transform, const FloatRect& local_rect) { FloatRect adjusted_rect = root_transform.MapRect(local_rect); if (adjusted_rect.IsEmpty()) - return LayoutRect(); + return PhysicalRect(); - // Use enclosingIntRect because we cannot properly apply subpixel offset of + // Use EnclosingIntRect because we cannot properly apply subpixel offset of // the SVGRoot since we don't know the desired subpixel accumulation at this // point. - return LayoutRect(EnclosingIntRect(adjusted_rect)); + return PhysicalRect(EnclosingIntRect(adjusted_rect)); } static const LayoutSVGRoot& ComputeTransformToSVGRoot( @@ -117,7 +117,7 @@ bool SVGLayoutSupport::MapToVisualRectInAncestorSpace( const LayoutObject& object, const LayoutBoxModelObject* ancestor, const FloatRect& local_visual_rect, - LayoutRect& result_rect, + PhysicalRect& result_rect, VisualRectFlags visual_rect_flags) { AffineTransform root_border_box_transform; const LayoutSVGRoot& svg_root = @@ -127,7 +127,7 @@ bool SVGLayoutSupport::MapToVisualRectInAncestorSpace( // Apply initial viewport clip. if (svg_root.ShouldApplyViewportClip()) { - LayoutRect clip_rect(svg_root.OverflowClipRect(LayoutPoint())); + PhysicalRect clip_rect(svg_root.OverflowClipRect(PhysicalOffset())); if (visual_rect_flags & kEdgeInclusive) { if (!result_rect.InclusiveIntersect(clip_rect)) return false; @@ -174,8 +174,7 @@ void SVGLayoutSupport::MapAncestorToLocal(const LayoutObject& object, const LayoutSVGRoot& svg_root = ComputeTransformToSVGRoot(object, local_to_svg_root); - MapCoordinatesFlags mode = flags | kUseTransforms | kApplyContainerFlip; - svg_root.MapAncestorToLocal(ancestor, transform_state, mode); + svg_root.MapAncestorToLocal(ancestor, transform_state, flags); transform_state.ApplyTransform(local_to_svg_root); } @@ -328,9 +327,7 @@ void SVGLayoutSupport::LayoutChildren(LayoutObject* first_child, if (layout_size_changed) { // When selfNeedsLayout is false and the layout size changed, we have to // check whether this child uses relative lengths - if (SVGElement* element = child->GetNode()->IsSVGElement() - ? ToSVGElement(child->GetNode()) - : nullptr) { + if (auto* element = DynamicTo<SVGElement>(child->GetNode())) { if (element->HasRelativeLengths()) { // FIXME: this should be done on invalidation, not during layout. // When the layout size changed and when using relative values tell @@ -463,7 +460,7 @@ DashArray SVGLayoutSupport::ResolveSVGDashArray( const ComputedStyle& style, const SVGLengthContext& length_context) { DashArray dash_array; - for (const Length& dash_length : svg_dash_array.GetVector()) + for (const Length& dash_length : svg_dash_array.data) dash_array.push_back(length_context.ValueForLength(dash_length, style)); return dash_array; } @@ -477,7 +474,7 @@ void SVGLayoutSupport::ApplyStrokeStyleToStrokeData(StrokeData& stroke_data, const SVGComputedStyle& svg_style = style.SvgStyle(); - SVGLengthContext length_context(ToSVGElement(object.GetNode())); + SVGLengthContext length_context(To<SVGElement>(object.GetNode())); stroke_data.SetThickness( length_context.ValueForLength(svg_style.StrokeWidth())); stroke_data.SetLineCap(svg_style.CapStyle()); diff --git a/chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.h b/chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.h index 3f1e843d1e3..ddd5082c70e 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.h +++ b/chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.h @@ -35,7 +35,6 @@ namespace blink { class AffineTransform; class FloatPoint; class FloatRect; -class LayoutRect; class LayoutGeometryMap; class LayoutBoxModelObject; class LayoutObject; @@ -96,18 +95,18 @@ class CORE_EXPORT SVGLayoutSupport { // Important functions used by nearly all SVG layoutObjects centralizing // coordinate transformations / visual rect calculations static FloatRect LocalVisualRect(const LayoutObject&); - static LayoutRect VisualRectInAncestorSpace( + static PhysicalRect VisualRectInAncestorSpace( const LayoutObject&, const LayoutBoxModelObject& ancestor, VisualRectFlags = kDefaultVisualRectFlags); - static LayoutRect TransformVisualRect(const LayoutObject&, - const AffineTransform&, - const FloatRect&); + static PhysicalRect TransformVisualRect(const LayoutObject&, + const AffineTransform&, + const FloatRect&); static bool MapToVisualRectInAncestorSpace( const LayoutObject&, const LayoutBoxModelObject* ancestor, const FloatRect& local_visual_rect, - LayoutRect& result_rect, + PhysicalRect& result_rect, VisualRectFlags = kDefaultVisualRectFlags); static void MapLocalToAncestor(const LayoutObject*, const LayoutBoxModelObject* ancestor, diff --git a/chromium/third_party/blink/renderer/core/layout/svg/svg_resources.cc b/chromium/third_party/blink/renderer/core/layout/svg/svg_resources.cc index 7a847601955..c2933d40a9e 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/svg_resources.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/svg_resources.cc @@ -37,7 +37,7 @@ #include "third_party/blink/renderer/core/svg/svg_uri_reference.h" #include "third_party/blink/renderer/core/svg_names.h" -#ifndef NDEBUG +#if DCHECK_IS_ON() #include <stdio.h> #endif @@ -48,7 +48,7 @@ using namespace svg_names; SVGResources::SVGResources() : linked_resource_(nullptr) {} SVGResourceClient* SVGResources::GetClient(const LayoutObject& object) { - return ToSVGElement(object.GetNode())->GetSVGResourceClient(); + return To<SVGElement>(object.GetNode())->GetSVGResourceClient(); } static HashSet<AtomicString>& ClipperFilterMaskerTags() { @@ -159,7 +159,7 @@ std::unique_ptr<SVGResources> SVGResources::BuildResources( DCHECK(node); SECURITY_DCHECK(node->IsSVGElement()); - SVGElement& element = ToSVGElement(*node); + auto& element = To<SVGElement>(*node); const AtomicString& tag_name = element.localName(); DCHECK(!tag_name.IsNull()); @@ -557,7 +557,7 @@ void SVGResources::SetLinkedResource( linked_resource_ = linked_resource; } -#ifndef NDEBUG +#if DCHECK_IS_ON() void SVGResources::Dump(const LayoutObject* object) { DCHECK(object); DCHECK(object->GetNode()); diff --git a/chromium/third_party/blink/renderer/core/layout/svg/svg_resources.h b/chromium/third_party/blink/renderer/core/layout/svg/svg_resources.h index 44f2d0b3ecb..9c6e12a91d4 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/svg_resources.h +++ b/chromium/third_party/blink/renderer/core/layout/svg/svg_resources.h @@ -116,7 +116,7 @@ class SVGResources { void ResourceDestroyed(LayoutSVGResourceContainer*); void ClearReferencesTo(LayoutSVGResourceContainer*); -#ifndef NDEBUG +#if DCHECK_IS_ON() void Dump(const LayoutObject*); #endif diff --git a/chromium/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc b/chromium/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc index 37932071fb5..30fc8f834a4 100644 --- a/chromium/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc +++ b/chromium/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc @@ -217,7 +217,7 @@ SVGResourcesCache::TemporaryStyleScope::TemporaryStyleScope( if (styles_are_equal_) return; DCHECK(LayoutObjectCanHaveResources(layout_object_)); - SVGElement& element = ToSVGElement(*layout_object_.GetNode()); + auto& element = To<SVGElement>(*layout_object_.GetNode()); SVGResources::UpdatePaints(element, nullptr, temporary_style_); SwitchTo(temporary_style); } @@ -225,7 +225,7 @@ SVGResourcesCache::TemporaryStyleScope::TemporaryStyleScope( SVGResourcesCache::TemporaryStyleScope::~TemporaryStyleScope() { if (styles_are_equal_) return; - SVGElement& element = ToSVGElement(*layout_object_.GetNode()); + auto& element = To<SVGElement>(*layout_object_.GetNode()); SVGResources::ClearPaints(element, &temporary_style_); SwitchTo(original_style_); } |