summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/layout/svg
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-07-31 15:50:41 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-08-30 12:35:23 +0000
commit7b2ffa587235a47d4094787d72f38102089f402a (patch)
tree30e82af9cbab08a7fa028bb18f4f2987a3f74dfa /chromium/third_party/blink/renderer/core/layout/svg
parentd94af01c90575348c4e81a418257f254b6f8d225 (diff)
downloadqtwebengine-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')
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc22
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_block.h19
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_ellipse.cc2
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object_test.cc141
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_hidden_container.h4
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc14
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline.h9
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.cc6
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.h4
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc17
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.h24
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_rect.cc2
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc8
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc8
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root.h9
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_root_test.cc26
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc2
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc8
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_text.h4
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/layout_svg_transformable_container.cc7
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc29
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/svg_layout_support.h11
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/svg_resources.cc8
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/svg_resources.h2
-rw-r--r--chromium/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc4
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_);
}