Changeset 133155 in webkit


Ignore:
Timestamp:
Nov 1, 2012 6:39:54 AM (11 years ago)
Author:
schenney@chromium.org
Message:

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.
Location:
trunk
Files:
3 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r133151 r133155  
     12012-11-01  Stephen Chenney  <schenney@chromium.org>
     2
     3        SVG as an image may recreate the renderer on zoom
     4        https://bugs.webkit.org/show_bug.cgi?id=99508
     5
     6        Reviewed by Abhishek Arya.
     7
     8        Test and ref-test-result for zooming of SVG content when loaded as-image, and the svg is actually a css file.
     9
     10        * svg/as-image/img-zoom-svg-stylesheet-expected.html: Added.
     11        * svg/as-image/img-zoom-svg-stylesheet.html: Added.
     12        * svg/as-image/resources/svg-stylesheet-for-zoom.svg: Added.
     13
    1142012-11-01  Vsevolod Vlasov  <vsevik@chromium.org>
    215
  • trunk/Source/WebCore/ChangeLog

    r133152 r133155  
     12012-11-01  Stephen Chenney  <schenney@chromium.org>
     2
     3        SVG as an image may recreate the renderer on zoom
     4        https://bugs.webkit.org/show_bug.cgi?id=99508
     5
     6        Reviewed by Abhishek Arya.
     7
     8        The SVGImage code, when SVG is used in <img> tags, caches the renderer
     9        at the start of the painting method and re-uses the pointer at the end
     10        of the method. However, when the page is zoomed the renderer may be
     11        detached mid-method, thus leaving a stray pointer. The fix is to
     12        re-fetch the pointer after the zooms.
     13
     14        Test: svg/as-image/img-zoom-svg-stylesheet.html
     15
     16        * svg/graphics/SVGImage.cpp:
     17        (WebCore::SVGImage::drawSVGToImageBuffer): Re-fetch the renderer after
     18        the zoom operations.
     19
    1202012-11-01  Pavel Feldman  <pfeldman@chromium.org>
    221
  • trunk/Source/WebCore/svg/graphics/SVGImage.cpp

    r132915 r133155  
    154154        frame->setPageZoomFactor(1);
    155155
    156     renderer->setContainerSize(IntSize());
     156    // Renderer may have been recreated by frame->setPageZoomFactor(zoom). So fetch it again.
     157    renderer = toRenderSVGRoot(rootElement->renderer());
     158    if (renderer)
     159        renderer->setContainerSize(IntSize());
     160
    157161    frame->view()->resize(this->size());
    158162    if (frame->view()->needsLayout())
Note: See TracChangeset for help on using the changeset viewer.