Title: [163618] trunk
Revision
163618
Author
[email protected]
Date
2014-02-07 02:44:10 -0800 (Fri, 07 Feb 2014)

Log Message

Vector-effect updates require a re-layout
https://bugs.webkit.org/show_bug.cgi?id=127553

Patch by Peter Molnar <[email protected]> on 2014-02-07
Reviewed by Andreas Kling.

As noted in the stale SVGRenderStyle::diff() comment, now that layout() observes vector-effect
we need to trigger a re-layout on attribute changes.

Merged from Blink: https://src.chromium.org/viewvc/blink?revision=152570&view=revision

Source/WebCore:

Tests: svg/custom/non-scaling-stroke-update-expected.svg
       svg/custom/non-scaling-stroke-update.svg

* rendering/style/SVGRenderStyle.cpp:
(WebCore::SVGRenderStyle::diff):

LayoutTests:

* svg/custom/non-scaling-stroke-update-expected.svg: Added.
* svg/custom/non-scaling-stroke-update.svg: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (163617 => 163618)


--- trunk/LayoutTests/ChangeLog	2014-02-07 10:21:15 UTC (rev 163617)
+++ trunk/LayoutTests/ChangeLog	2014-02-07 10:44:10 UTC (rev 163618)
@@ -1,3 +1,18 @@
+2014-02-07  Peter Molnar  <[email protected]>
+
+        Vector-effect updates require a re-layout
+        https://bugs.webkit.org/show_bug.cgi?id=127553
+
+        Reviewed by Andreas Kling.
+
+        As noted in the stale SVGRenderStyle::diff() comment, now that layout() observes vector-effect
+        we need to trigger a re-layout on attribute changes.
+
+        Merged from Blink: https://src.chromium.org/viewvc/blink?revision=152570&view=revision
+
+        * svg/custom/non-scaling-stroke-update-expected.svg: Added.
+        * svg/custom/non-scaling-stroke-update.svg: Added.
+
 2014-02-07  ChangSeok Oh  <[email protected]>
 
         Unreviewed GTK port gardening

Added: trunk/LayoutTests/svg/custom/non-scaling-stroke-update-expected.svg (0 => 163618)


--- trunk/LayoutTests/svg/custom/non-scaling-stroke-update-expected.svg	                        (rev 0)
+++ trunk/LayoutTests/svg/custom/non-scaling-stroke-update-expected.svg	2014-02-07 10:44:10 UTC (rev 163618)
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" _onload_="runTest()">
+  <g transform="scale(4)">
+    <rect id="rect" x="25" y="25" width="25" height="25" fill="green" stroke-width="1" stroke="black" vector-effect="non-scaling-stroke"/>
+  </g>
+</svg>

Added: trunk/LayoutTests/svg/custom/non-scaling-stroke-update.svg (0 => 163618)


--- trunk/LayoutTests/svg/custom/non-scaling-stroke-update.svg	                        (rev 0)
+++ trunk/LayoutTests/svg/custom/non-scaling-stroke-update.svg	2014-02-07 10:44:10 UTC (rev 163618)
@@ -0,0 +1,24 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <!-- Test for crbug.com/250001 -->
+  <g transform="scale(4)">
+    <rect id="clear_rect" width="100%" height="100%"/>
+    <rect id="rect" x="25" y="25" width="25" height="25" fill="green" stroke-width="1" stroke="black"/>
+  </g>
+
+  <script>
+    if (window.testRunner) {
+        testRunner.display();
+        testRunner.waitUntilDone();
+        setTimeout(runTest, 0);
+    } else {
+        setTimeout(runTest, 200);
+    }
+
+    function runTest() {
+document.getElementById('clear_rect').setAttribute('fill', 'white');
+document.getElementById('rect').setAttribute('vector-effect', 'non-scaling-stroke');
+if (window.testRunner)
+    testRunner.notifyDone();
+    }
+  </script>
+</svg>

Modified: trunk/Source/WebCore/ChangeLog (163617 => 163618)


--- trunk/Source/WebCore/ChangeLog	2014-02-07 10:21:15 UTC (rev 163617)
+++ trunk/Source/WebCore/ChangeLog	2014-02-07 10:44:10 UTC (rev 163618)
@@ -1,3 +1,21 @@
+2014-02-07  Peter Molnar  <[email protected]>
+
+        Vector-effect updates require a re-layout
+        https://bugs.webkit.org/show_bug.cgi?id=127553
+
+        Reviewed by Andreas Kling.
+
+        As noted in the stale SVGRenderStyle::diff() comment, now that layout() observes vector-effect
+        we need to trigger a re-layout on attribute changes.
+
+        Merged from Blink: https://src.chromium.org/viewvc/blink?revision=152570&view=revision
+
+        Tests: svg/custom/non-scaling-stroke-update-expected.svg
+               svg/custom/non-scaling-stroke-update.svg
+
+        * rendering/style/SVGRenderStyle.cpp:
+        (WebCore::SVGRenderStyle::diff):
+
 2014-02-07  Laszlo Vidacs  <[email protected]>
 
         Renaming isTableElement() to isRenderedTable() as per the FIXME comment

Modified: trunk/Source/WebCore/rendering/style/SVGRenderStyle.cpp (163617 => 163618)


--- trunk/Source/WebCore/rendering/style/SVGRenderStyle.cpp	2014-02-07 10:21:15 UTC (rev 163617)
+++ trunk/Source/WebCore/rendering/style/SVGRenderStyle.cpp	2014-02-07 10:44:10 UTC (rev 163618)
@@ -202,6 +202,10 @@
         return StyleDifferenceRepaint;
     }
 
+    // vector-effect changes require a re-layout.
+    if (svg_noninherited_flags.f._vectorEffect != other->svg_noninherited_flags.f._vectorEffect)
+        return StyleDifferenceLayout;
+
     // NOTE: All comparisions below may only return StyleDifferenceRepaint
 
     // Painting related properties only need repaints. 
@@ -230,10 +234,6 @@
         || svg_inherited_flags._colorInterpolationFilters != other->svg_inherited_flags._colorInterpolationFilters)
         return StyleDifferenceRepaint;
 
-    // FIXME: vector-effect is not taken into account in the layout-phase. Once this is fixed, we should relayout here.
-    if (svg_noninherited_flags.f._vectorEffect != other->svg_noninherited_flags.f._vectorEffect)
-        return StyleDifferenceRepaint;
-
     if (svg_noninherited_flags.f.bufferedRendering != other->svg_noninherited_flags.f.bufferedRendering)
         return StyleDifferenceRepaint;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to