Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(530)

Unified Diff: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp

Issue 2449953005: [SPInvalidation] Handle pixel-snapping of paint invalidation rects (Closed)
Patch Set: PaintInvalidationRectInBacking struct Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 b50102f22fbb212c1b9d877fe78e9a6ece926430..e564d06dddeee4741123a7214405e3f6cc125b4d 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
@@ -1698,6 +1698,41 @@ TEST_P(PaintPropertyTreeBuilderTest, SvgPixelSnappingShouldResetPaintOffset) {
rectWithTransformProperties->transform()->parent());
}
+TEST_P(PaintPropertyTreeBuilderTest, SvgRootAndForeignObjectPixelSnapping) {
+ setBodyInnerHTML(
+ "<svg id=svg style='position: relative; left: 0.6px; top: 0.3px'>"
+ " <foreignObject id=foreign x='3.5' y='5.4' transform='translate(1,1)'>"
+ " <div id=div style='position: absolute; left: 5.6px; top: 7.3px'>"
+ " </div>"
+ " </foreignObject>"
+ "</svg>");
+
+ const auto* svgProperties =
+ getLayoutObjectByElementId("svg")->paintProperties();
+ EXPECT_EQ(nullptr, svgProperties->paintOffsetTranslation());
+ EXPECT_EQ(LayoutPoint(LayoutUnit(8.6), LayoutUnit(8.3)),
+ svgProperties->localBorderBoxProperties()->paintOffset);
+ // Paint offset of SVGRoot be baked into svgLocalToBorderBoxTransform after
+ // snapped to pixels.
+ EXPECT_EQ(TransformationMatrix().translate(9, 8),
+ svgProperties->svgLocalToBorderBoxTransform()->matrix());
+
+ const auto* foreignObjectProperties =
+ getLayoutObjectByElementId("foreign")->paintProperties();
+ EXPECT_EQ(nullptr, foreignObjectProperties->paintOffsetTranslation());
+ // Paint offset of foreignObject should be originated from SVG root and
+ // snapped to pixels.
+ EXPECT_EQ(LayoutPoint(4, 5),
+ foreignObjectProperties->localBorderBoxProperties()->paintOffset);
+
+ const auto* divProperties =
+ getLayoutObjectByElementId("div")->paintProperties();
+ // Paint offset of descendant of foreignObject accumulates on paint offset of
+ // foreignObject.
+ EXPECT_EQ(LayoutPoint(LayoutUnit(4 + 5.6), LayoutUnit(5 + 7.3)),
+ divProperties->localBorderBoxProperties()->paintOffset);
+}
+
TEST_P(PaintPropertyTreeBuilderTest, NoRenderingContextByDefault) {
setBodyInnerHTML("<div style='transform: translateZ(0)'></div>");

Powered by Google App Engine
This is Rietveld 408576698