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 <Ctrl>+ 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 <Ctrl>+ 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