Only when the SVG is inline and only when a shape is referenced before it is defined...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Dec 2014 18:36:27 +0000 (18:36 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Dec 2014 18:36:27 +0000 (18:36 +0000)
commitfc4c73c8132eb2bf610d262e4e6be7af3acf6058
treeb9193c5ed134d98c0d3aacc0dbc23fdca9ff320f
parent8ec5812e4d5475e9522dc4d5c5e24c3f1e8ff864
Only when the SVG is inline and only when a shape is referenced before it is defined, this shape will not be drawn.
https://bugs.webkit.org/show_bug.cgi?id=139451.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2014-12-19
Reviewed by Antti Koivisto.

Source/WebCore:

Tests: svg/in-html/defs-after-use.html.

When parsing the children of an SVG element is finished, we need to notify the
other SVG elements which have incomplete shadow trees because of early referencing
to this element. The referencing elements need to rebuild their shadow trees and
make new copies of the this element and its sub-tree.

This is the case where a <use> tag references target elements before these target
elements are defined. Updating the shadow DOM tree of a <use> element should update
the corresponding shadow render tree as well.

* svg/SVGElement.cpp:
(WebCore::SVGElement::finishParsingChildren):
Invalidate all the referencing elements of a target element whose sub-tree has
just finished parsing.

LayoutTests:

Ensure that when a <use> element inside an inline SVG references another
target SVG element, which has not been defined yet, gets its shadow DOM
tree updated once the target element is created. Updating the shadow DOM
tree of the <use> element should update the corresponding shadow render
tree as well.

* svg/in-html/defs-after-use-expected.html: Added.
* svg/in-html/defs-after-use.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@177576 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/ChangeLog
LayoutTests/svg/in-html/defs-after-use-expected.html [new file with mode: 0644]
LayoutTests/svg/in-html/defs-after-use.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/svg/SVGElement.cpp