External <use> xlink:href references do not work
authorreni@webkit.org <reni@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 14 Mar 2012 08:52:35 +0000 (08:52 +0000)
committerreni@webkit.org <reni@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 14 Mar 2012 08:52:35 +0000 (08:52 +0000)
https://bugs.webkit.org/show_bug.cgi?id=12499

Reviewed by Nikolas Zimmermann.

Source/WebCore:

This is a follow-up patch after r108785.
In this patch we bind the previously introduced CachedSVGDocument class
into the caching mechanism of SVGUseElement. The mode how external resources
are handled is similar to the processing of internal ones. We build the instance
and shadow tree the same way but we have to keep in mind that the requested resources
maybe not loaded yet. We can check it with cachedDocumentIsStillLoading() function.

SVGURIReference::targetElementFromIRIString() also need to be extended. The baseURI
computation needs to take the referenced documents URL into account, instead of the current documents.

The patch affects a lot of tests which have external resources especially in svg/batik. Because
of the size of that test refactor they will be commited in a follow-up patch.

Tests: svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg
       svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg
       svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg
       svg/custom/use-extern-href.svg
       svg/custom/use-referencing-an-image-expected.svg
       svg/custom/use-referencing-an-image.svg
       svg/custom/use-referencing-indirectly-itself-expected.svg
       svg/custom/use-referencing-indirectly-itself.svg
       svg/custom/use-referencing-itself-expected.svg
       svg/custom/use-referencing-itself.svg
       svg/dynamic-updates/SVGUseElement-dom-href1-attr.html
       svg/dynamic-updates/SVGUseElement-dom-href2-attr.html
       svg/dynamic-updates/SVGUseElement-svgdom-href1-prop.html
       svg/dynamic-updates/SVGUseElement-svgdom-href2-prop.html

* loader/cache/CachedResourceLoader.cpp:
(WebCore):
(WebCore::CachedResourceLoader::requestSVGDocument):
* loader/cache/CachedResourceLoader.h:
(WebCore):
(CachedResourceLoader):
* page/ContentSecurityPolicy.h:
* platform/KURL.cpp:
(WebCore::equalIgnoringFragmentIdentifier):
* platform/network/chromium/ResourceRequest.h:
* svg/SVGURIReference.cpp:
(WebCore::urlFromIRIStringWithFragmentIdentifier):
(WebCore):
(WebCore::SVGURIReference::targetElementFromIRIString):
* svg/SVGURIReference.h:
(SVGURIReference):
(WebCore::SVGURIReference::isExternalURIReference):
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::SVGUseElement):
(WebCore::SVGUseElement::~SVGUseElement):
(WebCore):
(WebCore::SVGUseElement::referencedDocument):
(WebCore::SVGUseElement::externalDocument):
(WebCore::SVGUseElement::svgAttributeChanged):
(WebCore::dumpInstanceTree):
(WebCore::SVGUseElement::buildPendingResource):
(WebCore::SVGUseElement::buildShadowAndInstanceTree):
(WebCore::SVGUseElement::hasCycleUseReferencing):
(WebCore::SVGUseElement::expandUseElementsInShadowTree):
(WebCore::SVGUseElement::expandSymbolElementsInShadowTree):
(WebCore::SVGUseElement::notifyFinished):
(WebCore::SVGUseElement::cachedDocumentIsStillLoading):
(WebCore::SVGUseElement::instanceTreeIsLoading):
* svg/SVGUseElement.h:
(WebCore):
(SVGUseElement):

LayoutTests:

Adding tests to check the new functionality of SVGUseElement what can use
sources from external URIs too. New tests in this patch cover the corner cases
of this feature: referencing resources directly and indirectly, changing
the referenced URI from an internal to an external one, handling
security issues like self referencing, self referencing across document, etc.
Furthermore the patch infer some rebaseline in svg/batik directory because
they use external resources.

* platform/chromium/test_expectations.txt:
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png: Added.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Added.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png: Added.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Added.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png: Added.
* platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Added.
* platform/mac/svg/batik/filters/feTile-expected.png:
* platform/mac/svg/batik/filters/feTile-expected.txt:
* platform/mac/svg/batik/filters/filterRegions-expected.png:
* platform/mac/svg/batik/filters/filterRegions-expected.txt:
* platform/mac/svg/batik/masking/maskRegions-expected.png:
* platform/mac/svg/batik/masking/maskRegions-expected.txt:
* platform/mac/svg/batik/paints/gradientLimit-expected.png:
* platform/mac/svg/batik/paints/gradientLimit-expected.txt:
* platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.png:
* platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.txt:
* platform/mac/svg/batik/paints/patternRegionA-expected.png:
* platform/mac/svg/batik/paints/patternRegionA-expected.txt:
* platform/mac/svg/batik/paints/patternRegions-expected.png:
* platform/mac/svg/batik/paints/patternRegions-expected.txt:
* platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.png:
* platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.txt:
* platform/mac/svg/batik/text/longTextOnPath-expected.png:
* platform/mac/svg/batik/text/longTextOnPath-expected.txt:
* platform/mac/svg/batik/text/smallFonts-expected.png:
* platform/mac/svg/batik/text/smallFonts-expected.txt:
* platform/mac/svg/batik/text/textAnchor-expected.png:
* platform/mac/svg/batik/text/textAnchor-expected.txt:
* platform/mac/svg/batik/text/textDecoration-expected.png:
* platform/mac/svg/batik/text/textDecoration-expected.txt:
* platform/mac/svg/batik/text/textEffect-expected.png:
* platform/mac/svg/batik/text/textEffect-expected.txt:
* platform/mac/svg/batik/text/textEffect2-expected.png:
* platform/mac/svg/batik/text/textEffect2-expected.txt:
* platform/mac/svg/batik/text/textEffect3-expected.png:
* platform/mac/svg/batik/text/textEffect3-expected.txt:
* platform/mac/svg/batik/text/textFeatures-expected.png:
* platform/mac/svg/batik/text/textFeatures-expected.txt:
* platform/mac/svg/batik/text/textLayout-expected.png:
* platform/mac/svg/batik/text/textLayout-expected.txt:
* platform/mac/svg/batik/text/textLayout2-expected.png:
* platform/mac/svg/batik/text/textLayout2-expected.txt:
* platform/mac/svg/batik/text/textLength-expected.png:
* platform/mac/svg/batik/text/textLength-expected.txt:
* platform/mac/svg/batik/text/textOnPath-expected.png:
* platform/mac/svg/batik/text/textOnPath-expected.txt:
* platform/mac/svg/batik/text/textOnPathSpaces-expected.png:
* platform/mac/svg/batik/text/textOnPathSpaces-expected.txt:
* platform/mac/svg/batik/text/textPosition-expected.png:
* platform/mac/svg/batik/text/textPosition-expected.txt:
* platform/mac/svg/batik/text/textPosition2-expected.png:
* platform/mac/svg/batik/text/textPosition2-expected.txt:
* platform/mac/svg/batik/text/textProperties-expected.png:
* platform/mac/svg/batik/text/textProperties-expected.txt:
* platform/mac/svg/batik/text/textProperties2-expected.png:
* platform/mac/svg/batik/text/textProperties2-expected.txt:
* platform/mac/svg/batik/text/textStyles-expected.png:
* platform/mac/svg/batik/text/textStyles-expected.txt:
* platform/mac/svg/batik/text/verticalText-expected.png:
* platform/mac/svg/batik/text/verticalText-expected.txt:
* platform/mac/svg/batik/text/verticalTextOnPath-expected.png:
* platform/mac/svg/batik/text/verticalTextOnPath-expected.txt:
* platform/mac/svg/custom/use-extern-href-expected.png: Added.
* platform/mac/svg/custom/use-extern-href-expected.txt: Added.
* platform/mac/svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.png: Added.
* platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.png: Added.
* platform/mac/svg/hixie/error/014-expected.txt:
* platform/mac/svg/hixie/use/002-expected.png:
* platform/mac/svg/hixie/use/002-expected.txt:
* svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg: Added.
* svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg: Added.
* svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg: Added.
* svg/batik/filters/filterRegions.svg:
* svg/batik/text/textProperties.svg:
* svg/batik/text/textProperties2.svg:
* svg/batik/text/textStyles.svg:
* svg/custom/resources/rgb.svg:
* svg/custom/use-extern-href.svg: Added.
* svg/custom/use-referencing-an-image-expected.svg: Added.
* svg/custom/use-referencing-an-image.svg: Added.
* svg/custom/use-referencing-indirectly-itself-expected.svg: Added.
* svg/custom/use-referencing-indirectly-itself.svg: Added.
* svg/custom/use-referencing-itself-expected.svg: Added.
* svg/custom/use-referencing-itself.svg: Added.
* svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.txt: Added.
* svg/dynamic-updates/SVGUseElement-dom-href1-attr.html: Added.
* svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.txt: Added.
* svg/dynamic-updates/SVGUseElement-dom-href2-attr.html: Added.
* svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.txt: Added.
* svg/dynamic-updates/SVGUseElement-svgdom-href1-prop.html: Added.
* svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.txt: Added.
* svg/dynamic-updates/SVGUseElement-svgdom-href2-prop.html: Added.
* svg/dynamic-updates/script-tests/SVGUseElement-dom-href1-attr.js: Added.
(repaintTest):
* svg/dynamic-updates/script-tests/SVGUseElement-dom-href2-attr.js: Added.
(repaintTest):
* svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href1-prop.js: Added.
(repaintTest):
* svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href2-prop.js: Added.
(repaintTest):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@110676 268f45cc-cd09-0410-ab3c-d52691b4dbfc

107 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/chromium/test_expectations.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/svg/batik/filters/feTile-expected.png
LayoutTests/platform/mac/svg/batik/filters/feTile-expected.txt
LayoutTests/platform/mac/svg/batik/filters/filterRegions-expected.png
LayoutTests/platform/mac/svg/batik/filters/filterRegions-expected.txt
LayoutTests/platform/mac/svg/batik/masking/maskRegions-expected.png
LayoutTests/platform/mac/svg/batik/masking/maskRegions-expected.txt
LayoutTests/platform/mac/svg/batik/paints/gradientLimit-expected.png
LayoutTests/platform/mac/svg/batik/paints/gradientLimit-expected.txt
LayoutTests/platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.png
LayoutTests/platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.txt
LayoutTests/platform/mac/svg/batik/paints/patternRegionA-expected.png
LayoutTests/platform/mac/svg/batik/paints/patternRegionA-expected.txt
LayoutTests/platform/mac/svg/batik/paints/patternRegions-expected.png
LayoutTests/platform/mac/svg/batik/paints/patternRegions-expected.txt
LayoutTests/platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.png
LayoutTests/platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.txt
LayoutTests/platform/mac/svg/batik/text/longTextOnPath-expected.png
LayoutTests/platform/mac/svg/batik/text/longTextOnPath-expected.txt
LayoutTests/platform/mac/svg/batik/text/smallFonts-expected.png
LayoutTests/platform/mac/svg/batik/text/smallFonts-expected.txt
LayoutTests/platform/mac/svg/batik/text/textAnchor-expected.png
LayoutTests/platform/mac/svg/batik/text/textAnchor-expected.txt
LayoutTests/platform/mac/svg/batik/text/textDecoration-expected.png
LayoutTests/platform/mac/svg/batik/text/textDecoration-expected.txt
LayoutTests/platform/mac/svg/batik/text/textEffect-expected.png
LayoutTests/platform/mac/svg/batik/text/textEffect-expected.txt
LayoutTests/platform/mac/svg/batik/text/textEffect2-expected.png
LayoutTests/platform/mac/svg/batik/text/textEffect2-expected.txt
LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.png
LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.txt
LayoutTests/platform/mac/svg/batik/text/textFeatures-expected.png
LayoutTests/platform/mac/svg/batik/text/textFeatures-expected.txt
LayoutTests/platform/mac/svg/batik/text/textLayout-expected.png
LayoutTests/platform/mac/svg/batik/text/textLayout-expected.txt
LayoutTests/platform/mac/svg/batik/text/textLayout2-expected.png
LayoutTests/platform/mac/svg/batik/text/textLayout2-expected.txt
LayoutTests/platform/mac/svg/batik/text/textLength-expected.png
LayoutTests/platform/mac/svg/batik/text/textLength-expected.txt
LayoutTests/platform/mac/svg/batik/text/textOnPath-expected.png
LayoutTests/platform/mac/svg/batik/text/textOnPath-expected.txt
LayoutTests/platform/mac/svg/batik/text/textOnPathSpaces-expected.png
LayoutTests/platform/mac/svg/batik/text/textOnPathSpaces-expected.txt
LayoutTests/platform/mac/svg/batik/text/textPosition-expected.png
LayoutTests/platform/mac/svg/batik/text/textPosition-expected.txt
LayoutTests/platform/mac/svg/batik/text/textPosition2-expected.png
LayoutTests/platform/mac/svg/batik/text/textPosition2-expected.txt
LayoutTests/platform/mac/svg/batik/text/textProperties-expected.png
LayoutTests/platform/mac/svg/batik/text/textProperties-expected.txt
LayoutTests/platform/mac/svg/batik/text/textProperties2-expected.png
LayoutTests/platform/mac/svg/batik/text/textProperties2-expected.txt
LayoutTests/platform/mac/svg/batik/text/textStyles-expected.png
LayoutTests/platform/mac/svg/batik/text/textStyles-expected.txt
LayoutTests/platform/mac/svg/batik/text/verticalText-expected.png
LayoutTests/platform/mac/svg/batik/text/verticalText-expected.txt
LayoutTests/platform/mac/svg/batik/text/verticalTextOnPath-expected.png
LayoutTests/platform/mac/svg/batik/text/verticalTextOnPath-expected.txt
LayoutTests/platform/mac/svg/custom/use-extern-href-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/custom/use-extern-href-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.png [new file with mode: 0644]
LayoutTests/platform/mac/svg/hixie/error/014-expected.txt
LayoutTests/platform/mac/svg/hixie/use/002-expected.png
LayoutTests/platform/mac/svg/hixie/use/002-expected.txt
LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg [new file with mode: 0644]
LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg [new file with mode: 0644]
LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg [new file with mode: 0644]
LayoutTests/svg/batik/filters/filterRegions.svg
LayoutTests/svg/batik/text/textProperties.svg
LayoutTests/svg/batik/text/textProperties2.svg
LayoutTests/svg/batik/text/textStyles.svg
LayoutTests/svg/custom/resources/rgb.svg
LayoutTests/svg/custom/use-extern-href.svg [new file with mode: 0644]
LayoutTests/svg/custom/use-referencing-an-image-expected.svg [new file with mode: 0644]
LayoutTests/svg/custom/use-referencing-an-image.svg [new file with mode: 0644]
LayoutTests/svg/custom/use-referencing-indirectly-itself-expected.svg [new file with mode: 0644]
LayoutTests/svg/custom/use-referencing-indirectly-itself.svg [new file with mode: 0644]
LayoutTests/svg/custom/use-referencing-itself-expected.svg [new file with mode: 0644]
LayoutTests/svg/custom/use-referencing-itself.svg [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href1-attr.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href2-attr.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.txt [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop.html [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href1-attr.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href2-attr.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href1-prop.js [new file with mode: 0644]
LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href2-prop.js [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/loader/cache/CachedResourceLoader.cpp
Source/WebCore/loader/cache/CachedResourceLoader.h
Source/WebCore/svg/SVGURIReference.cpp [changed mode: 0644->0755]
Source/WebCore/svg/SVGURIReference.h [changed mode: 0644->0755]
Source/WebCore/svg/SVGUseElement.cpp [changed mode: 0644->0755]
Source/WebCore/svg/SVGUseElement.h [changed mode: 0644->0755]

index a27c302..71c156f 100644 (file)
@@ -1,3 +1,122 @@
+2012-03-14  Renata Hodovan  <reni@webkit.org>
+
+        External <use> xlink:href references do not work
+        https://bugs.webkit.org/show_bug.cgi?id=12499
+
+        Reviewed by Nikolas Zimmermann.
+
+        Adding tests to check the new functionality of SVGUseElement what can use
+        sources from external URIs too. New tests in this patch cover the corner cases
+        of this feature: referencing resources directly and indirectly, changing
+        the referenced URI from an internal to an external one, handling
+        security issues like self referencing, self referencing across document, etc.
+        Furthermore the patch infer some rebaseline in svg/batik directory because
+        they use external resources.
+
+        * platform/chromium/test_expectations.txt:
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png: Added.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt: Added.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png: Added.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt: Added.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png: Added.
+        * platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt: Added.
+        * platform/mac/svg/batik/filters/feTile-expected.png:
+        * platform/mac/svg/batik/filters/feTile-expected.txt:
+        * platform/mac/svg/batik/filters/filterRegions-expected.png:
+        * platform/mac/svg/batik/filters/filterRegions-expected.txt:
+        * platform/mac/svg/batik/masking/maskRegions-expected.png:
+        * platform/mac/svg/batik/masking/maskRegions-expected.txt:
+        * platform/mac/svg/batik/paints/gradientLimit-expected.png:
+        * platform/mac/svg/batik/paints/gradientLimit-expected.txt:
+        * platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.png:
+        * platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.txt:
+        * platform/mac/svg/batik/paints/patternRegionA-expected.png:
+        * platform/mac/svg/batik/paints/patternRegionA-expected.txt:
+        * platform/mac/svg/batik/paints/patternRegions-expected.png:
+        * platform/mac/svg/batik/paints/patternRegions-expected.txt:
+        * platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.png:
+        * platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.txt:
+        * platform/mac/svg/batik/text/longTextOnPath-expected.png:
+        * platform/mac/svg/batik/text/longTextOnPath-expected.txt:
+        * platform/mac/svg/batik/text/smallFonts-expected.png:
+        * platform/mac/svg/batik/text/smallFonts-expected.txt:
+        * platform/mac/svg/batik/text/textAnchor-expected.png:
+        * platform/mac/svg/batik/text/textAnchor-expected.txt:
+        * platform/mac/svg/batik/text/textDecoration-expected.png:
+        * platform/mac/svg/batik/text/textDecoration-expected.txt:
+        * platform/mac/svg/batik/text/textEffect-expected.png:
+        * platform/mac/svg/batik/text/textEffect-expected.txt:
+        * platform/mac/svg/batik/text/textEffect2-expected.png:
+        * platform/mac/svg/batik/text/textEffect2-expected.txt:
+        * platform/mac/svg/batik/text/textEffect3-expected.png:
+        * platform/mac/svg/batik/text/textEffect3-expected.txt:
+        * platform/mac/svg/batik/text/textFeatures-expected.png:
+        * platform/mac/svg/batik/text/textFeatures-expected.txt:
+        * platform/mac/svg/batik/text/textLayout-expected.png:
+        * platform/mac/svg/batik/text/textLayout-expected.txt:
+        * platform/mac/svg/batik/text/textLayout2-expected.png:
+        * platform/mac/svg/batik/text/textLayout2-expected.txt:
+        * platform/mac/svg/batik/text/textLength-expected.png:
+        * platform/mac/svg/batik/text/textLength-expected.txt:
+        * platform/mac/svg/batik/text/textOnPath-expected.png:
+        * platform/mac/svg/batik/text/textOnPath-expected.txt:
+        * platform/mac/svg/batik/text/textOnPathSpaces-expected.png:
+        * platform/mac/svg/batik/text/textOnPathSpaces-expected.txt:
+        * platform/mac/svg/batik/text/textPosition-expected.png:
+        * platform/mac/svg/batik/text/textPosition-expected.txt:
+        * platform/mac/svg/batik/text/textPosition2-expected.png:
+        * platform/mac/svg/batik/text/textPosition2-expected.txt:
+        * platform/mac/svg/batik/text/textProperties-expected.png:
+        * platform/mac/svg/batik/text/textProperties-expected.txt:
+        * platform/mac/svg/batik/text/textProperties2-expected.png:
+        * platform/mac/svg/batik/text/textProperties2-expected.txt:
+        * platform/mac/svg/batik/text/textStyles-expected.png:
+        * platform/mac/svg/batik/text/textStyles-expected.txt:
+        * platform/mac/svg/batik/text/verticalText-expected.png:
+        * platform/mac/svg/batik/text/verticalText-expected.txt:
+        * platform/mac/svg/batik/text/verticalTextOnPath-expected.png:
+        * platform/mac/svg/batik/text/verticalTextOnPath-expected.txt:
+        * platform/mac/svg/custom/use-extern-href-expected.png: Added.
+        * platform/mac/svg/custom/use-extern-href-expected.txt: Added.
+        * platform/mac/svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.png: Added.
+        * platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.png: Added.
+        * platform/mac/svg/hixie/error/014-expected.txt:
+        * platform/mac/svg/hixie/use/002-expected.png:
+        * platform/mac/svg/hixie/use/002-expected.txt:
+        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg: Added.
+        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg: Added.
+        * svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg: Added.
+        * svg/batik/filters/filterRegions.svg:
+        * svg/batik/text/textProperties.svg:
+        * svg/batik/text/textProperties2.svg:
+        * svg/batik/text/textStyles.svg:
+        * svg/custom/resources/rgb.svg:
+        * svg/custom/use-extern-href.svg: Added.
+        * svg/custom/use-referencing-an-image-expected.svg: Added.
+        * svg/custom/use-referencing-an-image.svg: Added.
+        * svg/custom/use-referencing-indirectly-itself-expected.svg: Added.
+        * svg/custom/use-referencing-indirectly-itself.svg: Added.
+        * svg/custom/use-referencing-itself-expected.svg: Added.
+        * svg/custom/use-referencing-itself.svg: Added.
+        * svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGUseElement-dom-href1-attr.html: Added.
+        * svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.txt: Added.
+        * svg/dynamic-updates/SVGUseElement-dom-href2-attr.html: Added.
+        * svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGUseElement-svgdom-href1-prop.html: Added.
+        * svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.txt: Added.
+        * svg/dynamic-updates/SVGUseElement-svgdom-href2-prop.html: Added.
+        * svg/dynamic-updates/script-tests/SVGUseElement-dom-href1-attr.js: Added.
+        (repaintTest):
+        * svg/dynamic-updates/script-tests/SVGUseElement-dom-href2-attr.js: Added.
+        (repaintTest):
+        * svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href1-prop.js: Added.
+        (repaintTest):
+        * svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href2-prop.js: Added.
+        (repaintTest):
+
 2012-03-14  Philippe Normand  <pnormand@igalia.com>
 
         Unreviewed, skip a new failing inspector test in GTK and add new
index 30a304d..756cc8d 100644 (file)
@@ -1041,6 +1041,11 @@ BUGWK62974 LINUX WIN : svg/wicd/test-rightsizing-b.xhtml = IMAGE+TEXT
 BUGWK62974 MAC : svg/wicd/test-rightsizing-b.xhtml = IMAGE
 BUGWK62974 MAC : svg/W3C-SVG-1.1/pservers-grad-08-b.svg = IMAGE
 
+// These tests will need rebaseline after landing 12499.
+BUGWK12499 LINUX : svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg = IMAGE+TEXT IMAGE TEXT PASS
+BUGWK12499 LINUX : svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg = IMAGE+TEXT IMAGE TEXT PASS
+BUGWK12499 LINUX : svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg = IMAGE+TEXT IMAGE TEXT PASS
+
 // -----------------------------------------------------------------
 // End SVG Regressions
 // -----------------------------------------------------------------
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png b/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png
new file mode 100644 (file)
index 0000000..58bc0df
Binary files /dev/null and b/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt b/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t-expected.txt
new file mode 100644 (file)
index 0000000..0cae451
--- /dev/null
@@ -0,0 +1,20 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (0,0) size 800x600
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+    RenderSVGContainer {g} at (150,25) size 500x452
+      RenderSVGContainer {g} at (150,25) size 34x34
+        RenderSVGPath {circle} at (150,25) size 34x34 [fill={[type=SOLID] [color=#FF7F00]}] [cx=100.00] [cy=25.00] [r=10.00]
+        RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
+      RenderSVGContainer {g} at (616,25) size 34x34
+        RenderSVGPath {circle} at (616,25) size 34x34 [fill={[type=SOLID] [color=#FFFF00]}] [cx=380.00] [cy=25.00] [r=10.00]
+        RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
+      RenderSVGText {text} at (100,257) size 280x28 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 280x28
+          chunk 1 (middle anchor) text run 1 at (100.20,280.00) startOffset 0 endOffset 28 width 279.60: "This text should be visible."
+    RenderSVGContainer {g} at (16,516) size 381x64
+      RenderSVGText {text} at (10,310) size 228x37 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 228x37
+          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 227.40: "$Revision: 1.5 $"
+    RenderSVGRect {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png b/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png
new file mode 100644 (file)
index 0000000..c2d9ac4
Binary files /dev/null and b/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt b/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t-expected.txt
new file mode 100644 (file)
index 0000000..5e9a865
--- /dev/null
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (0,0) size 800x600
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+    RenderSVGContainer {g} at (150,25) size 484x452
+      RenderSVGContainer {g} at (150,25) size 34x34
+        RenderSVGPath {circle} at (150,25) size 34x34 [fill={[type=SOLID] [color=#FF7F00]}] [cx=100.00] [cy=25.00] [r=10.00]
+        RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
+      RenderSVGText {text} at (100,257) size 280x28 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 280x28
+          chunk 1 (middle anchor) text run 1 at (100.20,280.00) startOffset 0 endOffset 28 width 279.60: "This text should be visible."
+    RenderSVGContainer {g} at (16,516) size 381x64
+      RenderSVGText {text} at (10,310) size 228x37 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 228x37
+          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 227.40: "$Revision: 1.5 $"
+    RenderSVGRect {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png b/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png
new file mode 100644 (file)
index 0000000..bbbc831
Binary files /dev/null and b/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt b/LayoutTests/platform/mac/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t-expected.txt
new file mode 100644 (file)
index 0000000..64f30cd
--- /dev/null
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (0,0) size 800x600
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+    RenderSVGContainer {g} at (166,25) size 484x452
+      RenderSVGContainer {g} at (616,25) size 34x34
+        RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,25.00)}]
+        RenderSVGPath {circle} at (616,25) size 34x34 [fill={[type=SOLID] [color=#FFFF00]}] [cx=380.00] [cy=25.00] [r=10.00]
+      RenderSVGText {text} at (100,257) size 280x28 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 280x28
+          chunk 1 (middle anchor) text run 1 at (100.20,280.00) startOffset 0 endOffset 28 width 279.60: "This text should be visible."
+    RenderSVGContainer {g} at (16,516) size 381x64
+      RenderSVGText {text} at (10,310) size 228x37 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 228x37
+          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 227.40: "$Revision: 1.5 $"
+    RenderSVGRect {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
index a49504d..f7ac4ee 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/filters/feTile-expected.png and b/LayoutTests/platform/mac/svg/batik/filters/feTile-expected.png differ
index 92f6a99..9171a7c 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (0,25) size 384x454
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGContainer {g} at (0,25) size 384x354
       RenderSVGText {text} at (187,25) size 75x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 75x18
@@ -90,4 +90,11 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (20,461) size 161x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 161x18
           chunk 1 text run 1 at (20.00,475.00) startOffset 0 endOffset 26 width 161.00: "How it should look like..."
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 01a5778..571d42e 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/filters/filterRegions-expected.png and b/LayoutTests/platform/mac/svg/batik/filters/filterRegions-expected.png differ
index ea62484..0f64dd7 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (0,25) size 450x475
+  RenderSVGRoot {svg} at (0,0) size 450x500
     RenderSVGText {text} at (175,25) size 100x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 100x18
         chunk 1 (middle anchor) text run 1 at (175.00,40.00) startOffset 0 endOffset 14 width 100.00: "Filter Regions"
@@ -40,133 +40,140 @@ layer at (0,0) size 450x500
         [feFlood flood-color="#FF0000" flood-opacity="1.00"]
       RenderSVGResourceFilter {filter} [id="filterRegion_3_3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
         [feFlood flood-color="#FF0000" flood-opacity="1.00"]
-    RenderSVGContainer {g} at (0,58) size 450x442 [transform={m=((1.00,0.00)(0.00,1.00)) t=(30.00,50.00)}]
-      RenderSVGContainer {g} at (259,118) size 122x83 [transform={m=((1.00,0.00)(0.00,1.00)) t=(240.00,95.00)}]
+    RenderSVGContainer {g} at (0,64) size 450x436 [transform={m=((1.00,0.00)(0.00,1.00)) t=(30.00,50.00)}]
+      RenderSVGContainer {g} at (259,124) size 122x77 [transform={m=((1.00,0.00)(0.00,1.00)) t=(240.00,95.00)}]
         RenderSVGRect {rect} at (260,140) size 120x60 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=100.00] [height=50.00]
           [filter="filterRegion_0"] RenderSVGResourceFilter {filter} at (-10,-5) size 120x60
         RenderSVGRect {rect} at (259,139) size 122x62 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=-10.00] [y=-5.00] [width=120.00] [height=60.00]
-        RenderSVGText {text} at (-11,-27) size 112x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 112x20
-            chunk 1 (middle anchor) text run 1 at (-11.00,-10.00) startOffset 0 endOffset 14 width 112.00: "filterRegion_0"
+        RenderSVGText {text} at (10,-21) size 70x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 70x13
+            chunk 1 (middle anchor) text run 1 at (10.00,-10.00) startOffset 0 endOffset 14 width 70.00: "filterRegion_0"
       RenderSVGRect {rect} at (50,80) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=3000.00] [width=20000000.00] [height=25.00]
         [filter="filterRegion_1"] RenderSVGResourceFilter {filter} at (20,30) size 50x40
       RenderSVGRect {rect} at (49,79) size 52x42 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=20.00] [y=30.00] [width=50.00] [height=40.00]
-      RenderSVGText {text} at (-11,8) size 112x20 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 112x20
-          chunk 1 (middle anchor) text run 1 at (-11.00,25.00) startOffset 0 endOffset 14 width 112.00: "filterRegion_1"
-      RenderSVGContainer {g} at (119,58) size 112x63 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
+      RenderSVGText {text} at (10,14) size 70x13 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 70x13
+          chunk 1 (middle anchor) text run 1 at (10.00,25.00) startOffset 0 endOffset 14 width 70.00: "filterRegion_1"
+      RenderSVGContainer {g} at (140,64) size 70x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}]
         RenderSVGRect {rect} at (150,80) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=3000.00] [width=20000000.00] [height=25.00]
           [filter="filterRegion_2"] RenderSVGResourceFilter {filter} at (20,30) size 50x40
         RenderSVGRect {rect} at (154,84) size 47x37 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=25.00] [y=35.00] [width=45.00] [height=35.00]
-        RenderSVGText {text} at (-11,8) size 112x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 112x20
-            chunk 1 (middle anchor) text run 1 at (-11.00,25.00) startOffset 0 endOffset 14 width 112.00: "filterRegion_2"
-      RenderSVGContainer {g} at (219,58) size 112x62 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,0.00)}]
+        RenderSVGText {text} at (10,14) size 70x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 70x13
+            chunk 1 (middle anchor) text run 1 at (10.00,25.00) startOffset 0 endOffset 14 width 70.00: "filterRegion_2"
+      RenderSVGContainer {g} at (240,64) size 70x56 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,0.00)}]
         RenderSVGRect {rect} at (250,80) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=3000.00] [width=20000000.00] [height=25.00]
           [filter="filterRegion_3"] RenderSVGResourceFilter {filter} at (20,30) size 50x40
         RenderSVGRect {rect} at (249,79) size 52x22 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=20.00] [y=30.00] [width=50.00] [height=20.00]
-        RenderSVGText {text} at (-11,8) size 112x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 112x20
-            chunk 1 (middle anchor) text run 1 at (-11.00,25.00) startOffset 0 endOffset 14 width 112.00: "filterRegion_3"
-      RenderSVGContainer {g} at (319,58) size 112x63 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,0.00)}]
+        RenderSVGText {text} at (10,14) size 70x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 70x13
+            chunk 1 (middle anchor) text run 1 at (10.00,25.00) startOffset 0 endOffset 14 width 70.00: "filterRegion_3"
+      RenderSVGContainer {g} at (340,64) size 70x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,0.00)}]
         RenderSVGRect {rect} at (350,80) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=3000.00] [width=20000000.00] [height=25.00]
           [filter="filterRegion_4"] RenderSVGResourceFilter {filter} at (20,30) size 50x40
         RenderSVGRect {rect} at (349,79) size 27x42 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=20.00] [y=30.00] [width=25.00] [height=40.00]
-        RenderSVGText {text} at (-11,8) size 112x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 112x20
-            chunk 1 (middle anchor) text run 1 at (-11.00,25.00) startOffset 0 endOffset 14 width 112.00: "filterRegion_4"
-      RenderSVGContainer {g} at (19,133) size 112x62 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,75.00)}]
+        RenderSVGText {text} at (10,14) size 70x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 70x13
+            chunk 1 (middle anchor) text run 1 at (10.00,25.00) startOffset 0 endOffset 14 width 70.00: "filterRegion_4"
+      RenderSVGContainer {g} at (40,139) size 70x56 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,75.00)}]
         RenderSVGRect {rect} at (50,155) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=3000.00] [width=20000000.00] [height=25.00]
           [filter="filterRegion_5"] RenderSVGResourceFilter {filter} at (20,30) size 50x40
         RenderSVGRect {rect} at (49,154) size 52x22 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=20.00] [y=30.00] [width=50.00] [height=20.00]
-        RenderSVGText {text} at (-11,8) size 112x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 112x20
-            chunk 1 (middle anchor) text run 1 at (-11.00,25.00) startOffset 0 endOffset 14 width 112.00: "filterRegion_5"
+        RenderSVGText {text} at (10,14) size 70x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 70x13
+            chunk 1 (middle anchor) text run 1 at (10.00,25.00) startOffset 0 endOffset 14 width 70.00: "filterRegion_5"
       RenderSVGContainer {g} at (150,155) size 50x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,75.00)}]
         [filter="filterRegion_6"] RenderSVGResourceFilter {filter} at (20,30) size 50x40
         RenderSVGRect {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=3000.00] [width=20000000.00] [height=25.00]
-      RenderSVGContainer {g} at (119,133) size 112x63 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,75.00)}]
+      RenderSVGContainer {g} at (140,139) size 70x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,75.00)}]
         RenderSVGRect {rect} at (149,154) size 42x42 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=20.00] [y=30.00] [width=40.00] [height=40.00]
-        RenderSVGText {text} at (-11,8) size 112x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 112x20
-            chunk 1 (middle anchor) text run 1 at (-11.00,25.00) startOffset 0 endOffset 14 width 112.00: "filterRegion_6"
-      RenderSVGContainer {g} at (109,293) size 132x65 [transform={m=((1.00,0.00)(0.00,1.00)) t=(120.00,280.00)}]
+        RenderSVGText {text} at (10,14) size 70x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 70x13
+            chunk 1 (middle anchor) text run 1 at (10.00,25.00) startOffset 0 endOffset 14 width 70.00: "filterRegion_6"
+      RenderSVGContainer {g} at (134,299) size 82x59 [transform={m=((1.00,0.00)(0.00,1.00)) t=(120.00,280.00)}]
         RenderSVGRect {rect} at (145,327) size 60x31 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=50.00] [height=25.00]
           [filter="filterRegion_2_0"] RenderSVGResourceFilter {filter} at (-5,-2.50) size 60x30
         RenderSVGRect {rect} at (144,327) size 62x31 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=-5.00] [y=-2.50] [width=60.00] [height=30.00]
-        RenderSVGText {text} at (-41,-37) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-41.00,-20.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_2_0"
+        RenderSVGText {text} at (-16,-31) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (-16.00,-20.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_2_0"
       RenderSVGContainer {g} at (0,160) size 450x340 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,160.00)}]
         [filter="filterRegion_2_1"] RenderSVGResourceFilter {filter} at (-45,-50) size 540x600
         RenderSVGRect {rect} at (50,240) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=30.00] [width=50.00] [height=40.00]
-      RenderSVGContainer {g} at (9,218) size 132x63 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,160.00)}]
+      RenderSVGContainer {g} at (34,224) size 82x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,160.00)}]
         RenderSVGRect {rect} at (49,239) size 52x42 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=20.00] [y=30.00] [width=50.00] [height=40.00]
-        RenderSVGText {text} at (-21,8) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-21.00,25.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_2_1"
+        RenderSVGText {text} at (4,14) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (4.00,25.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_2_1"
       RenderSVGContainer {g} at (85,160) size 365x340 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,160.00)}]
         RenderSVGRect {rect} at (85,160) size 365x340 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=30.00] [width=50.00] [height=40.00]
           [filter="filterRegion_2_2"] RenderSVGResourceFilter {filter} at (-45,-50) size 540x600
-      RenderSVGContainer {g} at (109,218) size 132x63 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,160.00)}]
+      RenderSVGContainer {g} at (134,224) size 82x57 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,160.00)}]
         RenderSVGRect {rect} at (149,239) size 52x42 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=20.00] [y=30.00] [width=50.00] [height=40.00]
-        RenderSVGText {text} at (-21,8) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-21.00,25.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_2_2"
+        RenderSVGText {text} at (4,14) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (4.00,25.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_2_2"
       RenderSVGContainer {g} at (185,160) size 265x340 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,160.00)}]
         [filter="filterRegion_2_3"] RenderSVGResourceFilter {filter} at (-45,-50) size 540x600
         RenderSVGRect {rect} at (250,240) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=30.00] [width=50.00] [height=40.00]
-      RenderSVGContainer {g} at (209,218) size 132x53 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,160.00)}]
+      RenderSVGContainer {g} at (234,224) size 82x47 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,160.00)}]
         RenderSVGRect {rect} at (262,259) size 26x12 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=32.50] [y=50.00] [width=25.00] [height=10.00]
-        RenderSVGText {text} at (-21,8) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-21.00,25.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_2_3"
+        RenderSVGText {text} at (4,14) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (4.00,25.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_2_3"
       RenderSVGContainer {g} at (285,160) size 165x340 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,160.00)}]
         [filter="filterRegion_2_4"] RenderSVGResourceFilter {filter} at (-45,-50) size 540x600
         RenderSVGRect {rect} at (350,240) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=30.00] [width=50.00] [height=40.00]
-      RenderSVGContainer {g} at (309,218) size 132x53 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,160.00)}]
+      RenderSVGContainer {g} at (334,224) size 82x47 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,160.00)}]
         RenderSVGRect {rect} at (362,259) size 26x12 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=32.50] [y=50.00] [width=25.00] [height=10.00]
-        RenderSVGText {text} at (-21,8) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-21.00,25.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_2_4"
+        RenderSVGText {text} at (4,14) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (4.00,25.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_2_4"
       RenderSVGContainer {g} at (50,325) size 50x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,245.00)}]
         [filter="filterRegion_2_5"] RenderSVGResourceFilter {filter} at (20,30) size 50x40
         RenderSVGRect {rect} at (50,325) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=30.00] [width=50.00] [height=40.00]
-      RenderSVGContainer {g} at (9,303) size 132x53 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,245.00)}]
+      RenderSVGContainer {g} at (34,309) size 82x47 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,245.00)}]
         RenderSVGRect {rect} at (49,344) size 52x12 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=20.00] [y=50.00] [width=50.00] [height=10.00]
-        RenderSVGText {text} at (-21,8) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-21.00,25.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_2_5"
+        RenderSVGText {text} at (4,14) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (4.00,25.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_2_5"
       RenderSVGContainer {g} at (0,335) size 450x165 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,330.00)}]
         [filter="filterRegion_3_1"] RenderSVGResourceFilter {filter} at (-45,-45) size 540x540
         RenderSVGRect {rect} at (30,380) size 420x120 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=450.00] [height=450.00]
-      RenderSVGContainer {g} at (9,388) size 132x48 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,330.00)}]
+      RenderSVGContainer {g} at (34,394) size 82x42 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,330.00)}]
         RenderSVGRect {rect} at (49,409) size 22x27 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=20.00] [y=30.00] [width=20.00] [height=25.00]
-        RenderSVGText {text} at (-21,8) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-21.00,25.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_3_1"
+        RenderSVGText {text} at (4,14) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (4.00,25.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_3_1"
       RenderSVGContainer {g} at (346,375) size 48x60 [transform={m=((1.00,0.00)(0.00,1.00)) t=(320.00,330.00)}]
         [filter="filterRegion_3_0"] RenderSVGResourceFilter {filter} at (-4,-5) size 48x60
         RenderSVGRect {rect} at (350,380) size 40x50 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=40.00] [height=50.00]
-      RenderSVGContainer {g} at (329,374) size 121x62 [transform={m=((1.00,0.00)(0.00,1.00)) t=(320.00,330.00)}]
+      RenderSVGContainer {g} at (345,374) size 91x62 [transform={m=((1.00,0.00)(0.00,1.00)) t=(320.00,330.00)}]
         RenderSVGRect {rect} at (345,374) size 50x62 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=-4.00] [y=-5.00] [width=48.00] [height=60.00]
-        RenderSVGText {text} at (-21,8) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-21.00,25.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_3_0"
+        RenderSVGText {text} at (4,14) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (4.00,25.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_3_0"
       RenderSVGContainer {g} at (130,380) size 100x80 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,330.00)}]
         [filter="filterRegion_3_2"] RenderSVGResourceFilter {filter} at (0,0) size 100x80
         RenderSVGRect {rect} at (180,420) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=50.00] [y=40.00] [width=50.00] [height=40.00]
-      RenderSVGContainer {g} at (109,379) size 132x82 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,330.00)}]
+      RenderSVGContainer {g} at (129,379) size 102x82 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,330.00)}]
         RenderSVGRect {rect} at (129,379) size 102x82 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=0.00] [y=0.00] [width=100.00] [height=80.00]
-        RenderSVGText {text} at (-21,8) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-21.00,25.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_3_2"
+        RenderSVGText {text} at (4,14) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (4.00,25.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_3_2"
       RenderSVGContainer {g} at (255,400) size 38x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,330.00)}]
         [filter="filterRegion_3_3"] RenderSVGResourceFilter {filter} at (25,20) size 37.50x30
         RenderSVGRect {rect} at (280,420) size 50x40 [fill={[type=SOLID] [color=#000000]}] [x=50.00] [y=40.00] [width=50.00] [height=40.00]
-      RenderSVGContainer {g} at (209,388) size 132x43 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,330.00)}]
+      RenderSVGContainer {g} at (234,394) size 82x37 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,330.00)}]
         RenderSVGRect {rect} at (254,399) size 39x32 [stroke={[type=SOLID] [color=#000000] [opacity=0.50]}] [x=25.00] [y=20.00] [width=37.50] [height=30.00]
-        RenderSVGText {text} at (-21,8) size 132x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 132x20
-            chunk 1 (middle anchor) text run 1 at (-21.00,25.00) startOffset 0 endOffset 16 width 132.00: "filterRegion_3_3"
-    RenderSVGContainer {use} at (0,0) size 0x0
+        RenderSVGText {text} at (4,14) size 82x13 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 82x13
+            chunk 1 (middle anchor) text run 1 at (4.00,25.00) startOffset 0 endOffset 16 width 82.00: "filterRegion_3_3"
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 5b0c5da..6e42e9a 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/masking/maskRegions-expected.png and b/LayoutTests/platform/mac/svg/batik/masking/maskRegions-expected.png differ
index ce21a73..56b43ee 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (90,35) size 265x369
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGContainer {g} at (90,35) size 265x369
       RenderSVGText {text} at (174,35) size 102x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 102x18
@@ -65,4 +65,11 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (24,-18) size 51x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 51x18
             chunk 1 (middle anchor) text run 1 at (24.50,-3.00) startOffset 0 endOffset 6 width 51.00: "Mask 4"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 3eecb69..20b2d35 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/paints/gradientLimit-expected.png and b/LayoutTests/platform/mac/svg/batik/paints/gradientLimit-expected.png differ
index 6fe2333..20e0517 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (13,30) size 433x224
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGText {text} at (158,30) size 134x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 134x18
         chunk 1 (middle anchor) text run 1 at (158.00,45.00) startOffset 0 endOffset 19 width 134.00: "Gradient Limit Test"
@@ -76,4 +76,11 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (15,135) size 119x18 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 119x18
             chunk 1 (middle anchor) text run 1 at (15.50,150.00) startOffset 0 endOffset 16 width 119.00: "<radialGradient>"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 52e878d..e9bc8ad 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.png and b/LayoutTests/platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.png differ
index 913d439..5310195 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (49,15) size 342x466
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGText {text} at (118,15) size 214x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 214x18
         chunk 1 (middle anchor) text run 1 at (118.00,30.00) startOffset 0 endOffset 29 width 214.00: "patterns, preserveAspectRatio"
@@ -864,4 +864,11 @@ layer at (0,0) size 450x500
             RenderSVGRect {rect} at (194,444) size 92x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,5.00)}] [stroke={[type=SOLID] [color=#000000]}] [fill={[type=PATTERN] [id="sliceNone"]}] [start marker=startEndMarker] [end marker=startEndMarker] [x=0.00] [y=0.00] [width=90.00] [height=30.00]
           RenderSVGContainer {use} at (294,444) size 92x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,0.00)}] [start marker=startEndMarker] [end marker=startEndMarker]
             RenderSVGRect {rect} at (294,444) size 92x32 [transform={m=((1.00,0.00)(0.00,1.00)) t=(45.00,5.00)}] [stroke={[type=SOLID] [color=#000000]}] [fill={[type=PATTERN] [id="noneNone"]}] [start marker=startEndMarker] [end marker=startEndMarker] [x=0.00] [y=0.00] [width=90.00] [height=30.00]
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index af54cac..25be86d 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/paints/patternRegionA-expected.png and b/LayoutTests/platform/mac/svg/batik/paints/patternRegionA-expected.png differ
index 3dfd8b9..916746a 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (24,35) size 426x426
+  RenderSVGRoot {svg} at (0,0) size 450x498
     RenderSVGText {text} at (109,35) size 231x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 231x18
         chunk 1 (middle anchor) text run 1 at (109.50,50.00) startOffset 0 endOffset 34 width 231.00: "patternRegion, x, y, width, height"
@@ -196,4 +196,11 @@ layer at (0,0) size 450x500
               chunk 1 text run 1 at (0.00,-5.00) startOffset 0 endOffset 33 width 241.00: "patternRegion higher than content"
           RenderSVGRect {rect} at (254,339) size 102x52 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=PATTERN] [id="patternWiderHigherRegion"]}] [x=0.00] [y=0.00] [width=100.00] [height=50.00]
           RenderSVGRect {rect} at (254,339) size 42x42 [stroke={[type=SOLID] [color=#FFFFFF]}] [fill={[type=SOLID] [color=#000000] [opacity=0.12]}] [x=0.00] [y=0.00] [width=40.00] [height=40.00]
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index aa6fc22..4f65fe3 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/paints/patternRegions-expected.png and b/LayoutTests/platform/mac/svg/batik/paints/patternRegions-expected.png differ
index 0e36a71..dd4c887 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (14,35) size 410x366
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGText {text} at (105,35) size 240x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 240x18
         chunk 1 (middle anchor) text run 1 at (105.00,50.00) startOffset 0 endOffset 34 width 240.00: "patternUnits / patternContentUnits"
@@ -158,4 +158,11 @@ layer at (0,0) size 450x500
             RenderSVGText {text} at (0,0) size 68x12 contains 1 chunk(s)
               RenderSVGInlineText {#text} at (0,0) size 68x12
                 chunk 1 text run 1 at (0.00,10.00) startOffset 0 endOffset 16 width 68.00: "overflow=visible"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 2e7e41c..f789432 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.png and b/LayoutTests/platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.png differ
index e2538c7..cbc4d9c 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (14,35) size 410x366
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGText {text} at (105,35) size 240x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 240x18
         chunk 1 (middle anchor) text run 1 at (105.00,50.00) startOffset 0 endOffset 34 width 240.00: "patternUnits / patternContentUnits"
@@ -167,4 +167,11 @@ layer at (0,0) size 450x500
               RenderSVGText {text} at (0,0) size 68x12 contains 1 chunk(s)
                 RenderSVGInlineText {#text} at (0,0) size 68x12
                   chunk 1 text run 1 at (0.00,10.00) startOffset 0 endOffset 16 width 68.00: "overflow=visible"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 9ccd22f..2e80efa 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/longTextOnPath-expected.png and b/LayoutTests/platform/mac/svg/batik/text/longTextOnPath-expected.png differ
index 6892ca6..53db0ba 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (20,25) size 407x450
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGContainer {g} at (20,25) size 407x450
       RenderSVGText {text} at (98,25) size 254x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 254x18
@@ -659,4 +659,11 @@ layer at (0,0) size 450x500
             chunk 1 text run 69 at (282.00,390.00) startOffset 68 endOffset 69 width 10.00: "d"
             chunk 1 text run 70 at (289.50,390.00) startOffset 69 endOffset 70 width 5.00: "."
         RenderSVGInlineText {#text} at (0,0) size 0x0
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 1444b7f..47fe89b 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/smallFonts-expected.png and b/LayoutTests/platform/mac/svg/batik/text/smallFonts-expected.png differ
index 4750951..32b46e1 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (0,0) size 400x500
+  RenderSVGRoot {svg} at (0,0) size 448x500
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourceFilter {filter} [id="blur"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
         [feGaussianBlur stdDeviation="0.04, 0.04"]
@@ -169,4 +169,11 @@ layer at (0,0) size 450x500
                   chunk 1 text run 6 at (2.19,0.52) startOffset 5 endOffset 6 width 0.08: "t"
                   chunk 1 text run 7 at (2.28,0.45) startOffset 6 endOffset 7 width 0.16: "h"
             RenderSVGInlineText {#text} at (0,0) size 0x0
-    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.02,0.00)(0.00,0.02)) t=(0.00,0.00)}]
+    RenderSVGContainer {use} at (0,0) size 448x498 [transform={m=((0.02,0.00)(0.00,0.02)) t=(0.00,0.00)}]
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 0ca0b13..e9eab70 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textAnchor-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textAnchor-expected.png differ
index 5a24e7a..a72c472 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (48,25) size 347x433
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGText {text} at (144,25) size 162x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 162x18
         chunk 1 (middle anchor) text run 1 at (144.00,40.00) startOffset 0 endOffset 22 width 162.00: "text-anchor on <tspan>"
@@ -160,4 +160,11 @@ layer at (0,0) size 450x500
               RenderSVGInlineText {#text} at (214,0) size 116x19
                 chunk 1 (end anchor) text run 1 at (204.00,30.00) startOffset 0 endOffset 18 width 116.00: "another text chunk"
             RenderSVGInlineText {#text} at (0,0) size 0x0
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 371f79a..f4829f6 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textDecoration-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textDecoration-expected.png differ
index 1a81888..25e9b6e 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (49,25) size 329x440
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourcePattern {pattern} [id="svgPattern"] [patternUnits=userSpaceOnUse] [patternContentUnits=userSpaceOnUse]
         RenderSVGContainer {g} at (0,0) size 10x10
@@ -95,4 +95,11 @@ layer at (0,0) size 450x500
                 chunk 1 text run 1 at (159.00,460.00) startOffset 0 endOffset 5 width 45.00: "decor"
             RenderSVGInlineText {#text} at (154,0) size 49x23
               chunk 1 text run 1 at (204.00,460.00) startOffset 0 endOffset 6 width 49.00: "ations"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 9ec035b..f2c6a35 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textEffect-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textEffect-expected.png differ
index 3f17331..3d1c020 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (28,15) size 395x388
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGContainer {g} at (28,15) size 395x388
       RenderSVGText {text} at (136,15) size 177x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 177x18
@@ -49,4 +49,11 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (302,389) size 55x14 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 55x14
           chunk 1 (middle anchor) text run 1 at (302.50,400.00) startOffset 0 endOffset 10 width 55.00: "(SVG font)"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 73a5c70..d78decb 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textEffect2-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textEffect2-expected.png differ
index 7238d62..54c8c45 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (100,15) size 265x290
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGContainer {g} at (100,15) size 265x290
       RenderSVGText {text} at (158,15) size 133x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 133x18
@@ -32,4 +32,11 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (300,289) size 55x14 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 55x14
           chunk 1 text run 1 at (300.00,300.00) startOffset 0 endOffset 10 width 55.00: "(SVG font)"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 4914745..830b545 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textEffect3-expected.png differ
index b854173..c76058c 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (39,15) size 387x388
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGContainer {g} at (39,15) size 387x388
       RenderSVGText {text} at (99,15) size 251x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 251x18
@@ -125,4 +125,11 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (302,389) size 55x14 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 55x14
           chunk 1 (middle anchor) text run 1 at (302.50,400.00) startOffset 0 endOffset 10 width 55.00: "(SVG font)"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 559d8d2..0383bcd 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textFeatures-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textFeatures-expected.png differ
index 00961ca..d4b9510 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (45,36) size 405x453
+  RenderSVGRoot {svg} at (0,0) size 450x498
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourceFilter {filter} [id="blur"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
         [feGaussianBlur stdDeviation="2.00, 2.00"]
@@ -153,4 +153,11 @@ layer at (0,0) size 450x500
           RenderSVGText {text} at (0,-36) size 129x46 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 129x46
               chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 129.00: "Shadow"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 43111d0..ac3e4aa 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textLayout-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textLayout-expected.png differ
index 4ee248c..c02ebe6 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (40,36) size 370x421
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGText {text} at (0,-14) size 44x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 44x18
@@ -238,4 +238,11 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (40,448) size 239x9 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 239x9
             chunk 1 text run 1 at (40.00,455.00) startOffset 0 endOffset 66 width 239.00: "textLength=\"350\" lengthAdjust=\"spacingAndGlyphs\" word-spacing=\"-5\""
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index ec53dbe..b6fdf15 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textLayout2-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textLayout2-expected.png differ
index 06dc10f..8e5ea77 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (90,36) size 250x436
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGText {text} at (0,-14) size 44x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 44x18
@@ -128,4 +128,11 @@ layer at (0,0) size 450x500
           chunk 1 (middle anchor) text run 17 at (266.00,465.00) startOffset 16 endOffset 17 width 8.00: "p"
           chunk 1 (middle anchor) text run 18 at (274.00,465.00) startOffset 17 endOffset 18 width 8.00: "h"
           chunk 1 (middle anchor) text run 19 at (282.00,465.00) startOffset 18 endOffset 19 width 6.00: "s"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 442d5fa..bd9ef22 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textLength-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textLength-expected.png differ
index 0dd76e1..8dab4c4 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (49,5) size 352x489
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGText {text} at (144,5) size 162x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 162x18
         chunk 1 (middle anchor) text run 1 at (144.00,20.00) startOffset 0 endOffset 22 width 162.00: "textLength with Anchor"
@@ -161,4 +161,11 @@ layer at (0,0) size 450x500
           RenderSVGTSpan {tspan} at (0,0) size 76x15
             RenderSVGInlineText {#text} at (0,28) size 76x14
               chunk 1 text run 1 at (160.00,68.80) startOffset 0 endOffset 15 width 76.00: "font-size=\"100\""
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 5e93153..3008eaa 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textOnPath-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textOnPath-expected.png differ
index ec41c2b..962be4a 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (9,25) size 430x418
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGContainer {g} at (9,25) size 430x418
       RenderSVGText {text} at (160,25) size 130x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 130x18
@@ -348,4 +348,11 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (15,30) size 98x12 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 98x12
             chunk 1 text run 1 at (15.00,40.00) startOffset 0 endOffset 26 width 98.00: "text before/after textPath"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index d156db8..2dfab97 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textOnPathSpaces-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textOnPathSpaces-expected.png differ
index 738b39f..5c5ca44 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (2,25) size 435x418
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGContainer {g} at (2,25) size 435x418
       RenderSVGText {text} at (95,25) size 259x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 259x18
@@ -251,4 +251,11 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (35,80) size 84x12 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 84x12
             chunk 1 text run 1 at (35.00,90.00) startOffset 0 endOffset 18 width 84.00: "\"spacingAndGlyphs\""
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index d8e4320..77e3f0c 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textPosition-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textPosition-expected.png differ
index eb65dcc..08acb09 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (50,15) size 399x388
+  RenderSVGRoot {svg} at (0,0) size 449x498
     RenderSVGText {text} at (178,15) size 93x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 93x18
         chunk 1 (middle anchor) text run 1 at (178.50,30.00) startOffset 0 endOffset 13 width 93.00: "Text Position"
@@ -135,4 +135,11 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (240,390) size 114x12 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 114x12
           chunk 1 text run 1 at (240.00,400.00) startOffset 0 endOffset 22 width 114.00: "Empty Preceeding tspan"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 63e225c..adc8de7 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textPosition2-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textPosition2-expected.png differ
index aba084d..92ecdc5 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (50,15) size 399x339
+  RenderSVGRoot {svg} at (0,0) size 449x498
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
     RenderSVGText {text} at (172,15) size 106x18 contains 1 chunk(s)
       RenderSVGInlineText {#text} at (0,0) size 106x18
@@ -112,4 +112,11 @@ layer at (0,0) size 450x500
         RenderSVGTSpan {tspan} at (0,0) size 158x12
           RenderSVGInlineText {#text} at (33,11) size 158x12
             chunk 1 text run 1 at (273.00,351.00) startOffset 0 endOffset 34 width 158.00: "y=\"320\" style=\"letter-spacing:10\">"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index da850d8..c981fd9 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textProperties-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textProperties-expected.png differ
index ff1a3de..0b83da4 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (0,36) size 430x434
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourceFilter {filter} [id="gaussianBlur"] [filterUnits=userSpaceOnUse] [primitiveUnits=userSpaceOnUse]
         [feGaussianBlur stdDeviation="2.00, 2.00"]
@@ -158,4 +158,11 @@ layer at (0,0) size 450x500
       RenderSVGText {text} at (226,451) size 148x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 148x18
           chunk 1 (middle anchor) text run 1 at (226.00,465.00) startOffset 0 endOffset 22 width 148.00: "stroke-linecap=\"round\""
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 15d1365..a739644 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textProperties2-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textProperties2-expected.png differ
index 271ccb5..5ba0001 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (12,26) size 438x307
+  RenderSVGRoot {svg} at (0,0) size 450x498
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
     RenderSVGContainer {g} at (12,26) size 438x307
       RenderSVGText {text} at (142,26) size 166x17 contains 1 chunk(s)
@@ -138,4 +138,11 @@ layer at (0,0) size 450x500
             chunk 1 text run 1 at (20.00,230.00) startOffset 0 endOffset 5 width 33.60: "Text "
           RenderSVGInlineText {#text} at (33,0) size 67x19
             chunk 1 text run 1 at (53.60,230.00) startOffset 0 endOffset 11 width 66.40: "finish text"
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 442df0d..dc0f753 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/textStyles-expected.png and b/LayoutTests/platform/mac/svg/batik/text/textStyles-expected.png differ
index 20b8eac..aaf2d3f 100644 (file)
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (0,36) size 450x397
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGText {text} at (-22,-14) size 44x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 44x18
           chunk 1 (middle anchor) text run 1 at (-22.00,0.00) startOffset 0 endOffset 6 width 44.00: "sample"
-    RenderSVGContainer {g} at (0,36) size 450x397
+    RenderSVGContainer {g} at (32,36) size 382x392
       RenderSVGText {text} at (135,36) size 180x17 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 180x17
           chunk 1 (middle anchor) text run 1 at (135.00,50.00) startOffset 0 endOffset 26 width 180.00: "Text Font Faces and Styles"
       RenderSVGText {text} at (184,65) size 82x12 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 82x12
           chunk 1 (middle anchor) text run 1 at (184.00,75.00) startOffset 0 endOffset 19 width 82.00: "Standard Font Faces"
-      RenderSVGContainer {g} at (0,82) size 252x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,110.00)}]
+      RenderSVGContainer {g} at (40,82) size 120x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,110.00)}]
         RenderSVGContainer {use} at (58,82) size 84x36
           RenderSVGText {text} at (-42,-28) size 84x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 84x35
               chunk 1 (middle anchor) text run 1 at (-42.00,0.00) startOffset 0 endOffset 6 width 84.00: "sample"
-        RenderSVGText {text} at (-152,-13) size 304x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 304x35
-            chunk 1 (middle anchor) text run 1 at (-152.00,15.00) startOffset 0 endOffset 24 width 304.00: "SansSerif, normal weight"
-      RenderSVGContainer {g} at (133,82) size 184x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,110.00)}]
+        RenderSVGText {text} at (-60,4) size 120x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 120x14
+            chunk 1 (middle anchor) text run 1 at (-60.00,15.00) startOffset 0 endOffset 24 width 120.00: "SansSerif, normal weight"
+      RenderSVGContainer {g} at (180,82) size 90x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,110.00)}]
         RenderSVGContainer {use} at (180,82) size 90x36
           RenderSVGText {text} at (-45,-28) size 90x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 90x35
               chunk 1 (middle anchor) text run 1 at (-45.00,0.00) startOffset 0 endOffset 6 width 90.00: "sample"
-        RenderSVGText {text} at (-92,-13) size 184x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 184x35
-            chunk 1 (middle anchor) text run 1 at (-92.00,15.00) startOffset 0 endOffset 15 width 184.00: "SansSerif, bold"
-      RenderSVGContainer {g} at (240,82) size 210x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,110.00)}]
+        RenderSVGText {text} at (-37,4) size 73x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 73x14
+            chunk 1 (middle anchor) text run 1 at (-36.50,15.00) startOffset 0 endOffset 15 width 73.00: "SansSerif, bold"
+      RenderSVGContainer {g} at (306,82) size 88x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,110.00)}]
         RenderSVGContainer {use} at (307,82) size 86x36
           RenderSVGText {text} at (-43,-28) size 85x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 85x35
               chunk 1 (middle anchor) text run 1 at (-42.50,0.00) startOffset 0 endOffset 6 width 85.00: "sample"
-        RenderSVGText {text} at (-110,-13) size 220x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 220x35
-            chunk 1 (middle anchor) text run 1 at (-110.00,15.00) startOffset 0 endOffset 18 width 220.00: "SansSerif, oblique"
-      RenderSVGContainer {g} at (0,132) size 224x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,160.00)}]
+        RenderSVGText {text} at (-44,4) size 87x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 87x14
+            chunk 1 (middle anchor) text run 1 at (-43.50,15.00) startOffset 0 endOffset 18 width 87.00: "SansSerif, oblique"
+      RenderSVGContainer {g} at (51,132) size 98x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,160.00)}]
         RenderSVGContainer {use} at (58,132) size 84x36
           RenderSVGText {text} at (-42,-28) size 84x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 84x35
               chunk 1 (middle anchor) text run 1 at (-42.00,0.00) startOffset 0 endOffset 6 width 84.00: "sample"
-        RenderSVGText {text} at (-124,-13) size 247x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 247x35
-            chunk 1 (middle anchor) text run 1 at (-123.50,15.00) startOffset 0 endOffset 20 width 247.00: "Serif, normal weight"
-      RenderSVGContainer {g} at (161,132) size 128x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,160.00)}]
+        RenderSVGText {text} at (-49,4) size 97x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 97x14
+            chunk 1 (middle anchor) text run 1 at (-48.50,15.00) startOffset 0 endOffset 20 width 97.00: "Serif, normal weight"
+      RenderSVGContainer {g} at (180,132) size 90x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,160.00)}]
         RenderSVGContainer {use} at (180,132) size 90x36
           RenderSVGText {text} at (-45,-28) size 90x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 90x35
               chunk 1 (middle anchor) text run 1 at (-45.00,0.00) startOffset 0 endOffset 6 width 90.00: "sample"
-        RenderSVGText {text} at (-64,-13) size 127x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 127x35
-            chunk 1 (middle anchor) text run 1 at (-63.50,15.00) startOffset 0 endOffset 11 width 127.00: "Serif, bold"
-      RenderSVGContainer {g} at (268,132) size 164x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,160.00)}]
+        RenderSVGText {text} at (-25,4) size 50x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 50x14
+            chunk 1 (middle anchor) text run 1 at (-25.00,15.00) startOffset 0 endOffset 11 width 50.00: "Serif, bold"
+      RenderSVGContainer {g} at (307,132) size 86x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,160.00)}]
         RenderSVGContainer {use} at (307,132) size 86x36
           RenderSVGText {text} at (-43,-28) size 85x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 85x35
               chunk 1 (middle anchor) text run 1 at (-42.50,0.00) startOffset 0 endOffset 6 width 85.00: "sample"
-        RenderSVGText {text} at (-82,-13) size 163x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 163x35
-            chunk 1 (middle anchor) text run 1 at (-81.50,15.00) startOffset 0 endOffset 14 width 163.00: "Serif, oblique"
-      RenderSVGContainer {g} at (0,182) size 271x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,210.00)}]
+        RenderSVGText {text} at (-32,4) size 64x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 64x14
+            chunk 1 (middle anchor) text run 1 at (-32.00,15.00) startOffset 0 endOffset 14 width 64.00: "Serif, oblique"
+      RenderSVGContainer {g} at (32,182) size 136x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,210.00)}]
         RenderSVGContainer {use} at (58,182) size 84x36
           RenderSVGText {text} at (-42,-28) size 84x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 84x35
               chunk 1 (middle anchor) text run 1 at (-42.00,0.00) startOffset 0 endOffset 6 width 84.00: "sample"
-        RenderSVGText {text} at (-171,-13) size 342x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 342x35
-            chunk 1 (middle anchor) text run 1 at (-171.00,15.00) startOffset 0 endOffset 25 width 342.00: "Monospaced, normal weight"
-      RenderSVGContainer {g} at (114,182) size 222x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,210.00)}]
+        RenderSVGText {text} at (-68,4) size 135x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 135x14
+            chunk 1 (middle anchor) text run 1 at (-67.50,15.00) startOffset 0 endOffset 25 width 135.00: "Monospaced, normal weight"
+      RenderSVGContainer {g} at (180,182) size 90x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,210.00)}]
         RenderSVGContainer {use} at (180,182) size 90x36
           RenderSVGText {text} at (-45,-28) size 90x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 90x35
               chunk 1 (middle anchor) text run 1 at (-45.00,0.00) startOffset 0 endOffset 6 width 90.00: "sample"
-        RenderSVGText {text} at (-111,-13) size 222x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 222x35
-            chunk 1 (middle anchor) text run 1 at (-111.00,15.00) startOffset 0 endOffset 16 width 222.00: "Monospaced, bold"
-      RenderSVGContainer {g} at (221,182) size 229x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,210.00)}]
+        RenderSVGText {text} at (-44,4) size 88x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 88x14
+            chunk 1 (middle anchor) text run 1 at (-44.00,15.00) startOffset 0 endOffset 16 width 88.00: "Monospaced, bold"
+      RenderSVGContainer {g} at (299,182) size 102x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,210.00)}]
         RenderSVGContainer {use} at (307,182) size 86x36
           RenderSVGText {text} at (-43,-28) size 85x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 85x35
               chunk 1 (middle anchor) text run 1 at (-42.50,0.00) startOffset 0 endOffset 6 width 85.00: "sample"
-        RenderSVGText {text} at (-129,-13) size 258x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 258x35
-            chunk 1 (middle anchor) text run 1 at (-129.00,15.00) startOffset 0 endOffset 19 width 258.00: "Monospaced, oblique"
-      RenderSVGContainer {g} at (49,232) size 102x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,260.00)}]
+        RenderSVGText {text} at (-51,4) size 102x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 102x14
+            chunk 1 (middle anchor) text run 1 at (-51.00,15.00) startOffset 0 endOffset 19 width 102.00: "Monospaced, oblique"
+      RenderSVGContainer {g} at (58,232) size 84x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,260.00)}]
         RenderSVGContainer {use} at (58,232) size 84x36
           RenderSVGText {text} at (-42,-28) size 84x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 84x35
               chunk 1 (middle anchor) text run 1 at (-42.00,0.00) startOffset 0 endOffset 6 width 84.00: "sample"
-        RenderSVGText {text} at (-51,-13) size 102x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 102x35
-            chunk 1 (middle anchor) text run 1 at (-51.00,15.00) startOffset 0 endOffset 9 width 102.00: "(default)"
-      RenderSVGContainer {g} at (97,232) size 256x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,260.00)}]
+        RenderSVGText {text} at (-20,4) size 40x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 40x14
+            chunk 1 (middle anchor) text run 1 at (-20.00,15.00) startOffset 0 endOffset 9 width 40.00: "(default)"
+      RenderSVGContainer {g} at (175,232) size 100x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,260.00)}]
         RenderSVGContainer {use} at (182,232) size 86x36
           RenderSVGText {text} at (-43,-28) size 86x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 86x35
               chunk 1 (middle anchor) text run 1 at (-43.00,0.00) startOffset 0 endOffset 6 width 86.00: "sample"
-        RenderSVGText {text} at (-128,-13) size 256x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 256x35
-            chunk 1 (middle anchor) text run 1 at (-128.00,15.00) startOffset 0 endOffset 22 width 256.00: "default, bold, oblique"
-      RenderSVGContainer {g} at (196,231) size 254x52 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,260.00)}]
+        RenderSVGText {text} at (-50,4) size 100x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 100x14
+            chunk 1 (middle anchor) text run 1 at (-50.00,15.00) startOffset 0 endOffset 22 width 100.00: "default, bold, oblique"
+      RenderSVGContainer {g} at (289,231) size 122x47 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,260.00)}]
         RenderSVGContainer {use} at (307,231) size 86x38
           RenderSVGText {text} at (-42,-28) size 84x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 84x35
               chunk 1 (middle anchor) text run 1 at (-42.00,0.00) startOffset 0 endOffset 6 width 84.00: "sample"
-        RenderSVGText {text} at (-154,-13) size 308x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 308x35
-            chunk 1 (middle anchor) text run 1 at (-154.00,15.00) startOffset 0 endOffset 25 width 308.00: "stroke-width=1, fill=none"
+        RenderSVGText {text} at (-61,4) size 122x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 122x14
+            chunk 1 (middle anchor) text run 1 at (-61.00,15.00) startOffset 0 endOffset 25 width 122.00: "stroke-width=1, fill=none"
       RenderSVGText {text} at (181,300) size 88x12 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 88x12
           chunk 1 (middle anchor) text run 1 at (181.00,310.00) startOffset 0 endOffset 19 width 88.00: "Named Font Families"
       RenderSVGText {text} at (128,315) size 193x12 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 193x12
           chunk 1 (middle anchor) text run 1 at (128.50,325.00) startOffset 0 endOffset 49 width 193.00: "(Not all typefaces are available on all systems.)"
-      RenderSVGContainer {g} at (58,332) size 84x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,360.00)}]
+      RenderSVGContainer {g} at (58,332) size 84x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,360.00)}]
         RenderSVGContainer {use} at (58,332) size 84x36
           RenderSVGText {text} at (-42,-28) size 84x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 84x35
               chunk 1 (middle anchor) text run 1 at (-42.00,0.00) startOffset 0 endOffset 6 width 84.00: "sample"
-        RenderSVGText {text} at (-37,-13) size 74x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 74x35
-            chunk 1 (middle anchor) text run 1 at (-37.00,15.00) startOffset 0 endOffset 5 width 74.00: "Times"
-      RenderSVGContainer {g} at (171,329) size 108x54 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,360.00)}]
+        RenderSVGText {text} at (-15,4) size 29x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 29x14
+            chunk 1 (middle anchor) text run 1 at (-14.50,15.00) startOffset 0 endOffset 5 width 29.00: "Times"
+      RenderSVGContainer {g} at (171,329) size 108x49 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,360.00)}]
         RenderSVGContainer {use} at (171,329) size 108x38
           RenderSVGText {text} at (-54,-31) size 108x37 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 108x37
               chunk 1 (middle anchor) text run 1 at (-54.00,0.00) startOffset 0 endOffset 6 width 108.00: "sample"
-        RenderSVGText {text} at (-51,-13) size 101x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 101x35
-            chunk 1 (middle anchor) text run 1 at (-50.50,15.00) startOffset 0 endOffset 7 width 101.00: "Verdana"
-      RenderSVGContainer {g} at (293,331) size 114x52 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,360.00)}]
+        RenderSVGText {text} at (-20,4) size 40x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 40x14
+            chunk 1 (middle anchor) text run 1 at (-20.00,15.00) startOffset 0 endOffset 7 width 40.00: "Verdana"
+      RenderSVGContainer {g} at (301,331) size 98x47 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,360.00)}]
         RenderSVGContainer {use} at (301,331) size 98x36
           RenderSVGText {text} at (-49,-29) size 98x35 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 98x35
               chunk 1 (middle anchor) text run 1 at (-49.00,0.00) startOffset 0 endOffset 6 width 98.00: "sample"
-        RenderSVGText {text} at (-57,-13) size 113x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 113x35
-            chunk 1 (middle anchor) text run 1 at (-56.50,15.00) startOffset 0 endOffset 9 width 113.00: "Helvetica"
-      RenderSVGContainer {g} at (0,382) size 208x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,410.00)}]
+        RenderSVGText {text} at (-22,4) size 44x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 44x14
+            chunk 1 (middle anchor) text run 1 at (-22.00,15.00) startOffset 0 endOffset 9 width 44.00: "Helvetica"
+      RenderSVGContainer {g} at (51,382) size 98x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,410.00)}]
         RenderSVGText {text} at (-49,-28) size 98x34 contains 1 chunk(s)
           RenderSVGInline {tref} at (0,0) size 98x34
             RenderSVGInlineText {#text} at (0,0) size 98x34
               chunk 1 (middle anchor) text run 1 at (-49.00,0.00) startOffset 0 endOffset 6 width 98.00: "sample"
-        RenderSVGText {text} at (-108,-13) size 216x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 216x35
-            chunk 1 (middle anchor) text run 1 at (-108.00,15.00) startOffset 0 endOffset 18 width 216.00: "Arial (underlined)"
-      RenderSVGContainer {g} at (179,379) size 92x54 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,410.00)}]
+        RenderSVGText {text} at (-43,4) size 85x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 85x14
+            chunk 1 (middle anchor) text run 1 at (-42.50,15.00) startOffset 0 endOffset 18 width 85.00: "Arial (underlined)"
+      RenderSVGContainer {g} at (179,379) size 92x49 [transform={m=((1.00,0.00)(0.00,1.00)) t=(225.00,410.00)}]
         RenderSVGContainer {use} at (179,379) size 92x38
           RenderSVGText {text} at (-46,-31) size 91x37 contains 1 chunk(s)
             RenderSVGInlineText {#text} at (0,0) size 91x37
               chunk 1 (middle anchor) text run 1 at (-45.50,0.00) startOffset 0 endOffset 6 width 91.00: "sample"
-        RenderSVGText {text} at (-41,-13) size 82x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 82x35
-            chunk 1 (middle anchor) text run 1 at (-41.00,15.00) startOffset 0 endOffset 6 width 82.00: "Impact"
-      RenderSVGContainer {g} at (189,382) size 261x51 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,410.00)}]
+        RenderSVGText {text} at (-16,4) size 32x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 32x14
+            chunk 1 (middle anchor) text run 1 at (-16.00,15.00) startOffset 0 endOffset 6 width 32.00: "Impact"
+      RenderSVGContainer {g} at (286,382) size 128x46 [transform={m=((1.00,0.00)(0.00,1.00)) t=(350.00,410.00)}]
         RenderSVGText {text} at (-42,-28) size 84x35 contains 1 chunk(s)
           RenderSVGInline {tref} at (0,0) size 84x35
             RenderSVGInlineText {#text} at (0,0) size 84x35
               chunk 1 (middle anchor) text run 1 at (-42.00,0.00) startOffset 0 endOffset 6 width 84.00: "sample"
-        RenderSVGText {text} at (-161,-13) size 321x35 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 321x35
-            chunk 1 (middle anchor) text run 1 at (-160.50,15.00) startOffset 0 endOffset 25 width 321.00: "AvantGarde (line-through)"
-    RenderSVGContainer {use} at (0,0) size 0x0
+        RenderSVGText {text} at (-64,4) size 127x14 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 127x14
+            chunk 1 (middle anchor) text run 1 at (-63.50,15.00) startOffset 0 endOffset 25 width 127.00: "AvantGarde (line-through)"
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index c0c8a0f..65d63b2 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/verticalText-expected.png and b/LayoutTests/platform/mac/svg/batik/text/verticalText-expected.png differ
index b1f7f57..796a6a3 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (20,25) size 410x470
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGPath {path} at (14,0) size 317x45 [transform={m=((0.15,0.00)(0.00,0.15)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#0000FF]}] [data="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 0 1000 100 C 1100 200 1200 300 1300 200 C 1400 100 1500 0 1600 100 C 1700 200 1800 300 1900 200 C 2000 100 2100 0 2200 100"]
     RenderSVGContainer {g} at (20,25) size 410x470
@@ -267,4 +267,11 @@ layer at (0,0) size 450x500
               chunk 1 (vertical) text run 24 at (288.08,26.93) startOffset 23 endOffset 24 height 14.00: "\x{753B}"
               chunk 1 (vertical) text run 25 at (298.36,17.42) startOffset 24 endOffset 25 height 14.00: "\x{50CF}"
           RenderSVGInlineText {#text} at (0,0) size 0x0
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
index 58ba5ed..73a0a76 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/batik/text/verticalTextOnPath-expected.png and b/LayoutTests/platform/mac/svg/batik/text/verticalTextOnPath-expected.png differ
index 6e28323..5c25c26 100644 (file)
@@ -1,7 +1,7 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
-  RenderSVGRoot {svg} at (9,25) size 438x458
+  RenderSVGRoot {svg} at (0,0) size 448x498
     RenderSVGContainer {g} at (9,25) size 438x458
       RenderSVGText {text} at (134,25) size 182x18 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 182x18
@@ -389,4 +389,11 @@ layer at (0,0) size 450x500
         RenderSVGText {text} at (0,100) size 100x12 contains 1 chunk(s)
           RenderSVGInlineText {#text} at (0,0) size 100x12
             chunk 1 text run 1 at (0.00,110.00) startOffset 0 endOffset 24 width 100.00: "glyph-orientation=\"auto\""
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 448x498
+      RenderSVGContainer {g} at (0,0) size 448x498
+        RenderSVGRect {rect} at (0,0) size 448x498 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=446.00] [height=496.00]
+        RenderSVGContainer {g} at (418,466) size 28x30 [transform={m=((1.00,0.00)(0.00,1.00)) t=(418.00,467.00)}]
+          RenderSVGViewportContainer {svg} at (418,466) size 28x30
+            RenderSVGPath {path} at (418,468) size 14x19 [fill={[type=SOLID] [color=#6666FF]}] [data="M 172 44 C 137 60 31 135 11 199 C 3 226 33 247 55 232 C 14 306 -1 332 0 356 C 0 370 13 398 44 383 C 52 379 79 358 96 342 C 110 341 120 331 138 314 C 155 328 174 324 190 307 C 212 309 272 229 234 199 C 231 175 204 162 181 181 C 175 179 168 180 163 182 C 185 147 206 100 212 77 C 219 47 188 36 172 44 Z"]
+            RenderSVGPath {path} at (432,466) size 14x17 [fill={[type=SOLID] [color=#FF0000]}] [data="M 400 0 C 382 3 351 31 351 31 C 322 54 308 89 323 126 C 310 140 294 170 294 193 C 294 221 314 245 344 222 C 351 230 365 238 381 227 C 376 256 384 275 407 276 C 408 286 420 307 443 293 C 459 283 501 254 522 237 C 547 214 547 143 504 148 C 537 89 501 52 477 64 C 467 68 431 89 425 94 C 424 87 420 82 414 80 C 436 45 436 -5 401 0 Z"]
+            RenderSVGPath {path} at (425,484) size 16x12 [fill={[type=SOLID] [color=#33CC33]}] [data="M 275 353 C 229 365 187 396 161 444 C 152 460 167 481 186 477 C 172 501 146 544 171 558 C 199 574 223 550 231 543 C 249 564 281 553 312 526 C 353 540 380 524 415 473 C 423 461 445 430 445 408 C 445 392 430 378 410 387 C 409 375 401 349 357 368 C 347 362 326 363 303 385 C 308 375 300 347 275 353 Z"]
diff --git a/LayoutTests/platform/mac/svg/custom/use-extern-href-expected.png b/LayoutTests/platform/mac/svg/custom/use-extern-href-expected.png
new file mode 100644 (file)
index 0000000..79b5667
Binary files /dev/null and b/LayoutTests/platform/mac/svg/custom/use-extern-href-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/custom/use-extern-href-expected.txt b/LayoutTests/platform/mac/svg/custom/use-extern-href-expected.txt
new file mode 100644 (file)
index 0000000..1b17b37
--- /dev/null
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (0,0) size 192x224
+    RenderSVGContainer {use} at (0,0) size 192x64
+      RenderSVGViewportContainer {svg} at (0,0) size 192x64
+        RenderSVGContainer {g} at (0,0) size 192x64
+          RenderSVGRect {rect} at (0,0) size 64x64 [fill={[type=SOLID] [color=#CC0000]}] [x=0.00] [y=0.00] [width=64.00] [height=64.00]
+          RenderSVGRect {rect} at (64,0) size 64x64 [fill={[type=SOLID] [color=#009900]}] [x=64.00] [y=0.00] [width=64.00] [height=64.00]
+          RenderSVGRect {rect} at (128,0) size 64x64 [fill={[type=SOLID] [color=#0000FF]}] [x=128.00] [y=0.00] [width=64.00] [height=64.00]
+    RenderSVGContainer {use} at (0,80) size 192x64 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,80.00)}]
+      RenderSVGContainer {g} at (0,80) size 192x64
+        RenderSVGRect {rect} at (0,80) size 64x64 [fill={[type=SOLID] [color=#CC0000]}] [x=0.00] [y=0.00] [width=64.00] [height=64.00]
+        RenderSVGRect {rect} at (64,80) size 64x64 [fill={[type=SOLID] [color=#009900]}] [x=64.00] [y=0.00] [width=64.00] [height=64.00]
+        RenderSVGRect {rect} at (128,80) size 64x64 [fill={[type=SOLID] [color=#0000FF]}] [x=128.00] [y=0.00] [width=64.00] [height=64.00]
+    RenderSVGContainer {use} at (0,160) size 64x64 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,160.00)}]
+      RenderSVGRect {rect} at (0,160) size 64x64 [fill={[type=SOLID] [color=#CC0000]}] [x=0.00] [y=0.00] [width=64.00] [height=64.00]
+    RenderSVGContainer {use} at (64,160) size 64x64 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,160.00)}]
+      RenderSVGRect {rect} at (64,160) size 64x64 [fill={[type=SOLID] [color=#009900]}] [x=64.00] [y=0.00] [width=64.00] [height=64.00]
+    RenderSVGContainer {use} at (128,160) size 64x64 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,160.00)}]
+      RenderSVGRect {rect} at (128,160) size 64x64 [fill={[type=SOLID] [color=#0000FF]}] [x=128.00] [y=0.00] [width=64.00] [height=64.00]
+    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
+    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
+    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,240.00)}]
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.png
new file mode 100644 (file)
index 0000000..76e29e5
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.png
new file mode 100644 (file)
index 0000000..33335b1
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.png
new file mode 100644 (file)
index 0000000..cd716ee
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.png differ
diff --git a/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.png b/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.png
new file mode 100644 (file)
index 0000000..6c2ef33
Binary files /dev/null and b/LayoutTests/platform/mac/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.png differ
index 82e0457..634fdee 100644 (file)
@@ -3,4 +3,6 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 200x200
     RenderSVGRect {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=200.00] [height=200.00]
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 200x200
+      RenderSVGContainer {g} at (0,0) size 200x200
+        RenderSVGRect {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=200.00] [height=200.00]
index e63d7e3..51e6751 100644 (file)
Binary files a/LayoutTests/platform/mac/svg/hixie/use/002-expected.png and b/LayoutTests/platform/mac/svg/hixie/use/002-expected.png differ
index 1dd9687..cf89eb0 100644 (file)
@@ -3,4 +3,6 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 200x200
     RenderSVGRect {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=200.00] [height=200.00]
-    RenderSVGContainer {use} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 200x200
+      RenderSVGContainer {g} at (0,0) size 200x200
+        RenderSVGRect {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=200.00] [height=200.00]
diff --git a/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg b/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg
new file mode 100644 (file)
index 0000000..92f9aa1
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.2" baseProfile="tiny" xml:id="svg-root" width="100%" height="100%"
+  viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xe="http://www.w3.org/2001/xml-events">
+  <!--======================================================================-->
+  <!--=  Copyright 2008 World Wide Web Consortium, (Massachusetts          =-->
+  <!--=  Institute of Technology, European Research Consortium for         =-->
+  <!--=  Informatics and Mathematics (ERCIM), Keio University).            =-->
+  <!--=  All Rights Reserved.                                              =-->
+  <!--=  See http://www.w3.org/Consortium/Legal/.                          =-->
+  <!--======================================================================-->
+  <SVGTestCase xmlns="http://www.w3.org/2000/02/svg/testsuite/description/"
+    reviewer="AE" owner="DS" desc="Test for recursion in 'use' elements." status="accepted"
+    approved="yes"
+    version="$Revision: 1.5 $" testname="$RCSfile: struct-use-recursion-01-t.svg,v $">
+    <d:OperatorScript xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/" xmlns="http://www.w3.org/1999/xhtml">
+      <p>
+        This test checks for recursion in 'use' elements.  The passing conditions are that the browser does not crash, and that at least one orange circle, and one yellow circle, and a line of green text are rendered.
+        Also, on an implementation-specific basis, additional orange and yellow circles with a dashed gray stroke may or may not be rendered, depending upon when and how the implementation detects the circular reference,
+        with the number of dashed circles of a given color indicating now many times the level of recurrsion permitted by the implementation.
+      </p>
+    </d:OperatorScript>
+  </SVGTestCase>
+  <title xml:id="test-title">$RCSfile: struct-use-recursion-01-t.svg,v $</title>
+  <defs>
+    <font-face
+      font-family="SVGFreeSansASCII"
+      unicode-range="U+0-7F">
+      <font-face-src>
+        <font-face-uri xlink:href="../images/SVGFreeSans.svg#ascii"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <g xml:id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
+
+    <g xml:id="group-1">
+      <circle xml:id="circle-1" cx='100' cy='25' r='10' fill='#FF7F00' />
+      <use xml:id="use-1" x="0" y="25" xlink:href="#group-2" stroke="gray" stroke-width="2" stroke-dasharray="4" stroke-linecap="round"/>
+    </g>
+    <g xml:id="group-2">
+      <circle xml:id="circle-2" cx='380' cy='25' r='10' fill='#FFFF00' />
+      <use xml:id="use-2" x="0" y="25"  xlink:href="#group-1" stroke="gray" stroke-width="2" stroke-dasharray="4" stroke-linecap="round"/>
+    </g>
+
+    <text xml:id="pass" x="240" y="280" text-anchor="middle" fill="green" font-size="24">This text should be visible.</text>
+
+  </g>
+  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+    <text xml:id="revision" x="10" y="340" stroke="none"
+      fill="black">$Revision: 1.5 $</text>
+  </g>
+  <rect xml:id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
+
+</svg>
diff --git a/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg b/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg
new file mode 100644 (file)
index 0000000..d658093
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.2" baseProfile="tiny" xml:id="svg-root" width="100%" height="100%"
+  viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xe="http://www.w3.org/2001/xml-events">
+  <!--======================================================================-->
+  <!--=  Copyright 2008 World Wide Web Consortium, (Massachusetts          =-->
+  <!--=  Institute of Technology, European Research Consortium for         =-->
+  <!--=  Informatics and Mathematics (ERCIM), Keio University).            =-->
+  <!--=  All Rights Reserved.                                              =-->
+  <!--=  See http://www.w3.org/Consortium/Legal/.                          =-->
+  <!--======================================================================-->
+  <SVGTestCase xmlns="http://www.w3.org/2000/02/svg/testsuite/description/"
+    reviewer="AE" owner="DS" desc="Test for recursion in 'use' elements referencing external files." status="accepted"
+    approved="yes"
+    version="$Revision: 1.5 $" testname="$RCSfile: struct-use-recursion-02-t.svg,v $">
+    <d:OperatorScript xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/" xmlns="http://www.w3.org/1999/xhtml">
+      <p>
+        This test checks for recursion in 'use' elements with external references.  The passing conditions are that the browser does not crash, and that the green test is rendered.  The passing conditions are that the
+        browser does not crash, and that at least one orange circle and a line of green text are rendered.  Also, on an implementation-specific basis, additional orange and yellow circles with a dashed gray stroke may or may
+        not be rendered, depending upon when and how the implementation detects the circular reference, with the number of dashed circles of a given color indicating now many times the level of recurrsion permitted by the implementation..
+      </p>
+      <p>
+        This test depends upon 'struct-use-recursion-03-t.svg'.
+      </p>
+    </d:OperatorScript>
+  </SVGTestCase>
+  <title xml:id="test-title">$RCSfile: struct-use-recursion-02-t.svg,v $</title>
+  <defs>
+    <font-face
+      font-family="SVGFreeSansASCII"
+      unicode-range="U+0-7F">
+      <font-face-src>
+        <font-face-uri xlink:href="../images/SVGFreeSans.svg#ascii"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <g xml:id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
+
+    <g xml:id="group-1">
+      <circle xml:id="circle-1" cx='100' cy='25' r='10' fill='#FF7F00' />
+      <use xml:id="use-1" x="0" y="25" xlink:href="struct-use-recursion-03-t.svg#group-2" stroke="gray" stroke-width="2" stroke-dasharray="4" stroke-linecap="round"/>
+    </g>
+
+    <text xml:id="pass" x="240" y="280" text-anchor="middle" fill="green" font-size="24">This text should be visible.</text>
+
+  </g>
+  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+    <text xml:id="revision" x="10" y="340" stroke="none"
+      fill="black">$Revision: 1.5 $</text>
+  </g>
+  <rect xml:id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
+
+</svg>
diff --git a/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg b/LayoutTests/svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg
new file mode 100644 (file)
index 0000000..b135c43
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.2" baseProfile="tiny" xml:id="svg-root" width="100%" height="100%"
+  viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xe="http://www.w3.org/2001/xml-events">
+  <!--======================================================================-->
+  <!--=  Copyright 2008 World Wide Web Consortium, (Massachusetts          =-->
+  <!--=  Institute of Technology, European Research Consortium for         =-->
+  <!--=  Informatics and Mathematics (ERCIM), Keio University).            =-->
+  <!--=  All Rights Reserved.                                              =-->
+  <!--=  See http://www.w3.org/Consortium/Legal/.                          =-->
+  <!--======================================================================-->
+  <SVGTestCase xmlns="http://www.w3.org/2000/02/svg/testsuite/description/"
+    reviewer="AE" owner="DS" desc="Test for recursion in 'use' elements referencing external files." status="accepted"
+    approved="yes"
+    version="$Revision: 1.5 $" testname="$RCSfile: struct-use-recursion-03-t.svg,v $">
+    <d:OperatorScript xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/" xmlns="http://www.w3.org/1999/xhtml">
+      <p>
+        This test checks for recursion in 'use' elements with external references.  The passing conditions are that the browser does not crash, and that at least one yellow circle and a line of green text are rendered.
+        Also, on an implementation-specific basis, additional orange and yellow circles with a dashed gray stroke may or may not be rendered, depending upon when and how the implementation detects the circular reference,
+        with the number of dashed circles of a given color indicating now many times the level of recurrsion permitted by the implementation.
+      </p>
+      <p>
+        This test depends upon 'struct-use-recursion-02-t.svg'.  It differs from 'struct-use-recursion-02-t.svg' in that the 'use' element comes before the 'circle' element.
+      </p>
+    </d:OperatorScript>
+  </SVGTestCase>
+  <title xml:id="test-title">$RCSfile: struct-use-recursion-03-t.svg,v $</title>
+  <defs>
+    <font-face
+      font-family="SVGFreeSansASCII"
+      unicode-range="U+0-7F">
+      <font-face-src>
+        <font-face-uri xlink:href="../images/SVGFreeSans.svg#ascii"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <g xml:id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
+
+    <g xml:id="group-2">
+      <use xml:id="use-2" x="0" y="25"  xlink:href="struct-use-recursion-02-t.svg#group-1" stroke="gray" stroke-width="2" stroke-dasharray="4" stroke-linecap="round"/>
+      <circle xml:id="circle-2" cx='380' cy='25' r='10' fill='#FFFF00' />
+    </g>
+
+    <text xml:id="pass" x="240" y="280" text-anchor="middle" fill="green" font-size="24">This text should be visible.</text>
+
+  </g>
+  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+    <text xml:id="revision" x="10" y="340" stroke="none"
+      fill="black">$Revision: 1.5 $</text>
+  </g>
+  <rect xml:id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
+
+</svg>
index 1d3c1d7..ab86cf0 100644 (file)
@@ -52,7 +52,7 @@
             .filterRegionControlLabel {
                 fill: black;
                 font-family: Verdana;
-                font-size: 10;
+                font-size: 10px;
                 text-anchor: middle;
             }
         ]]>
index de5974c..a182783 100644 (file)
@@ -37,7 +37,7 @@
     <defs>
 
      <style type="text/css"><![CDATA[
-       .Caption { font-size: 8; font-family: dialog; font-weight: normal;
+       .Caption { font-size: 8px; font-family: dialog; font-weight: normal;
                   font-style: normal; stroke: none; stroke-width: 0; 
                   fill: black } ]]>
      </style>
index 00fe7a4..96efb11 100644 (file)
@@ -49,7 +49,7 @@
     </defs>
 
     <g id="testContent">
-        <text class="title" x="50%" y="40" font-size="15" >
+        <text class="title" x="50%" y="40" font-size="15px" >
             Text display and visibility.</text>
 
         <text x="50%" y="74" text-anchor="middle"
index d7183eb..3e9e724 100644 (file)
@@ -23,7 +23,7 @@
 <!-- Test description here                                                     -->
 <!--                                                                           -->
 <!-- @author bill.haneman@ireland.sun.com                                      -->
-<!-- @version $Id: textStyles.svg,v 1.5 2004/08/18 07:12:23 vhardy Exp $                                                             -->
+<!-- @version $Id: textStyles.svg,v 1.5 2004/08/18 07:12:23 vhardy Exp $       -->
 <!-- ========================================================================= -->
 <?xml-stylesheet type="text/css" href="../resources/test.css" ?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="450" height="500" viewBox="0 0 450 500">
@@ -35,7 +35,7 @@
 
     <defs>
      <style type="text/css"><![CDATA[
-       .Caption { font-size: 8; font-family: dialog; font-weight: normal;
+       .Caption { font-size: 12px; font-family: dialog; font-weight: normal;
                   font-style: normal; stroke: none; stroke-width: 0; 
                   fill: black } ]]>
      </style>
 
         <g transform="translate(100, 110)" class="SansSerifPlain">
             <use xlink:href="#sample"/>
-            <text y="15" class="Caption">SansSerif, normal weight</text>
+            <text font-size="15" y="15" class="Caption">SansSerif, normal weight</text>
         </g>
 
         <g transform="translate(225, 110)" class="SansSerifBold">
             <use xlink:href="#sample"/>
-            <text y="15" class="Caption">SansSerif, bold</text>
+            <text font-size="15"  y="15" class="Caption">SansSerif, bold</text>
         </g>
 
         <g transform="translate(350, 110)" class="SansSerifOblique">
             <use xlink:href="#sample"/>
-            <text y="15" class="Caption">SansSerif, oblique</text>
+            <text  font-size="15" y="15" class="Caption">SansSerif, oblique</text>
         </g>
 
         <g transform="translate(100, 160)" class="SerifPlain">
index dc55816..1c594ce 100644 (file)
@@ -1,5 +1,7 @@
-<svg width="192" height="64" xmlns="http://www.w3.org/2000/svg">
-  <rect x="0" y="0" width="64" height="64" fill="#c00"/>
-  <rect x="64" y="0" width="64" height="64" fill="#090"/>
-  <rect x="128" y="0" width="64" height="64" fill="#00f"/>
+<svg id="svg-root" width="192" height="64" xmlns="http://www.w3.org/2000/svg">
+  <g id="RGB">
+    <rect id="R" x="0" y="0" width="64" height="64" fill="#c00"/>
+    <rect id="G" x="64" y="0" width="64" height="64" fill="#090"/>
+    <rect id="B" x="128" y="0" width="64" height="64" fill="#00f"/>
+  </g>
 </svg>
diff --git a/LayoutTests/svg/custom/use-extern-href.svg b/LayoutTests/svg/custom/use-extern-href.svg
new file mode 100644 (file)
index 0000000..11b8d28
--- /dev/null
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <use xlink:href="resources/rgb.svg#svg-root"/>
+  <use y="80" xlink:href="resources/rgb.svg#RGB"/>
+  <use y="160" xlink:href="resources/rgb.svg#R"/>
+  <use y="160" xlink:href="resources/rgb.svg#G"/>
+  <use y="160" xlink:href="resources/rgb.svg#B"/>
+  <!-- The following elements shall not be displayed. -->
+  <use y="240" xlink:href="resources/rgb.svg"/>
+  <use y="240" xlink:href="resources/rgb.svg#MISSING"/>
+  <use y="240" xlink:href="resources/MISSING.svg#MISSING"/>
+</svg>
diff --git a/LayoutTests/svg/custom/use-referencing-an-image-expected.svg b/LayoutTests/svg/custom/use-referencing-an-image-expected.svg
new file mode 100644 (file)
index 0000000..0b311e7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg">
+   
+</svg>
diff --git a/LayoutTests/svg/custom/use-referencing-an-image.svg b/LayoutTests/svg/custom/use-referencing-an-image.svg
new file mode 100644 (file)
index 0000000..f73c838
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+  <defs>
+    <rect id="greenRect" width="100" height="100" fill="green"/>
+  </defs>
+
+  <use id="toImage" x="25" y="25" xlink:href="#targetImage" />
+  <image id="targetImage" y="240" xlink:href="use-referencing-indirectly-itself.svg"/>    
+   
+</svg>
diff --git a/LayoutTests/svg/custom/use-referencing-indirectly-itself-expected.svg b/LayoutTests/svg/custom/use-referencing-indirectly-itself-expected.svg
new file mode 100644 (file)
index 0000000..0030919
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg">
+    
+  <rect width="100" height="100" fill="green"/>
+   
+</svg>
diff --git a/LayoutTests/svg/custom/use-referencing-indirectly-itself.svg b/LayoutTests/svg/custom/use-referencing-indirectly-itself.svg
new file mode 100644 (file)
index 0000000..fa5b901
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    
+    <!-- This use should be visible because it refers to a valid target and doesn't have any cycling. -->
+    <use xlink:href="use-referencing-an-image.svg#greenRect" />
+    <!-- This use won't be visible because it refers indirectly its own svg document. -->
+    <use x="25" y="25" xlink:href="use-referencing-an-image.svg#toImage" />
+   
+</svg>
diff --git a/LayoutTests/svg/custom/use-referencing-itself-expected.svg b/LayoutTests/svg/custom/use-referencing-itself-expected.svg
new file mode 100644 (file)
index 0000000..0870015
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.2" baseProfile="tiny" xml:id="svg-root" width="100%" height="100%"
+  viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xe="http://www.w3.org/2001/xml-events">
+   
+</svg>
diff --git a/LayoutTests/svg/custom/use-referencing-itself.svg b/LayoutTests/svg/custom/use-referencing-itself.svg
new file mode 100644 (file)
index 0000000..2c2c659
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+<!-- This test shouldn't display anything because it refers to itself. If we have an
+     other element in defs e.g. <defs> <rect id="someOtherElement"/></defs> and we would 
+     use it that construction should work. -->
+    <use id="mySelf" x="25" y="25" xlink:href="use-referencing-itself.svg#mySelf" />
+
+</svg>
diff --git a/LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href1-attr-expected.txt
new file mode 100644 (file)
index 0000000..19995f5
--- /dev/null
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'href' attribute of the SVGUseElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS useElement.getAttributeNS('http://www.w3.org/1999/xlink', 'href') is "#MyRect"
+PASS useElement.getAttributeNS('http://www.w3.org/1999/xlink', 'href') is "../custom/resources/rgb.svg#G"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href1-attr.html b/LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href1-attr.html
new file mode 100644 (file)
index 0000000..bdc6683
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+<script src="../../fast/repaint/resources/repaint.js"></script>
+</head>
+<body onload="runRepaintTest()">
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGUseElement-dom-href1-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.txt b/LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href2-attr-expected.txt
new file mode 100644 (file)
index 0000000..f13d573
--- /dev/null
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'href' attribute of the SVGUseElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS useElement.getAttributeNS('http://www.w3.org/1999/xlink', 'href') is "../custom/resources/rgb.svg#R"
+PASS useElement.getAttributeNS('http://www.w3.org/1999/xlink', 'href') is "#MyRect"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href2-attr.html b/LayoutTests/svg/dynamic-updates/SVGUseElement-dom-href2-attr.html
new file mode 100644 (file)
index 0000000..fcb98dc
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+<script src="../../fast/repaint/resources/repaint.js"></script>
+</head>
+<body onload="runRepaintTest()">
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGUseElement-dom-href2-attr.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop-expected.txt
new file mode 100644 (file)
index 0000000..c9eaa10
--- /dev/null
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'href' property of the SVGUseElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS useElement.href.baseVal is "#MyRect"
+PASS useElement.href.baseVal is "../custom/resources/rgb.svg#G"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop.html b/LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href1-prop.html
new file mode 100644 (file)
index 0000000..328e190
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+<script src="../../fast/repaint/resources/repaint.js"></script>
+</head>
+<body onload="runRepaintTest()">
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGUseElement-svgdom-href1-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.txt b/LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop-expected.txt
new file mode 100644 (file)
index 0000000..0a2ab3e
--- /dev/null
@@ -0,0 +1,13 @@
+SVG 1.1 dynamic update tests
+
+Tests dynamic updates of the 'href' property of the SVGUseElement object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS useElement.href.baseVal is "../custom/resources/rgb.svg#R"
+PASS useElement.href.baseVal is "#MyRect"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop.html b/LayoutTests/svg/dynamic-updates/SVGUseElement-svgdom-href2-prop.html
new file mode 100644 (file)
index 0000000..b54ddb7
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="resources/SVGTestCase.js"></script>
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+<script src="../../fast/repaint/resources/repaint.js"></script>
+</head>
+<body onload="runRepaintTest()">
+<h1>SVG 1.1 dynamic update tests</h1>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/SVGUseElement-svgdom-href2-prop.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href1-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href1-attr.js
new file mode 100644 (file)
index 0000000..224b5b3
--- /dev/null
@@ -0,0 +1,38 @@
+// [Name] SVGUseElement-dom-href1-attr.js
+// [Expected rendering result] A use element first with an internal then with an external referenced document - and a series of PASS messages
+
+description("Tests dynamic updates of the 'href' attribute of the SVGUseElement object")
+createSVGTestCase();
+
+var defsElement = createSVGElement("defs");
+rootSVGElement.appendChild(defsElement);
+
+var useElement = createSVGElement("use");
+useElement.setAttribute("x", "10");
+useElement.setAttribute("y", "10");
+useElement.setAttributeNS(xlinkNS, "xlink:href", "#MyRect");
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("id", "MyRect");
+rectElement.setAttribute("x", "64");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "64");
+rectElement.setAttribute("height", "64");
+rectElement.setAttribute("fill", "red");
+
+defsElement.appendChild(rectElement);
+defsElement.appendChild(useElement);
+
+rootSVGElement.setAttribute("height", "200");
+rootSVGElement.appendChild(useElement);
+
+shouldBeEqualToString("useElement.getAttributeNS('" + xlinkNS + "', 'href')", "#MyRect");
+
+function repaintTest() {
+    useElement.setAttributeNS(xlinkNS, "xlink:href", "../custom/resources/rgb.svg#G");
+    shouldBeEqualToString("useElement.getAttributeNS('" + xlinkNS + "', 'href')", "../custom/resources/rgb.svg#G");
+
+    completeTest();
+}
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href2-attr.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-dom-href2-attr.js
new file mode 100644 (file)
index 0000000..e9bfa66
--- /dev/null
@@ -0,0 +1,38 @@
+// [Name] SVGUseElement-dom-href1-attr.js
+// [Expected rendering result] A use element first with an external then with an internal referenced document - and a series of PASS messages
+
+description("Tests dynamic updates of the 'href' attribute of the SVGUseElement object")
+createSVGTestCase();
+
+var defsElement = createSVGElement("defs");
+rootSVGElement.appendChild(defsElement);
+
+var useElement = createSVGElement("use");
+useElement.setAttribute("x", "10");
+useElement.setAttribute("y", "10");
+useElement.setAttributeNS(xlinkNS, "xlink:href", "../custom/resources/rgb.svg#R");
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("id", "MyRect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "64");
+rectElement.setAttribute("height", "64");
+rectElement.setAttribute("fill", "green");
+
+defsElement.appendChild(rectElement);
+defsElement.appendChild(useElement);
+
+rootSVGElement.setAttribute("height", "200");
+rootSVGElement.appendChild(useElement);
+
+shouldBeEqualToString("useElement.getAttributeNS('" + xlinkNS + "', 'href')", "../custom/resources/rgb.svg#R");
+
+function repaintTest() {
+    useElement.setAttributeNS(xlinkNS, "xlink:href", "#MyRect");
+    shouldBeEqualToString("useElement.getAttributeNS('" + xlinkNS + "', 'href')", "#MyRect");
+
+    completeTest();
+}
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href1-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href1-prop.js
new file mode 100644 (file)
index 0000000..6bb70c2
--- /dev/null
@@ -0,0 +1,38 @@
+// [Name] SVGUseElement-svgdom-href1-prop.js
+// [Expected rendering result] A use element first with an internal then with an external referenced document - and a series of PASS messages
+
+description("Tests dynamic updates of the 'href' property of the SVGUseElement object")
+createSVGTestCase();
+
+var defsElement = createSVGElement("defs");
+rootSVGElement.appendChild(defsElement);
+
+var useElement = createSVGElement("use");
+useElement.setAttribute("x", "10");
+useElement.setAttribute("y", "10");
+useElement.setAttributeNS(xlinkNS, "xlink:href", "#MyRect");
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("id", "MyRect");
+rectElement.setAttribute("x", "64");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "64");
+rectElement.setAttribute("height", "64");
+rectElement.setAttribute("fill", "red");
+
+defsElement.appendChild(rectElement);
+defsElement.appendChild(useElement);
+
+rootSVGElement.setAttribute("height", "200");
+rootSVGElement.appendChild(useElement);
+
+shouldBeEqualToString("useElement.href.baseVal", "#MyRect");
+
+function repaintTest() {
+    useElement.href.baseVal = "../custom/resources/rgb.svg#G";
+    shouldBeEqualToString("useElement.href.baseVal", "../custom/resources/rgb.svg#G");
+
+    completeTest();
+}
+
+var successfullyParsed = true;
diff --git a/LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href2-prop.js b/LayoutTests/svg/dynamic-updates/script-tests/SVGUseElement-svgdom-href2-prop.js
new file mode 100644 (file)
index 0000000..75e0fc2
--- /dev/null
@@ -0,0 +1,38 @@
+// [Name] SVGUseElement-svgdom-href2-prop.js
+// [Expected rendering result] A use element first with an external then with an internal referenced document - and a series of PASS messages
+
+description("Tests dynamic updates of the 'href' property of the SVGUseElement object")
+createSVGTestCase();
+
+var defsElement = createSVGElement("defs");
+rootSVGElement.appendChild(defsElement);
+
+var useElement = createSVGElement("use");
+useElement.setAttribute("x", "10");
+useElement.setAttribute("y", "10");
+useElement.setAttributeNS(xlinkNS, "xlink:href", "../custom/resources/rgb.svg#R");
+
+var rectElement = createSVGElement("rect");
+rectElement.setAttribute("id", "MyRect");
+rectElement.setAttribute("x", "0");
+rectElement.setAttribute("y", "0");
+rectElement.setAttribute("width", "64");
+rectElement.setAttribute("height", "64");
+rectElement.setAttribute("fill", "green");
+
+defsElement.appendChild(rectElement);
+defsElement.appendChild(useElement);
+
+rootSVGElement.setAttribute("height", "200");
+rootSVGElement.appendChild(useElement);
+
+shouldBeEqualToString("useElement.href.baseVal", "../custom/resources/rgb.svg#R");
+
+function repaintTest() {
+    useElement.href.baseVal = "#MyRect";
+    shouldBeEqualToString("useElement.href.baseVal", "#MyRect");
+
+    completeTest();
+}
+
+var successfullyParsed = true;
index b8e3ca3..1484792 100644 (file)
@@ -1,3 +1,75 @@
+2012-03-14  Renata Hodovan  <reni@webkit.org>
+
+        External <use> xlink:href references do not work
+        https://bugs.webkit.org/show_bug.cgi?id=12499
+
+        Reviewed by Nikolas Zimmermann.
+
+        This is a follow-up patch after r108785.
+        In this patch we bind the previously introduced CachedSVGDocument class
+        into the caching mechanism of SVGUseElement. The mode how external resources
+        are handled is similar to the processing of internal ones. We build the instance
+        and shadow tree the same way but we have to keep in mind that the requested resources
+        maybe not loaded yet. We can check it with cachedDocumentIsStillLoading() function.
+
+        SVGURIReference::targetElementFromIRIString() also need to be extended. The baseURI
+        computation needs to take the referenced documents URL into account, instead of the current documents.
+
+        The patch affects a lot of tests which have external resources especially in svg/batik. Because
+        of the size of that test refactor they will be commited in a follow-up patch.
+
+        Tests: svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg
+               svg/W3C-SVG-1.2-Tiny/struct-use-recursion-02-t.svg
+               svg/W3C-SVG-1.2-Tiny/struct-use-recursion-03-t.svg
+               svg/custom/use-extern-href.svg
+               svg/custom/use-referencing-an-image-expected.svg
+               svg/custom/use-referencing-an-image.svg
+               svg/custom/use-referencing-indirectly-itself-expected.svg
+               svg/custom/use-referencing-indirectly-itself.svg
+               svg/custom/use-referencing-itself-expected.svg
+               svg/custom/use-referencing-itself.svg
+               svg/dynamic-updates/SVGUseElement-dom-href1-attr.html
+               svg/dynamic-updates/SVGUseElement-dom-href2-attr.html
+               svg/dynamic-updates/SVGUseElement-svgdom-href1-prop.html
+               svg/dynamic-updates/SVGUseElement-svgdom-href2-prop.html
+
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore):
+        (WebCore::CachedResourceLoader::requestSVGDocument):
+        * loader/cache/CachedResourceLoader.h:
+        (WebCore):
+        (CachedResourceLoader):
+        * page/ContentSecurityPolicy.h:
+        * platform/KURL.cpp:
+        (WebCore::equalIgnoringFragmentIdentifier):
+        * platform/network/chromium/ResourceRequest.h:
+        * svg/SVGURIReference.cpp:
+        (WebCore::urlFromIRIStringWithFragmentIdentifier):
+        (WebCore):
+        (WebCore::SVGURIReference::targetElementFromIRIString):
+        * svg/SVGURIReference.h:
+        (SVGURIReference):
+        (WebCore::SVGURIReference::isExternalURIReference):
+        * svg/SVGUseElement.cpp:
+        (WebCore::SVGUseElement::SVGUseElement):
+        (WebCore::SVGUseElement::~SVGUseElement):
+        (WebCore):
+        (WebCore::SVGUseElement::referencedDocument):
+        (WebCore::SVGUseElement::externalDocument):
+        (WebCore::SVGUseElement::svgAttributeChanged):
+        (WebCore::dumpInstanceTree):
+        (WebCore::SVGUseElement::buildPendingResource):
+        (WebCore::SVGUseElement::buildShadowAndInstanceTree):
+        (WebCore::SVGUseElement::hasCycleUseReferencing):
+        (WebCore::SVGUseElement::expandUseElementsInShadowTree):
+        (WebCore::SVGUseElement::expandSymbolElementsInShadowTree):
+        (WebCore::SVGUseElement::notifyFinished):
+        (WebCore::SVGUseElement::cachedDocumentIsStillLoading):
+        (WebCore::SVGUseElement::instanceTreeIsLoading):
+        * svg/SVGUseElement.h:
+        (WebCore):
+        (SVGUseElement):
+
 2012-03-14  Peter Rybin  <peter.rybin@gmail.com>
 
         Web Inspector: TypeBuilder: Introduce OptOutput class for optional output parameters
index b904c5e..595db8d 100644 (file)
@@ -230,6 +230,13 @@ CachedXSLStyleSheet* CachedResourceLoader::requestXSLStyleSheet(ResourceRequest&
 }
 #endif
 
+#if ENABLE(SVG)
+CachedSVGDocument* CachedResourceLoader::requestSVGDocument(ResourceRequest& request)
+{
+    return static_cast<CachedSVGDocument*>(requestResource(CachedResource::SVGDocumentResource, request, request.url(), defaultCachedResourceOptions()));
+}
+#endif
+
 #if ENABLE(LINK_PREFETCH)
 CachedResource* CachedResourceLoader::requestLinkResource(CachedResource::Type type, ResourceRequest& request, ResourceLoadPriority priority)
 {
index 86dca0e..e5d52cf 100644 (file)
@@ -40,6 +40,7 @@
 namespace WebCore {
 
 class CachedCSSStyleSheet;
+class CachedSVGDocument;
 class CachedFont;
 class CachedImage;
 class CachedRawResource;
@@ -69,6 +70,9 @@ public:
     CachedFont* requestFont(ResourceRequest&);
     CachedRawResource* requestRawResource(ResourceRequest&, const ResourceLoaderOptions&);
 
+#if ENABLE(SVG)
+    CachedSVGDocument* requestSVGDocument(ResourceRequest&);
+#endif
 #if ENABLE(XSLT)
     CachedXSLStyleSheet* requestXSLStyleSheet(ResourceRequest&);
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index ee3c773..f73b9ab
@@ -62,12 +62,49 @@ String SVGURIReference::fragmentIdentifierFromIRIString(const String& url, Docum
     return emptyString();
 }
 
-Element* SVGURIReference::targetElementFromIRIString(const String& iri, Document* document, String* fragmentIdentifier)
+static inline KURL urlFromIRIStringWithFragmentIdentifier(const String& url, Document* document, String& fragmentIdentifier)
 {
-    String id = fragmentIdentifierFromIRIString(iri, document);
+    ASSERT(document);
+    size_t startOfFragmentIdentifier = url.find('#');
+    if (startOfFragmentIdentifier == notFound)
+        return KURL();
+
+    // Exclude the '#' character when determining the fragmentIdentifier.
+    fragmentIdentifier = url.substring(startOfFragmentIdentifier + 1);
+    if (startOfFragmentIdentifier) {
+        KURL base(document->baseURI(), url.substring(0, startOfFragmentIdentifier));
+        return KURL(base, url.substring(startOfFragmentIdentifier));
+    }
+
+    return KURL(document->baseURI(), url.substring(startOfFragmentIdentifier));
+}
+
+Element* SVGURIReference::targetElementFromIRIString(const String& iri, Document* document, String* fragmentIdentifier, Document* externalDocument)
+{
+    // If there's no fragment identifier contained within the IRI string, we can't lookup an element.
+    String id;
+    KURL url = urlFromIRIStringWithFragmentIdentifier(iri, document, id);
+    if (url == KURL())
+        return 0;
+
+    // If we're requesting an external resources, and externalDocument is non-zero, the load already succeeded.
+    // Go ahead and check if the externalDocuments URL matches the expected URL, that we resolved using the
+    // host document before in urlFromIRIStringWithFragmentIdentifier(). For internal resources, the same
+    // assumption must hold true, just with the host documents URL, not the external documents URL.
+    if (!equalIgnoringFragmentIdentifier(url, externalDocument ? externalDocument->url() : document->url()))
+        return 0;
+
     if (fragmentIdentifier)
         *fragmentIdentifier = id;
-    // FIXME: Handle external references (Bug 65344).
+
+    if (id.isEmpty())
+        return 0;
+
+    if (externalDocument)
+        return externalDocument->getElementById(id);
+    if (isExternalURIReference(iri, document))
+        return 0; // Non-existing external resource
+
     return document->getElementById(id);
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index ef04151..8d80959
@@ -40,7 +40,20 @@ public:
     void addSupportedAttributes(HashSet<QualifiedName>&);
 
     static String fragmentIdentifierFromIRIString(const String&, Document*);
-    static Element* targetElementFromIRIString(const String&, Document*, String* = 0);
+    static Element* targetElementFromIRIString(const String&, Document*, String* = 0, Document* = 0);
+
+    static inline bool isExternalURIReference(const String& uri, Document* baseDocument)
+    {
+        if (uri.startsWith("#"))
+            return false;
+
+        size_t startOfFragmentIdentifier = uri.find('#');
+        // If the target document is the base document but its path is given in format href="thisDocument.svg#targetTag"
+        // then we should handle it as internal.
+        if (uri.substring(0, startOfFragmentIdentifier) != baseDocument->url().lastPathComponent())
+            return true;
+        return false;
+    }
 
 protected:
     virtual void setHrefBaseValue(const String&) = 0;
old mode 100644 (file)
new mode 100755 (executable)
index bb691aa..75e8dec
@@ -3,6 +3,8 @@
  * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org>
  * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved.
  * Copyright (C) 2011 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
+ * Copyright (C) 2012 University of Szeged
+ * Copyright (C) 2012 Renata Hodovan <reni@webkit.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -26,6 +28,7 @@
 #include "SVGUseElement.h"
 
 #include "Attribute.h"
+#include "CachedResourceLoader.h"
 #include "CSSStyleSelector.h"
 #include "Document.h"
 #include "Event.h"
@@ -87,7 +90,7 @@ inline SVGUseElement::SVGUseElement(const QualifiedName& tagName, Document* docu
 {
     ASSERT(hasTagName(SVGNames::useTag));
     registerAnimatedPropertiesForSVGUseElement();
-    
+
     setHasCustomWillOrDidRecalcStyle();
 }
 
@@ -99,6 +102,12 @@ PassRefPtr<SVGUseElement> SVGUseElement::create(const QualifiedName& tagName, Do
     return use.release();
 }
 
+SVGUseElement::~SVGUseElement()
+{
+    if (m_cachedDocument)
+        m_cachedDocument->removeClient(this);
+}
+
 SVGElementInstance* SVGUseElement::instanceRoot()
 {
     // If there is no element instance tree, force immediate SVGElementInstance tree
@@ -116,7 +125,7 @@ SVGElementInstance* SVGUseElement::animatedInstanceRoot() const
     // FIXME: Implement me.
     return 0;
 }
+
 bool SVGUseElement::isSupportedAttribute(const QualifiedName& attrName)
 {
     DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ());
@@ -179,6 +188,22 @@ void SVGUseElement::removedFromDocument()
     clearResourceReferences();
 }
 
+Document* SVGUseElement::referencedDocument() const
+{
+    if (!isExternalURIReference(href(), document()))
+        return document();
+    return externalDocument();
+}
+
+Document* SVGUseElement::externalDocument() const
+{
+    if (m_cachedDocument && m_cachedDocument->isLoaded()) {
+        ASSERT(m_cachedDocument->document());
+        return m_cachedDocument->document();
+    }
+    return 0;
+}
+
 void SVGUseElement::svgAttributeChanged(const QualifiedName& attrName)
 {
     if (!isSupportedAttribute(attrName)) {
@@ -202,14 +227,29 @@ void SVGUseElement::svgAttributeChanged(const QualifiedName& attrName)
     if (SVGTests::handleAttributeChange(this, attrName))
         return;
 
-    if (!renderer)
-        return;
-
     if (SVGURIReference::isKnownAttribute(attrName)) {
+        bool isExternalReference = isExternalURIReference(href(), document());
+        if (isExternalReference) {
+            KURL url = document()->completeURL(href());
+            if (url.hasFragmentIdentifier()) {
+                ResourceRequest request(url.string());
+                m_cachedDocument = document()->cachedResourceLoader()->requestSVGDocument(request);
+                if (m_cachedDocument)
+                    m_cachedDocument->addClient(this);
+            }
+        }
+
+        if (m_cachedDocument && !isExternalReference) {
+            m_cachedDocument->removeClient(this);
+            m_cachedDocument = 0;
+        }
         buildPendingResource();
         return;
     }
 
+    if (!renderer)
+        return;
+
     if (SVGLangSpace::isKnownAttribute(attrName)
         || SVGExternalResourcesRequired::isKnownAttribute(attrName)) {
         invalidateShadowTree();
@@ -232,6 +272,11 @@ static void dumpInstanceTree(unsigned int& depth, String& text, SVGElementInstan
     SVGElement* element = targetInstance->correspondingElement();
     ASSERT(element);
 
+    if (element->hasTagName(SVGNames::useTag)) {
+        if (static_cast<SVGUseElement*>(element)->cachedDocumentIsStillLoading())
+            return;
+    }
+
     SVGElement* shadowTreeElement = targetInstance->shadowTreeElement();
     ASSERT(shadowTreeElement);
 
@@ -346,18 +391,20 @@ void SVGUseElement::clearResourceReferences()
 
 void SVGUseElement::buildPendingResource()
 {
+    if (!referencedDocument())
+        return;
     clearResourceReferences();
     if (!inDocument())
         return;
 
     String id;
-    Element* target = SVGURIReference::targetElementFromIRIString(href(), document(), &id);
+    Element* target = SVGURIReference::targetElementFromIRIString(href(), document(), &id, externalDocument());
     if (!target) {
         if (hasPendingResources() || id.isEmpty())
             return;
 
         ASSERT(!hasPendingResources());
-        document()->accessSVGExtensions()->addPendingResource(id, this);
+        referencedDocument()->accessSVGExtensions()->addPendingResource(id, this);
         ASSERT(hasPendingResources());
         return;
     }
@@ -384,8 +431,8 @@ void SVGUseElement::buildShadowAndInstanceTree(SVGElement* target)
     // Why a seperated instance/shadow tree? SVG demands it:
     // The instance tree is accesable from JavaScript, and has to
     // expose a 1:1 copy of the referenced tree, whereas internally we need
-    // to alter the tree for correct "use-on-symbol", "use-on-svg" support.  
+    // to alter the tree for correct "use-on-symbol", "use-on-svg" support.
+
     // Build instance tree. Create root SVGElementInstance object for the first sub-tree node.
     //
     // Spec: If the 'use' element references a simple graphics element such as a 'rect', then there is only a
@@ -397,6 +444,9 @@ void SVGUseElement::buildShadowAndInstanceTree(SVGElement* target)
     bool foundProblem = false;
     buildInstanceTree(target, m_targetElementInstance.get(), foundProblem);
 
+    if (instanceTreeIsLoading(m_targetElementInstance.get()))
+        return;
+
     // SVG specification does not say a word about <use> & cycles. My view on this is: just ignore it!
     // Non-appearing <use> content is easier to debug, then half-appearing content.
     if (foundProblem) {
@@ -566,7 +616,7 @@ void SVGUseElement::buildInstanceTree(SVGElement* target, SVGElementInstance* ta
 
 bool SVGUseElement::hasCycleUseReferencing(SVGUseElement* use, SVGElementInstance* targetInstance, SVGElement*& newTarget)
 {
-    Element* targetElement = SVGURIReference::targetElementFromIRIString(use->href(), document());
+    Element* targetElement = SVGURIReference::targetElementFromIRIString(use->href(), referencedDocument());
     newTarget = 0;
     if (targetElement && targetElement->isSVGElement())
         newTarget = static_cast<SVGElement*>(targetElement);
@@ -578,14 +628,15 @@ bool SVGUseElement::hasCycleUseReferencing(SVGUseElement* use, SVGElementInstanc
     if (newTarget == this)
         return true;
 
+    AtomicString targetId = newTarget->getIdAttribute();
     SVGElementInstance* instance = targetInstance->parentNode();
     while (instance) {
         SVGElement* element = instance->correspondingElement();
 
         // FIXME: This should probably be using getIdAttribute instead of idForStyleResolution.
-        if (element->hasID() && element->idForStyleResolution() == newTarget->getIdAttribute())
+        if (element->hasID() && element->idForStyleResolution() == targetId && element->document() == newTarget->document())
             return true;
-    
+
         instance = instance->parentNode();
     }
     return false;
@@ -636,15 +687,16 @@ void SVGUseElement::expandUseElementsInShadowTree(Node* element)
     // to walk it completely and expand all <use> elements.
     if (element->hasTagName(SVGNames::useTag)) {
         SVGUseElement* use = static_cast<SVGUseElement*>(element);
+        ASSERT(!use->cachedDocumentIsStillLoading());
 
-        Element* targetElement = SVGURIReference::targetElementFromIRIString(use->href(), document());
+        Element* targetElement = SVGURIReference::targetElementFromIRIString(use->href(), referencedDocument());
         SVGElement* target = 0;
         if (targetElement && targetElement->isSVGElement())
             target = static_cast<SVGElement*>(targetElement);
 
         // Don't ASSERT(target) here, it may be "pending", too.
         // Setup sub-shadow tree root node
-        RefPtr<SVGGElement> cloneParent = SVGGElement::create(SVGNames::gTag, document());
+        RefPtr<SVGGElement> cloneParent = SVGGElement::create(SVGNames::gTag, referencedDocument());
         use->cloneChildNodes(cloneParent.get());
 
         // Spec: In the generated content, the 'use' will be replaced by 'g', where all attributes from the
@@ -668,7 +720,7 @@ void SVGUseElement::expandUseElementsInShadowTree(Node* element)
         RefPtr<Node> replacingElement(cloneParent.get());
 
         // Replace <use> with referenced content.
-        ASSERT(use->parentNode()); 
+        ASSERT(use->parentNode());
         use->parentNode()->replaceChild(cloneParent.release(), use);
 
         // Expand the siblings because the *element* is replaced and we will
@@ -691,17 +743,17 @@ void SVGUseElement::expandSymbolElementsInShadowTree(Node* element)
         // height are provided on the 'use' element, then these attributes will be transferred to
         // the generated 'svg'. If attributes width and/or height are not specified, the generated
         // 'svg' element will use values of 100% for these attributes.
-        RefPtr<SVGSVGElement> svgElement = SVGSVGElement::create(SVGNames::svgTag, document());
+        RefPtr<SVGSVGElement> svgElement = SVGSVGElement::create(SVGNames::svgTag, referencedDocument());
 
         // Transfer all attributes from <symbol> to the new <svg> element
         svgElement->setAttributesFromElement(*toElement(element));
 
-        // Only clone symbol children, and add them to the new <svg> element    
+        // Only clone symbol children, and add them to the new <svg> element
         for (Node* child = element->firstChild(); child; child = child->nextSibling()) {
             RefPtr<Node> newChild = child->cloneNode(true);
             svgElement->appendChild(newChild.release());
         }
-    
+
         // We don't walk the target tree element-by-element, and clone each element,
         // but instead use cloneNode(deep=true). This is an optimization for the common
         // case where <use> doesn't contain disallowed elements (ie. <foreignObject>).
@@ -852,6 +904,34 @@ bool SVGUseElement::selfHasRelativeLengths() const
     return static_cast<SVGStyledElement*>(element)->hasRelativeLengths();
 }
 
+void SVGUseElement::notifyFinished(CachedResource*)
+{
+    if (!inDocument())
+        return;
+
+    invalidateShadowTree();
+}
+
+bool SVGUseElement::cachedDocumentIsStillLoading()
+{
+    if (m_cachedDocument && m_cachedDocument->isLoading())
+        return true;
+    return false;
+}
+
+bool SVGUseElement::instanceTreeIsLoading(SVGElementInstance* targetElementInstance)
+{
+    for (SVGElementInstance* instance = targetElementInstance->firstChild(); instance; instance = instance->nextSibling()) {
+        if (SVGUseElement* use = instance->correspondingUseElement()) {
+             if (use->cachedDocumentIsStillLoading())
+                 return true;
+        }
+        if (instance->hasChildNodes())
+            instanceTreeIsLoading(instance);
+    }
+    return false;
+}
+
 }
 
 #endif // ENABLE(SVG)
old mode 100644 (file)
new mode 100755 (executable)
index 953b7e2..6e817de
@@ -22,6 +22,7 @@
 #define SVGUseElement_h
 
 #if ENABLE(SVG)
+#include "CachedSVGDocument.h"
 #include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
 #include "SVGExternalResourcesRequired.h"
 
 namespace WebCore {
 
+class CachedSVGDocument;
 class SVGElementInstance;
 
 class SVGUseElement : public SVGStyledTransformableElement,
                       public SVGTests,
                       public SVGLangSpace,
                       public SVGExternalResourcesRequired,
-                      public SVGURIReference {
+                      public SVGURIReference,
+                      public CachedSVGDocumentClient {
 public:
     static PassRefPtr<SVGUseElement> create(const QualifiedName&, Document*);
+    virtual ~SVGUseElement();
 
     SVGElementInstance* instanceRoot();
     SVGElementInstance* animatedInstanceRoot() const;
@@ -100,6 +104,12 @@ private:
         DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
     END_DECLARE_ANIMATED_PROPERTIES
 
+    bool cachedDocumentIsStillLoading();
+    Document* externalDocument() const;
+    bool instanceTreeIsLoading(SVGElementInstance*);
+    virtual void notifyFinished(CachedResource*);
+    Document* referencedDocument() const;
+
     // SVGTests
     virtual void synchronizeRequiredFeatures() { SVGTests::synchronizeRequiredFeatures(this); }
     virtual void synchronizeRequiredExtensions() { SVGTests::synchronizeRequiredExtensions(this); }
@@ -107,6 +117,7 @@ private:
 
     bool m_needsShadowTreeRecreation;
     RefPtr<SVGElementInstance> m_targetElementInstance;
+    CachedResourceHandle<CachedSVGDocument> m_cachedDocument;
 };
 
 }