Commit 04e20c3f authored by Xianzhu Wang's avatar Xianzhu Wang Committed by Commit Bot

[SPv175+] Correct SVG mask clip

Consider <mask> element's bounds.

Bug: 807379
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I2f78202095881318f9d8b09c190354ea2b9decd6
Reviewed-on: https://chromium-review.googlesource.com/896232
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Reviewed-by: default avatarTien-Ren Chen <trchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#533590}
parent 89d19f29
...@@ -93,11 +93,6 @@ crbug.com/771643 external/wpt/css/css-backgrounds/background-attachment-local/at ...@@ -93,11 +93,6 @@ crbug.com/771643 external/wpt/css/css-backgrounds/background-attachment-local/at
crbug.com/771643 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html [ Failure ] crbug.com/771643 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html [ Failure ]
# This will pass with --root-layer-scrolls. # This will pass with --root-layer-scrolls.
crbug.com/771643 scrollbars/custom-scrollbars-paint-outside-iframe.html [ Failure ] crbug.com/771643 scrollbars/custom-scrollbars-paint-outside-iframe.html [ Failure ]
# A few (sub?)-pixels clipped off.
crbug.com/771643 svg/as-background-image/svg-as-background-6.html [ Failure ]
# Mask clip issue.
crbug.com/771643 svg/batik/masking/maskRegions.svg [ Failure ]
crbug.com/771643 svg/zoom/page/zoom-mask-with-percentages.svg [ Failure ]
# Incorect LocalBorderBoxProperties for absolute-pos under transformed table section. # Incorect LocalBorderBoxProperties for absolute-pos under transformed table section.
crbug.com/771643 tables/table-transform-absolute-position-child.html [ Failure ] crbug.com/771643 tables/table-transform-absolute-position-child.html [ Failure ]
# Others. # Others.
......
...@@ -87,8 +87,6 @@ crbug.com/771643 virtual/spv175/compositing/overflow/nested-border-radius-clippi ...@@ -87,8 +87,6 @@ crbug.com/771643 virtual/spv175/compositing/overflow/nested-border-radius-clippi
crbug.com/771643 virtual/spv175/fast/multicol/border-radius-clipped-layer.html [ Failure ] crbug.com/771643 virtual/spv175/fast/multicol/border-radius-clipped-layer.html [ Failure ]
crbug.com/771643 virtual/spv175/fast/multicol/mixed-opacity-test.html [ Failure ] crbug.com/771643 virtual/spv175/fast/multicol/mixed-opacity-test.html [ Failure ]
crbug.com/771643 virtual/spv175/fast/multicol/multicol-svg.html [ Failure ] crbug.com/771643 virtual/spv175/fast/multicol/multicol-svg.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/svg/absolute-sized-content-with-resources.xhtml [ Failure ]
crbug.com/805049 [ Mac ] virtual/spv175/compositing/iframes/fixed-position-iframe.html [ Pass Crash ] crbug.com/805049 [ Mac ] virtual/spv175/compositing/iframes/fixed-position-iframe.html [ Pass Crash ]
# spv175+root-layer-scrolls failures. They also fail with root-layer-scrolls without enable-slimming-paint-v175. # spv175+root-layer-scrolls failures. They also fail with root-layer-scrolls without enable-slimming-paint-v175.
......
{
"layers": [
{
"name": "LayoutView #document",
"bounds": [800, 600],
"backgroundColor": "#FFFFFF"
},
{
"name": "Scrolling Layer",
"bounds": [800, 600],
"drawsContent": false
},
{
"name": "Scrolling Contents Layer",
"bounds": [800, 600],
"contentsOpaque": true,
"backgroundColor": "#FFFFFF",
"paintInvalidations": [
{
"object": "LayoutBlockFlow div id='contentBox'",
"rect": [8, 52, 402, 402],
"reason": "geometry"
},
{
"object": "LayoutSVGRect rect",
"rect": [42, 119, 334, 268],
"reason": "paint property change"
},
{
"object": "LayoutSVGRect rect",
"rect": [42, 119, 334, 268],
"reason": "paint property change"
},
{
"object": "LayoutSVGRect rect",
"rect": [17, 219, 84, 68],
"reason": "paint property change"
},
{
"object": "LayoutSVGRect rect",
"rect": [17, 219, 84, 68],
"reason": "paint property change"
}
]
}
],
"objectPaintInvalidations": [
{
"object": "LayoutBlockFlow div id='contentBox'",
"reason": "geometry"
},
{
"object": "RootInlineBox",
"reason": "geometry"
},
{
"object": "LayoutSVGRoot svg",
"reason": "geometry"
},
{
"object": "LayoutSVGRect rect",
"reason": "SVG resource change"
}
]
}
...@@ -24,7 +24,7 @@ Optional<IntRect> CSSMaskPainter::MaskBoundingBox( ...@@ -24,7 +24,7 @@ Optional<IntRect> CSSMaskPainter::MaskBoundingBox(
LayoutSVGResourceMasker* masker = resources ? resources->Masker() : nullptr; LayoutSVGResourceMasker* masker = resources ? resources->Masker() : nullptr;
if (!masker) if (!masker)
return WTF::nullopt; return WTF::nullopt;
return EnclosingIntRect(object.ObjectBoundingBox()); return EnclosingIntRect(masker->ResourceBoundingBox(&object));
} }
const ComputedStyle& style = object.StyleRef(); const ComputedStyle& style = object.StyleRef();
......
...@@ -28,7 +28,7 @@ TEST_F(CSSMaskPainterTest, MaskBoundingBoxSVG) { ...@@ -28,7 +28,7 @@ TEST_F(CSSMaskPainterTest, MaskBoundingBoxSVG) {
Optional<IntRect> mask_bounding_box = Optional<IntRect> mask_bounding_box =
CSSMaskPainter::MaskBoundingBox(masked, LayoutPoint()); CSSMaskPainter::MaskBoundingBox(masked, LayoutPoint());
ASSERT_TRUE(mask_bounding_box.has_value()); ASSERT_TRUE(mask_bounding_box.has_value());
EXPECT_EQ(IntRect(50, 50, 150, 150), *mask_bounding_box); EXPECT_EQ(IntRect(75, 75, 100, 100), *mask_bounding_box);
} }
TEST_F(CSSMaskPainterTest, MaskBoundingBoxCSSBlock) { TEST_F(CSSMaskPainterTest, MaskBoundingBoxCSSBlock) {
......
...@@ -985,13 +985,13 @@ TEST_P(PaintPropertyTreeUpdateTest, SVGMaskTargetBoundsChange) { ...@@ -985,13 +985,13 @@ TEST_P(PaintPropertyTreeUpdateTest, SVGMaskTargetBoundsChange) {
EXPECT_NE(nullptr, properties->Mask()); EXPECT_NE(nullptr, properties->Mask());
const auto* mask_clip = properties->MaskClip(); const auto* mask_clip = properties->MaskClip();
ASSERT_NE(nullptr, mask_clip); ASSERT_NE(nullptr, mask_clip);
EXPECT_EQ(FloatRoundedRect(0, 50, 50, 100), mask_clip->ClipRect()); EXPECT_EQ(FloatRoundedRect(0, 50, 100, 150), mask_clip->ClipRect());
GetDocument().getElementById("rect")->setAttribute("width", "200"); GetDocument().getElementById("rect")->setAttribute("width", "200");
GetDocument().View()->UpdateAllLifecyclePhases(); GetDocument().View()->UpdateAllLifecyclePhases();
EXPECT_NE(nullptr, properties->Effect()); EXPECT_NE(nullptr, properties->Effect());
EXPECT_NE(nullptr, properties->Mask()); EXPECT_NE(nullptr, properties->Mask());
EXPECT_EQ(FloatRoundedRect(0, 50, 200, 100), mask_clip->ClipRect()); EXPECT_EQ(FloatRoundedRect(0, 50, 100, 150), mask_clip->ClipRect());
} }
TEST_P(PaintPropertyTreeUpdateTest, WillTransformChangeAboveFixed) { TEST_P(PaintPropertyTreeUpdateTest, WillTransformChangeAboveFixed) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment