Title: [137042] releases/WebKitGTK/webkit-1.10
Revision
137042
Author
[email protected]
Date
2012-12-08 11:18:01 -0800 (Sat, 08 Dec 2012)

Log Message

Merge 133155 - SVG as an image may recreate the renderer on zoom
https://bugs.webkit.org/show_bug.cgi?id=99508

Reviewed by Abhishek Arya.

Source/WebCore:

The SVGImage code, when SVG is used in <img> tags, caches the renderer
at the start of the painting method and re-uses the pointer at the end
of the method. However, when the page is zoomed the renderer may be
detached mid-method, thus leaving a stray pointer. The fix is to
re-fetch the pointer after the zooms.

Test: svg/as-image/img-zoom-svg-stylesheet.html

* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::drawSVGToImageBuffer): Re-fetch the renderer after
the zoom operations.

LayoutTests:

Test and ref-test-result for zooming of SVG content when loaded as-image, and the svg is actually a css file.

* svg/as-image/img-zoom-svg-stylesheet-expected.html: Added.
* svg/as-image/img-zoom-svg-stylesheet.html: Added.
* svg/as-image/resources/svg-stylesheet-for-zoom.svg: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-1.10/LayoutTests/ChangeLog (137041 => 137042)


--- releases/WebKitGTK/webkit-1.10/LayoutTests/ChangeLog	2012-12-08 18:27:55 UTC (rev 137041)
+++ releases/WebKitGTK/webkit-1.10/LayoutTests/ChangeLog	2012-12-08 19:18:01 UTC (rev 137042)
@@ -1,3 +1,16 @@
+2012-11-01  Stephen Chenney  <[email protected]>
+
+        SVG as an image may recreate the renderer on zoom
+        https://bugs.webkit.org/show_bug.cgi?id=99508
+
+        Reviewed by Abhishek Arya.
+
+        Test and ref-test-result for zooming of SVG content when loaded as-image, and the svg is actually a css file.
+
+        * svg/as-image/img-zoom-svg-stylesheet-expected.html: Added.
+        * svg/as-image/img-zoom-svg-stylesheet.html: Added.
+        * svg/as-image/resources/svg-stylesheet-for-zoom.svg: Added.
+
 2012-10-25  Stephen Chenney  <[email protected]>
 
         feImage should not be allowed to self reference

Added: releases/WebKitGTK/webkit-1.10/LayoutTests/svg/as-image/img-zoom-svg-stylesheet-expected.html (0 => 137042)


--- releases/WebKitGTK/webkit-1.10/LayoutTests/svg/as-image/img-zoom-svg-stylesheet-expected.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.10/LayoutTests/svg/as-image/img-zoom-svg-stylesheet-expected.html	2012-12-08 19:18:01 UTC (rev 137042)
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+  <p>This test PASSES if you can hit &lt;Ctrl&gt;+ without crashing.</p>
+  <script>
+    if (window.eventSender)
+      eventSender.zoomPageIn();
+  </script>
+</html>
\ No newline at end of file

Added: releases/WebKitGTK/webkit-1.10/LayoutTests/svg/as-image/img-zoom-svg-stylesheet.html (0 => 137042)


--- releases/WebKitGTK/webkit-1.10/LayoutTests/svg/as-image/img-zoom-svg-stylesheet.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.10/LayoutTests/svg/as-image/img-zoom-svg-stylesheet.html	2012-12-08 19:18:01 UTC (rev 137042)
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+  <p>This test PASSES if you can hit &lt;Ctrl&gt;+ without crashing.</p>
+  <img style="width:10;height:10" src="" _onload_="zoomPage()"/>
+  <script>
+    function zoomPage()
+    {
+      if (window.eventSender)
+        eventSender.zoomPageIn();
+    }
+  </script>
+</html>
\ No newline at end of file

Added: releases/WebKitGTK/webkit-1.10/LayoutTests/svg/as-image/resources/svg-stylesheet-for-zoom.svg (0 => 137042)


--- releases/WebKitGTK/webkit-1.10/LayoutTests/svg/as-image/resources/svg-stylesheet-for-zoom.svg	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.10/LayoutTests/svg/as-image/resources/svg-stylesheet-for-zoom.svg	2012-12-08 19:18:01 UTC (rev 137042)
@@ -0,0 +1,3 @@
+<?xml-stylesheet href="" type="text/css"?>
+<svg width="10" height="10" xmlns="http://www.w3.org/2000/svg">
+</svg>
\ No newline at end of file

Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/ChangeLog (137041 => 137042)


--- releases/WebKitGTK/webkit-1.10/Source/WebCore/ChangeLog	2012-12-08 18:27:55 UTC (rev 137041)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/ChangeLog	2012-12-08 19:18:01 UTC (rev 137042)
@@ -1,3 +1,22 @@
+2012-11-01  Stephen Chenney  <[email protected]>
+
+        SVG as an image may recreate the renderer on zoom
+        https://bugs.webkit.org/show_bug.cgi?id=99508
+
+        Reviewed by Abhishek Arya.
+
+        The SVGImage code, when SVG is used in <img> tags, caches the renderer
+        at the start of the painting method and re-uses the pointer at the end
+        of the method. However, when the page is zoomed the renderer may be
+        detached mid-method, thus leaving a stray pointer. The fix is to
+        re-fetch the pointer after the zooms.
+
+        Test: svg/as-image/img-zoom-svg-stylesheet.html
+
+        * svg/graphics/SVGImage.cpp:
+        (WebCore::SVGImage::drawSVGToImageBuffer): Re-fetch the renderer after
+        the zoom operations.
+
 2012-10-25  Stephen Chenney  <[email protected]>
 
         feImage should not be allowed to self reference

Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/svg/graphics/SVGImage.cpp (137041 => 137042)


--- releases/WebKitGTK/webkit-1.10/Source/WebCore/svg/graphics/SVGImage.cpp	2012-12-08 18:27:55 UTC (rev 137041)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/svg/graphics/SVGImage.cpp	2012-12-08 19:18:01 UTC (rev 137042)
@@ -180,7 +180,11 @@
     if (zoom != 1)
         frame->setPageZoomFactor(1);
 
-    renderer->setContainerSize(IntSize());
+    // Renderer may have been recreated by frame->setPageZoomFactor(zoom). So fetch it again.
+    renderer = toRenderSVGRoot(rootElement->renderer());
+    if (renderer)
+        renderer->setContainerSize(IntSize());
+
     frame->view()->resize(this->size());
     if (frame->view()->needsLayout())
         frame->view()->layout();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to