Title: [164861] trunk
Revision
164861
Author
commit-qu...@webkit.org
Date
2014-02-28 08:35:27 -0800 (Fri, 28 Feb 2014)

Log Message

ASSERTION FAILED: roundedIntPoint(rendererMappedResult) == roundedIntPoint(result) in WebCore::RenderGeometryMap::mapToContainer
https://bugs.webkit.org/show_bug.cgi?id=119626

Source/WebCore:

SVGRenderSupport::mapLocalToContainer() was trying to apply transforms
in the incorrect order. Specifically, it would attempt to apply its
localToParentTransform before its localToBorderBoxTransform. This
was causing an ASSERT to fail when the computed transforms didn't
match up to those computed by RenderGeometryMap.

Backported from Blink: https://codereview.chromium.org/143363004

Patch by Martin Hodovan <mhodo...@inf.u-szeged.hu> on 2014-02-28
Reviewed by Simon Fraser.

Test: svg/transforms/svg-geometry-crash.html

* rendering/svg/SVGRenderSupport.cpp:
(WebCore::SVGRenderSupport::mapLocalToContainer):

LayoutTests:

Backported from Blink: https://codereview.chromium.org/143363004

Patch by Martin Hodovan <mhodo...@inf.u-szeged.hu> on 2014-02-28
Reviewed by Simon Fraser.

* svg/transforms/svg-geometry-crash-expected.txt: Added.
* svg/transforms/svg-geometry-crash.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (164860 => 164861)


--- trunk/LayoutTests/ChangeLog	2014-02-28 15:52:17 UTC (rev 164860)
+++ trunk/LayoutTests/ChangeLog	2014-02-28 16:35:27 UTC (rev 164861)
@@ -1,3 +1,15 @@
+2014-02-28  Martin Hodovan  <mhodo...@inf.u-szeged.hu>
+
+        ASSERTION FAILED: roundedIntPoint(rendererMappedResult) == roundedIntPoint(result) in WebCore::RenderGeometryMap::mapToContainer
+        https://bugs.webkit.org/show_bug.cgi?id=119626
+
+        Backported from Blink: https://codereview.chromium.org/143363004
+
+        Reviewed by Simon Fraser.
+
+        * svg/transforms/svg-geometry-crash-expected.txt: Added.
+        * svg/transforms/svg-geometry-crash.html: Added.
+
 2014-02-28  Commit Queue  <commit-qu...@webkit.org>
 
         Unreviewed, rolling out r164859.

Added: trunk/LayoutTests/svg/transforms/svg-geometry-crash-expected.txt (0 => 164861)


--- trunk/LayoutTests/svg/transforms/svg-geometry-crash-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/transforms/svg-geometry-crash-expected.txt	2014-02-28 16:35:27 UTC (rev 164861)
@@ -0,0 +1,2 @@
+
+This test passes if it does not crash.

Added: trunk/LayoutTests/svg/transforms/svg-geometry-crash.html (0 => 164861)


--- trunk/LayoutTests/svg/transforms/svg-geometry-crash.html	                        (rev 0)
+++ trunk/LayoutTests/svg/transforms/svg-geometry-crash.html	2014-02-28 16:35:27 UTC (rev 164861)
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script>
+    if (window.testRunner)
+        testRunner.dumpAsText();
+    </script>
+  </head>
+  <body>
+    <svg viewbox="0 0 1000 500">
+      <g transform="scale(3.0)">
+        <foreignobject width="300" height="50">
+          <textarea>scaled text</textarea>
+        </foreignobject>
+      </g>
+    </svg>
+    This test passes if it does not crash.
+  </body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (164860 => 164861)


--- trunk/Source/WebCore/ChangeLog	2014-02-28 15:52:17 UTC (rev 164860)
+++ trunk/Source/WebCore/ChangeLog	2014-02-28 16:35:27 UTC (rev 164861)
@@ -1,3 +1,23 @@
+2014-02-28  Martin Hodovan  <mhodo...@inf.u-szeged.hu>
+
+        ASSERTION FAILED: roundedIntPoint(rendererMappedResult) == roundedIntPoint(result) in WebCore::RenderGeometryMap::mapToContainer
+        https://bugs.webkit.org/show_bug.cgi?id=119626
+
+        SVGRenderSupport::mapLocalToContainer() was trying to apply transforms
+        in the incorrect order. Specifically, it would attempt to apply its
+        localToParentTransform before its localToBorderBoxTransform. This
+        was causing an ASSERT to fail when the computed transforms didn't
+        match up to those computed by RenderGeometryMap.
+
+        Backported from Blink: https://codereview.chromium.org/143363004
+
+        Reviewed by Simon Fraser.
+
+        Test: svg/transforms/svg-geometry-crash.html
+
+        * rendering/svg/SVGRenderSupport.cpp:
+        (WebCore::SVGRenderSupport::mapLocalToContainer):
+
 2014-02-28  Mihnea Ovidenie  <mih...@adobe.com>
 
         [CSSRegions] ASSERTION FAILED: !m_regionsInvalidated in RenderFlowThread::regionAtBlockOffset

Modified: trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp (164860 => 164861)


--- trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp	2014-02-28 15:52:17 UTC (rev 164860)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp	2014-02-28 16:35:27 UTC (rev 164861)
@@ -83,8 +83,6 @@
 
 void SVGRenderSupport::mapLocalToContainer(const RenderElement& renderer, const RenderLayerModelObject* repaintContainer, TransformState& transformState, bool* wasFixed)
 {
-    transformState.applyTransform(renderer.localToParentTransform());
-
     ASSERT(renderer.parent());
     auto& parent = *renderer.parent();
     
@@ -94,6 +92,8 @@
     if (parent.isSVGRoot())
         transformState.applyTransform(toRenderSVGRoot(parent).localToBorderBoxTransform());
 
+    transformState.applyTransform(renderer.localToParentTransform());
+
     MapCoordinatesFlags mode = UseTransforms;
     parent.mapLocalToContainer(repaintContainer, transformState, mode, wasFixed);
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to