Index: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
index 92b8bfa9016ba4dbf07b7bb1e9eee0a1bc5701fe..466906e8a5de97fb1bc32f72d39a4f0600b4dadd 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
@@ -1086,4 +1086,25 @@ TEST_F(PaintPropertyTreeBuilderTest, PaintOffsetWithPixelSnappingWithFixedPos) |
EXPECT_EQ(dPaintOffset, dProperties->localBorderBoxProperties()->paintOffset); |
} |
+TEST_F(PaintPropertyTreeBuilderTest, SvgPixelSnappingShouldResetPaintOffset) |
+{ |
+ setBodyInnerHTML( |
+ "<svg id='svg' style='position: relative; left: 0.1px; transform: matrix(1, 0, 0, 1, 0, 0);'>" |
+ " <rect id='rect' transform='translate(1, 1)'/>" |
+ "</svg>"); |
+ |
+ LayoutObject& svgWithTransform = *document().getElementById("svg")->layoutObject(); |
+ ObjectPaintProperties* svgWithTransformProperties = svgWithTransform.objectPaintProperties(); |
+ EXPECT_EQ(TransformationMatrix(), svgWithTransformProperties->transform()->matrix()); |
+ EXPECT_EQ(LayoutPoint(FloatPoint(0.1, 0)), svgWithTransformProperties->localBorderBoxProperties()->paintOffset); |
+ EXPECT_EQ(nullptr, svgWithTransformProperties->svgLocalToBorderBoxTransform()); |
+ |
+ LayoutObject& rectWithTransform = *document().getElementById("rect")->layoutObject(); |
+ ObjectPaintProperties* rectWithTransformProperties = rectWithTransform.objectPaintProperties(); |
+ EXPECT_EQ(TransformationMatrix().translate(1, 1), rectWithTransformProperties->transform()->matrix()); |
+ |
+ // Ensure there is no PaintOffset transform between the rect and the svg's transform. |
+ EXPECT_EQ(svgWithTransformProperties->transform(), rectWithTransformProperties->transform()->parent()); |
+} |
+ |
} // namespace blink |