<feImage> DOM mutation problems
authorzimmermann@webkit.org <zimmermann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jan 2012 12:56:21 +0000 (12:56 +0000)
committerzimmermann@webkit.org <zimmermann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jan 2012 12:56:21 +0000 (12:56 +0000)
commit415118632bd4c5f54cb0d96a7ae984f5b427546e
tree1e2d53d4faef94edbd6009ae672aed125e39aed3
parent8f8b3812e3d19c28fd75856259321c15d3fec670
<feImage> DOM mutation problems
https://bugs.webkit.org/show_bug.cgi?id=77198

Reviewed by Antti Koivisto.

Source/WebCore:

Consider <feImage xlink:href="#rect"/>, where <rect> gets dynamically added to the tree.
Currently <feImage> doesn't notice this, as it doesn't register itself pending on "#rect".

Integrate <feImage> properly within the pending resources concept, fixing the bug.

Tests: svg/filters/feImage-target-add-to-document.svg
       svg/filters/feImage-target-changes-id.svg
       svg/filters/feImage-target-id-change.svg
       svg/filters/feImage-target-reappend-to-document.svg
       svg/filters/feImage-target-remove-from-document.svg

* svg/SVGFEImageElement.cpp: Rename invalidateImageResource to clearResourceReferences.
(WebCore::SVGFEImageElement::~SVGFEImageElement): Call clearResourceReferences.
(WebCore::SVGFEImageElement::clearResourceReferences): Remove any occurence of m_targetImage, it's no longer used.
(WebCore::SVGFEImageElement::requestImageResource): requestImageResource is now called by buildPendingResource.
(WebCore::SVGFEImageElement::buildPendingResource): Called whenever any element that we depend on gets resolved - now invalidates the <filter>.
(WebCore::SVGFEImageElement::parseMappedAttribute): Don't start loading from parseMappedAttribute.
(WebCore::SVGFEImageElement::svgAttributeChanged): Start loading from here, for consistency with SVGImageElement.
(WebCore::SVGFEImageElement::insertedIntoDocument): Invoke buildPendingResource(), if we enter the tree.
(WebCore::SVGFEImageElement::removedFromDocument): Clear m_cachedImage as soon as we get removed from the tree.
(WebCore::SVGFEImageElement::build): Clean up this function, m_targetImage is no longer exist.
* svg/SVGFEImageElement.h: Remove OwnPtr<ImageBuffer> m_targetImage, which is no longer used.

LayoutTests:

Add new test cases covering <feImage> + DOM mutations.

* platform/chromium/test_expectations.txt: Updated expectations.
* svg/filters/feImage-target-add-to-document-expected.png: Added.
* svg/filters/feImage-target-add-to-document-expected.txt: Added.
* svg/filters/feImage-target-add-to-document.svg: Added.
* svg/filters/feImage-target-changes-id-expected.png: Added.
* svg/filters/feImage-target-changes-id-expected.txt: Added.
* svg/filters/feImage-target-changes-id.svg: Added.
* svg/filters/feImage-target-id-change-expected.png: Added.
* svg/filters/feImage-target-id-change-expected.txt: Added.
* svg/filters/feImage-target-id-change.svg: Added.
* svg/filters/feImage-target-reappend-to-document-expected.png: Added.
* svg/filters/feImage-target-reappend-to-document-expected.txt: Added.
* svg/filters/feImage-target-reappend-to-document.svg: Added.
* svg/filters/feImage-target-remove-from-document-expected.png: Added.
* svg/filters/feImage-target-remove-from-document-expected.txt: Added.
* svg/filters/feImage-target-remove-from-document.svg: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106110 268f45cc-cd09-0410-ab3c-d52691b4dbfc
20 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/chromium/test_expectations.txt
LayoutTests/svg/filters/feImage-target-add-to-document-expected.png [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-add-to-document-expected.txt [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-add-to-document.svg [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-changes-id-expected.png [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-changes-id-expected.txt [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-changes-id.svg [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-id-change-expected.png [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-id-change-expected.txt [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-id-change.svg [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-reappend-to-document-expected.png [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-reappend-to-document-expected.txt [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-reappend-to-document.svg [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-remove-from-document-expected.png [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-remove-from-document-expected.txt [new file with mode: 0644]
LayoutTests/svg/filters/feImage-target-remove-from-document.svg [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/svg/SVGFEImageElement.cpp
Source/WebCore/svg/SVGFEImageElement.h