WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-15799-20120522123710.patch (text/plain), 222.72 KB, created by
Rob Buis
on 2012-05-22 09:37:11 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Rob Buis
Created:
2012-05-22 09:37:11 PDT
Size:
222.72 KB
patch
obsolete
>Subversion Revision: 117972 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index dc0841c9c4c223bdc9de5bfab0a42c73e2c54aa7..390fce6aff5da1c1549098cd92243a047bcf7633 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,93 @@ >+2012-05-22 Rob Buis <rbuis@rim.com> >+ >+ Bug 15799: textPath element does not re-render when referenced path changes >+ https://bugs.webkit.org/show_bug.cgi?id=15799 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Support textPath updating to changes on the referenced path. To make this possible >+ refactor the event listener logic from SVGTRefElement into SubtreeModificationEventListener. >+ >+ Tests: svg/custom/textPath-change-id-pattern.svg >+ svg/custom/textPath-change-id.svg >+ svg/custom/textPath-change-id2-pattern.svg >+ svg/custom/textPath-change-id2.svg >+ svg/custom/textPath-change-reference-pattern.svg >+ svg/custom/textPath-change-reference-using-baseval-pattern.svg >+ svg/custom/textPath-change-reference-using-baseval.svg >+ svg/custom/textPath-change-reference.svg >+ svg/custom/textPath-change-reference2-pattern.svg >+ svg/custom/textPath-change-reference2-using-baseval-pattern.svg >+ svg/custom/textPath-change-reference2-using-baseval.svg >+ svg/custom/textPath-change-reference2.svg >+ svg/custom/textPath-insert-path-pattern.svg >+ svg/custom/textPath-insert-path.svg >+ svg/custom/textPath-modify-child-pattern.svg >+ svg/custom/textPath-modify-child.svg >+ svg/custom/textPath-path-change-pattern.svg >+ svg/custom/textPath-path-change-using-svg-dom-pattern.svg >+ svg/custom/textPath-path-change-using-svg-dom.svg >+ svg/custom/textPath-path-change.svg >+ svg/custom/textPath-path-change2-pattern.svg >+ svg/custom/textPath-path-change2.svg >+ svg/custom/textPath-remove-path-pattern.svg >+ svg/custom/textPath-remove-path.svg >+ svg/custom/textPath-set-id.svg >+ svg/custom/textPath-startoffset-pattern.svg >+ svg/custom/textPath-startoffset.svg >+ >+ * CMakeLists.txt: Add new files to build. >+ * GNUmakefile.list.am: Ditto. >+ * Target.pri: Ditto. >+ * WebCore.gypi: Ditto. >+ * WebCore.vcproj/WebCore.vcproj: Ditto. >+ * WebCore.xcodeproj/project.pbxproj: Ditto. >+ * svg/SVGAllInOne.cpp: Ditto. >+ * svg/SVGElement.cpp: Add helper method to fire DOMSubtreeModified event if needed. >+ (WebCore::SVGElement::fireMutationEventIfNeeded): >+ (WebCore): >+ * svg/SVGElement.h: >+ (SVGElement): >+ * svg/SVGElementRareData.cpp: Added. >+ (WebCore): >+ (WebCore::SVGElementRareData::createAndInstallEventListener): Add helper method shared by <tref> and <textPath> >+ (WebCore::SVGElementRareData::removeEventListenerIfNeeded): Ditto. >+ * svg/SVGElementRareData.h: Add DOMSubtreeModified event listener to rare data. >+ (WebCore): >+ (SVGElementRareData): >+ (WebCore::SVGElementRareData::hasEventListener): test whether there is an event listener. >+ * svg/SVGPathElement.cpp: >+ (WebCore::SVGPathElement::svgAttributeChanged): Fire DOMSubtreeModifiedEvent on path data change for any referencers. >+ * svg/SVGStyledElement.cpp: >+ (WebCore::SVGStyledElement::svgAttributeChanged): Fire DOMSubtreeModifiedEvent on id attribute change for any referencers. >+ * svg/SVGTRefElement.cpp: Adapt to DOMSubtreeModified event listener moving to rare data. >+ (WebCore::SVGTRefElement::buildPendingResource): >+ (WebCore::SVGTRefElement::clearEventListener): >+ (WebCore): >+ (WebCore::SVGTRefElement::subtreeModifiedEvent): >+ * svg/SVGTRefElement.h: >+ (SVGTRefElement): >+ * svg/SVGTextPathElement.cpp: Ditto. >+ (WebCore::SVGTextPathElement::svgAttributeChanged): >+ (WebCore::SVGTextPathElement::removedFrom): >+ (WebCore): >+ (WebCore::SVGTextPathElement::buildPendingResource): >+ (WebCore::SVGTextPathElement::subtreeModifiedEvent): >+ * svg/SVGTextPathElement.h: >+ * svg/SubtreeModificationEventListener.cpp: Added. Moved this class into its own file to reduce SVGElement dependencies. >+ (WebCore): >+ (WebCore::SubtreeModificationEventListener::handleEvent): >+ (WebCore::SubtreeModificationEventListener::removeFromTarget): >+ * svg/SubtreeModificationEventListener.h: Added. >+ (WebCore): >+ (SubtreeModificationEventListenerClient): >+ (WebCore::SubtreeModificationEventListenerClient::~SubtreeModificationEventListenerClient): >+ (SubtreeModificationEventListener): >+ (WebCore::SubtreeModificationEventListener::create): >+ (WebCore::SubtreeModificationEventListener::cast): >+ (WebCore::SubtreeModificationEventListener::operator==): >+ (WebCore::SubtreeModificationEventListener::SubtreeModificationEventListener): >+ > 2012-05-22 Nikolas Zimmermann <nzimmermann@rim.com> > > Crash in WebCore::RenderSVGContainer::paint >diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt >index e79b7e80225daab892ccf71db32fed9d8811b7fd..0a0b18ed8d87ed7883f50c5e5a9245dedeb01a9e 100644 >--- a/Source/WebCore/CMakeLists.txt >+++ b/Source/WebCore/CMakeLists.txt >@@ -1819,6 +1819,7 @@ IF (ENABLE_SVG) > rendering/svg/SVGTextMetricsBuilder.cpp > rendering/svg/SVGTextQuery.cpp > svg/ColorDistance.cpp >+ svg/SubtreeModificationEventListener.cpp > svg/SVGAElement.cpp > svg/SVGAltGlyphDefElement.cpp > svg/SVGAltGlyphElement.cpp >@@ -1859,6 +1860,7 @@ IF (ENABLE_SVG) > svg/SVGElement.cpp > svg/SVGElementInstance.cpp > svg/SVGElementInstanceList.cpp >+ svg/SVGElementRareData.cpp > svg/SVGEllipseElement.cpp > svg/SVGException.cpp > svg/SVGExternalResourcesRequired.cpp >diff --git a/Source/WebCore/GNUmakefile.list.am b/Source/WebCore/GNUmakefile.list.am >index 34791584189e9e18dec63ac755d79d1244d571e0..5e407ea4b7a06d189ecdf018cc1e16ae7c99182c 100644 >--- a/Source/WebCore/GNUmakefile.list.am >+++ b/Source/WebCore/GNUmakefile.list.am >@@ -4207,6 +4207,8 @@ webcore_sources += \ > Source/WebCore/svg/properties/SVGStaticPropertyWithParentTearOff.h \ > Source/WebCore/svg/properties/SVGTransformListPropertyTearOff.h \ > Source/WebCore/svg/RadialGradientAttributes.h \ >+ Source/WebCore/svg/SubtreeModificationEventListener.cpp \ >+ Source/WebCore/svg/SubtreeModificationEventListener.h \ > Source/WebCore/svg/SVGAElement.cpp \ > Source/WebCore/svg/SVGAElement.h \ > Source/WebCore/svg/SVGAltGlyphDefElement.cpp \ >@@ -4290,6 +4292,7 @@ webcore_sources += \ > Source/WebCore/svg/SVGElementInstanceList.cpp \ > Source/WebCore/svg/SVGElementInstanceList.h \ > Source/WebCore/svg/SVGElementRareData.h \ >+ Source/WebCore/svg/SVGElementRareData.cpp \ > Source/WebCore/svg/SVGEllipseElement.cpp \ > Source/WebCore/svg/SVGEllipseElement.h \ > Source/WebCore/svg/SVGException.cpp \ >diff --git a/Source/WebCore/Target.pri b/Source/WebCore/Target.pri >index 06b1d5cc820317cff58349c6b2489fa552a588a1..14b3085d6ed3f5751a9790ed499833fc8a0c0452 100644 >--- a/Source/WebCore/Target.pri >+++ b/Source/WebCore/Target.pri >@@ -2640,6 +2640,7 @@ HEADERS += \ > svg/properties/SVGStaticPropertyTearOff.h \ > svg/properties/SVGStaticPropertyWithParentTearOff.h \ > svg/properties/SVGTransformListPropertyTearOff.h \ >+ svg/SubtreeModificationEventListener.h \ > svg/SVGAElement.h \ > svg/SVGAltGlyphDefElement.h \ > svg/SVGAltGlyphElement.h \ >@@ -3562,6 +3563,7 @@ contains(DEFINES, ENABLE_SVG=1) { > SOURCES += \ > svg/SVGDocumentExtensions.cpp \ > svg/ColorDistance.cpp \ >+ svg/SubtreeModificationEventListener.cpp \ > svg/SVGAElement.cpp \ > svg/SVGAltGlyphDefElement.cpp \ > svg/SVGAltGlyphElement.cpp \ >@@ -3601,6 +3603,7 @@ contains(DEFINES, ENABLE_SVG=1) { > svg/SVGElement.cpp \ > svg/SVGElementInstance.cpp \ > svg/SVGElementInstanceList.cpp \ >+ svg/SVGElementRareData.cpp \ > svg/SVGEllipseElement.cpp \ > svg/SVGException.cpp \ > svg/SVGExternalResourcesRequired.cpp \ >diff --git a/Source/WebCore/WebCore.gypi b/Source/WebCore/WebCore.gypi >index c89b62296e27f8b65275a4d20cd414afc568e377..f8baa1563c5d14d6909e3c7271d12336cc615256 100644 >--- a/Source/WebCore/WebCore.gypi >+++ b/Source/WebCore/WebCore.gypi >@@ -5966,6 +5966,8 @@ > 'svg/LinearGradientAttributes.h', > 'svg/PatternAttributes.h', > 'svg/RadialGradientAttributes.h', >+ 'svg/SubtreeModificationEventListener.cpp', >+ 'svg/SubtreeModificationEventListener.h', > 'svg/SVGAElement.cpp', > 'svg/SVGAElement.h', > 'svg/SVGAllInOne.cpp', >@@ -6025,6 +6027,7 @@ > 'svg/SVGElementInstance.h', > 'svg/SVGElementInstanceList.cpp', > 'svg/SVGElementInstanceList.h', >+ 'svg/SVGElementRareData.cpp', > 'svg/SVGElementRareData.h', > 'svg/SVGEllipseElement.cpp', > 'svg/SVGEllipseElement.h', >diff --git a/Source/WebCore/WebCore.vcproj/WebCore.vcproj b/Source/WebCore/WebCore.vcproj/WebCore.vcproj >index d602fb7d971b8a53edb59924374ffe678393c882..76a589734e6ee4b1df87b31f2fda337401fdd8b0 100755 >--- a/Source/WebCore/WebCore.vcproj/WebCore.vcproj >+++ b/Source/WebCore/WebCore.vcproj/WebCore.vcproj >@@ -70738,6 +70738,62 @@ > Name="svg" > > > <File >+ RelativePath="..\svg\SubtreeModificationEventListener.h" >+ > >+ </File> >+ <File >+ RelativePath="..\svg\SubtreeModificationEventListener.cpp" >+ > >+ <FileConfiguration >+ Name="Debug|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Release|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Debug_Cairo_CFLite|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Release_Cairo_CFLite|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Debug_All|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Production|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ </File> >+ <File > RelativePath="..\svg\ColorDistance.h" > > > </File> >@@ -70934,6 +70990,58 @@ > > > </File> > <File >+ RelativePath="..\svg\SVGElementRareData.cpp" >+ > >+ <FileConfiguration >+ Name="Debug|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Release|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Debug_Cairo_CFLite|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Release_Cairo_CFLite|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Debug_All|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ <FileConfiguration >+ Name="Production|Win32" >+ ExcludedFromBuild="true" >+ > >+ <Tool >+ Name="VCCLCompilerTool" >+ /> >+ </FileConfiguration> >+ </File> >+ <File > RelativePath="..\svg\SVGEllipseElement.h" > > > </File> >diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >index 412b5712e2a20aeb01c0ebc89e80edba2eda4cfa..f79126de1a3c9998d774312d41fe8dd61cb077f7 100644 >--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj >+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >@@ -1172,6 +1172,9 @@ > 441B055C0CD77A2D007C1F18 /* DOMHTMLEmbedElementPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 4429AAFB0CB84E88007647C5 /* DOMHTMLEmbedElementPrivate.h */; }; > 441B055E0CD77A48007C1F18 /* DOMHTMLIFrameElementPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 4429AAFD0CB84EA5007647C5 /* DOMHTMLIFrameElementPrivate.h */; }; > 441B05600CD77A65007C1F18 /* DOMHTMLObjectElementPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 4429AAFF0CB84EC3007647C5 /* DOMHTMLObjectElementPrivate.h */; }; >+ 441B70B4156BE03D00134311 /* SubtreeModificationEventListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 441B70B1156BE03D00134311 /* SubtreeModificationEventListener.cpp */; }; >+ 441B70B5156BE03D00134311 /* SubtreeModificationEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 441B70B2156BE03D00134311 /* SubtreeModificationEventListener.h */; }; >+ 441B70B6156BE03D00134311 /* SVGElementRareData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 441B70B3156BE03D00134311 /* SVGElementRareData.cpp */; }; > 44311CD612E4E22D000A8D19 /* DOMDocumentFragmentPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 44311CD412E4E22D000A8D19 /* DOMDocumentFragmentPrivate.h */; }; > 44311CD712E4E22D000A8D19 /* DOMDocumentPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 44311CD512E4E22D000A8D19 /* DOMDocumentPrivate.h */; }; > 44311CD812E4E24B000A8D19 /* DOMDocumentPrivate.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 44311CD512E4E22D000A8D19 /* DOMDocumentPrivate.h */; }; >@@ -8158,6 +8161,9 @@ > 43F6FD9513BCD0B100224052 /* SVGAnimatedInteger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedInteger.cpp; sourceTree = "<group>"; }; > 4415292C0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLPlugInImageElement.h; sourceTree = "<group>"; }; > 4415292D0E1AE8A000C4A2D0 /* HTMLPlugInImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLPlugInImageElement.cpp; sourceTree = "<group>"; }; >+ 441B70B1156BE03D00134311 /* SubtreeModificationEventListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubtreeModificationEventListener.cpp; sourceTree = "<group>"; }; >+ 441B70B2156BE03D00134311 /* SubtreeModificationEventListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubtreeModificationEventListener.h; sourceTree = "<group>"; }; >+ 441B70B3156BE03D00134311 /* SVGElementRareData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGElementRareData.cpp; sourceTree = "<group>"; }; > 4429AAFB0CB84E88007647C5 /* DOMHTMLEmbedElementPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLEmbedElementPrivate.h; sourceTree = "<group>"; }; > 4429AAFD0CB84EA5007647C5 /* DOMHTMLIFrameElementPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLIFrameElementPrivate.h; sourceTree = "<group>"; }; > 4429AAFF0CB84EC3007647C5 /* DOMHTMLObjectElementPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLObjectElementPrivate.h; sourceTree = "<group>"; }; >@@ -18772,6 +18778,8 @@ > B22277CE0D00BF1F0071B782 /* LinearGradientAttributes.h */, > B22277DB0D00BF1F0071B782 /* PatternAttributes.h */, > B22277DC0D00BF1F0071B782 /* RadialGradientAttributes.h */, >+ 441B70B1156BE03D00134311 /* SubtreeModificationEventListener.cpp */, >+ 441B70B2156BE03D00134311 /* SubtreeModificationEventListener.h */, > B22277DD0D00BF1F0071B782 /* SVGAElement.cpp */, > B22277DE0D00BF1F0071B782 /* SVGAElement.h */, > B22277DF0D00BF1F0071B782 /* SVGAElement.idl */, >@@ -18889,6 +18897,7 @@ > B22278270D00BF1F0071B782 /* SVGElementInstanceList.h */, > B22278280D00BF1F0071B782 /* SVGElementInstanceList.idl */, > 081AA8D91111237E002AB06E /* SVGElementRareData.h */, >+ 441B70B3156BE03D00134311 /* SVGElementRareData.cpp */, > B22278290D00BF1F0071B782 /* SVGEllipseElement.cpp */, > B222782A0D00BF1F0071B782 /* SVGEllipseElement.h */, > B222782B0D00BF1F0071B782 /* SVGEllipseElement.idl */, >@@ -24917,6 +24926,7 @@ > 29A309B11561CAC400BBD8E5 /* VisitedLinks.h in Headers */, > FDB052E01561A42C00B500D6 /* AudioSummingJunction.h in Headers */, > 371941971566B37200A276D8 /* WebCoreNSCellExtras.h in Headers */, >+ 441B70B5156BE03D00134311 /* SubtreeModificationEventListener.h in Headers */, > ); > runOnlyForDeploymentPostprocessing = 0; > }; >@@ -27943,6 +27953,8 @@ > FDB052DF1561A42C00B500D6 /* AudioSummingJunction.cpp in Sources */, > 371941961566B37200A276D8 /* WebCoreNSCellExtras.m in Sources */, > 146CC115156988E400109E37 /* LengthBox.cpp in Sources */, >+ 441B70B4156BE03D00134311 /* SubtreeModificationEventListener.cpp in Sources */, >+ 441B70B6156BE03D00134311 /* SVGElementRareData.cpp in Sources */, > ); > runOnlyForDeploymentPostprocessing = 0; > }; >diff --git a/Source/WebCore/svg/SVGAllInOne.cpp b/Source/WebCore/svg/SVGAllInOne.cpp >index 7eef6fa9718871d8ba0cec6c3b6c8a0049e7dda3..a7ae574e824734237fdc81cfbdea4946058adb5e 100644 >--- a/Source/WebCore/svg/SVGAllInOne.cpp >+++ b/Source/WebCore/svg/SVGAllInOne.cpp >@@ -32,6 +32,9 @@ > #include "SVGAltGlyphItemElement.cpp" > #include "SVGAngle.cpp" > #include "SVGAnimateColorElement.cpp" >+#include "SVGAnimateElement.cpp" >+#include "SVGAnimateMotionElement.cpp" >+#include "SVGAnimateTransformElement.cpp" > #include "SVGAnimatedAngle.cpp" > #include "SVGAnimatedBoolean.cpp" > #include "SVGAnimatedColor.cpp" >@@ -50,9 +53,6 @@ > #include "SVGAnimatedString.cpp" > #include "SVGAnimatedTransformList.cpp" > #include "SVGAnimatedType.cpp" >-#include "SVGAnimateElement.cpp" >-#include "SVGAnimateMotionElement.cpp" >-#include "SVGAnimateTransformElement.cpp" > #include "SVGAnimationElement.cpp" > #include "SVGCircleElement.cpp" > #include "SVGClipPathElement.cpp" >@@ -66,6 +66,7 @@ > #include "SVGElement.cpp" > #include "SVGElementInstance.cpp" > #include "SVGElementInstanceList.cpp" >+#include "SVGElementRareData.cpp" > #include "SVGEllipseElement.cpp" > #include "SVGException.cpp" > #include "SVGExternalResourcesRequired.cpp" >@@ -180,3 +181,4 @@ > #include "SVGViewSpec.cpp" > #include "SVGZoomAndPan.cpp" > #include "SVGZoomEvent.cpp" >+#include "SubtreeModificationEventListener.cpp" >diff --git a/Source/WebCore/svg/SVGElement.cpp b/Source/WebCore/svg/SVGElement.cpp >index 1d351d9a56a9e212c8be3d096c64a3219284c9b6..2f91a059d28ac3a3a39c9f0f3cb651c6bad9ca26 100644 >--- a/Source/WebCore/svg/SVGElement.cpp >+++ b/Source/WebCore/svg/SVGElement.cpp >@@ -717,6 +717,14 @@ bool SVGElement::isAnimatableAttribute(const QualifiedName& name) > } > #endif > >+void SVGElement::fireMutationEventIfNeeded() >+{ >+ // Since setting an already set attribute fires no MutationEvent, we have to fire it ourselves >+ // to notify listeners. >+ if (hasRareSVGData() && rareSVGData()->hasEventListener()) >+ dispatchSubtreeModifiedEvent(); >+} >+ > } > > #endif // ENABLE(SVG) >diff --git a/Source/WebCore/svg/SVGElement.h b/Source/WebCore/svg/SVGElement.h >index 085fc19c1ddd59916b6eb1eb2ce9084965442ad7..4e7f41540fe8cb9461d058beeabf85651e64441c 100644 >--- a/Source/WebCore/svg/SVGElement.h >+++ b/Source/WebCore/svg/SVGElement.h >@@ -116,6 +116,8 @@ public: > virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture) OVERRIDE; > virtual bool removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture) OVERRIDE; > >+ void fireMutationEventIfNeeded(); >+ > protected: > SVGElement(const QualifiedName&, Document*, ConstructionType = CreateSVGElement); > >diff --git a/Source/WebCore/svg/SVGElementRareData.cpp b/Source/WebCore/svg/SVGElementRareData.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..da30221689a6e337181b568f1022c625fde84e84 >--- /dev/null >+++ b/Source/WebCore/svg/SVGElementRareData.cpp >@@ -0,0 +1,49 @@ >+/* >+ * Copyright (C) Research In Motion Limited 2011. All rights reserved. >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+ * License as published by the Free Software Foundation; either >+ * version 2 of the License, or (at your option) any later version. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Library General Public License for more details. >+ * >+ * You should have received a copy of the GNU Library General Public License >+ * along with this library; see the file COPYING.LIB. If not, write to >+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, >+ * Boston, MA 02110-1301, USA. >+ */ >+ >+#include "config.h" >+ >+#include "SVGElementRareData.h" >+ >+#include "Element.h" >+#include "EventNames.h" >+#include "MutationEvent.h" >+#include <wtf/text/WTFString.h> >+ >+namespace WebCore { >+ >+void SVGElementRareData::createAndInstallEventListener(SubtreeModificationEventListenerClient* client, const String& id, Element* target) >+{ >+ ASSERT(!m_eventListener); >+ m_eventListener = SubtreeModificationEventListener::create(client, id); >+ ASSERT(target->parentNode()); >+ target->parentNode()->addEventListener(eventNames().DOMSubtreeModifiedEvent, m_eventListener.get(), false); >+} >+ >+void SVGElementRareData::removeEventListenerIfNeeded(TreeScope* treeScope) >+{ >+ if (!m_eventListener) >+ return; >+ >+ m_eventListener->removeFromTarget(treeScope); >+ m_eventListener = 0; >+} >+ >+} >+ >diff --git a/Source/WebCore/svg/SVGElementRareData.h b/Source/WebCore/svg/SVGElementRareData.h >index 506948566e6fe4fe48bb44a5ed6b299df3909479..1604e71a2666c30027c77f4a243673782a32f443 100644 >--- a/Source/WebCore/svg/SVGElementRareData.h >+++ b/Source/WebCore/svg/SVGElementRareData.h >@@ -22,6 +22,8 @@ > > #include "CSSParserMode.h" > #include "StyleResolver.h" >+#include "SubtreeModificationEventListener.h" >+#include <wtf/HashMap.h> > #include <wtf/HashSet.h> > #include <wtf/Noncopyable.h> > #include <wtf/StdLibExtras.h> >@@ -29,9 +31,11 @@ > namespace WebCore { > > class CSSCursorImageValue; >+class Element; > class SVGCursorElement; > class SVGElement; > class SVGElementInstance; >+class TreeScope; > > class SVGElementRareData { > WTF_MAKE_NONCOPYABLE(SVGElementRareData); WTF_MAKE_FAST_ALLOCATED; >@@ -109,6 +113,10 @@ public: > void setUseOverrideComputedStyle(bool value) { m_useOverrideComputedStyle = value; } > void setNeedsOverrideComputedStyleUpdate() { m_needsOverrideComputedStyleUpdate = true; } > >+ void createAndInstallEventListener(SubtreeModificationEventListenerClient*, const String&, Element*); >+ void removeEventListenerIfNeeded(TreeScope*); >+ bool hasEventListener() const { return m_eventListener; } >+ > private: > HashSet<SVGElementInstance*> m_elementInstances; > SVGCursorElement* m_cursorElement; >@@ -120,6 +128,7 @@ private: > bool m_needsOverrideComputedStyleUpdate : 1; > RefPtr<StylePropertySet> m_animatedSMILStyleProperties; > RefPtr<RenderStyle> m_overrideComputedStyle; >+ RefPtr<SubtreeModificationEventListener> m_eventListener; > }; > > } >diff --git a/Source/WebCore/svg/SVGPathElement.cpp b/Source/WebCore/svg/SVGPathElement.cpp >index f4c01f16c925cafa55159152a8f5db6887e5601e..0e24fac7124049c24d2a2fd76c4f546019b91b6d 100644 >--- a/Source/WebCore/svg/SVGPathElement.cpp >+++ b/Source/WebCore/svg/SVGPathElement.cpp >@@ -24,9 +24,11 @@ > #include "SVGPathElement.h" > > #include "Attribute.h" >+#include "EventNames.h" > #include "RenderSVGPath.h" > #include "RenderSVGResource.h" > #include "SVGElementInstance.h" >+#include "SVGElementRareData.h" > #include "SVGNames.h" > #include "SVGPathSegArc.h" > #include "SVGPathSegClosePath.h" >@@ -266,6 +268,8 @@ void SVGPathElement::svgAttributeChanged(const QualifiedName& attrName) > buildSVGPathSegListFromByteStream(m_pathByteStream.get(), this, newList, UnalteredParsing); > m_pathSegList.value = newList; > } >+ if (parentNode() && parentNode()->isSVGElement()) >+ static_cast<SVGElement*>(parentNode())->fireMutationEventIfNeeded(); > > if (renderer) > renderer->setNeedsShapeUpdate(); >diff --git a/Source/WebCore/svg/SVGStyledElement.cpp b/Source/WebCore/svg/SVGStyledElement.cpp >index c0cd1e8c1018211dc2f49b0d45237bc38ba6ff7d..d8b8ab23b04416767654d68fb2882f8f2a195be3 100644 >--- a/Source/WebCore/svg/SVGStyledElement.cpp >+++ b/Source/WebCore/svg/SVGStyledElement.cpp >@@ -345,6 +345,9 @@ void SVGStyledElement::svgAttributeChanged(const QualifiedName& attrName) > object->toRenderSVGResourceContainer()->idChanged(); > if (inDocument()) > buildPendingResourcesIfNeeded(); >+ if (parentNode() && parentNode()->isSVGElement()) >+ static_cast<SVGElement*>(parentNode())->fireMutationEventIfNeeded(); >+ > SVGElementInstance::invalidateAllInstancesOfElement(this); > return; > } >diff --git a/Source/WebCore/svg/SVGTRefElement.cpp b/Source/WebCore/svg/SVGTRefElement.cpp >index dec3642c01a68ef4b9182bd67f878eddf32f80d8..d4da8b981c724a3adf15fdb884e9a48453a28fd6 100644 >--- a/Source/WebCore/svg/SVGTRefElement.cpp >+++ b/Source/WebCore/svg/SVGTRefElement.cpp >@@ -35,6 +35,7 @@ > #include "ShadowRoot.h" > #include "SVGDocument.h" > #include "SVGElementInstance.h" >+#include "SVGElementRareData.h" > #include "SVGNames.h" > #include "Text.h" > #include "XLinkNames.h" >@@ -63,62 +64,6 @@ PassRefPtr<SVGTRefElement> SVGTRefElement::create(const QualifiedName& tagName, > return element.release(); > } > >-class TargetListener : public EventListener { >-public: >- static PassRefPtr<TargetListener> create(SVGTRefElement* trefElement, String targetId) >- { >- return adoptRef(new TargetListener(trefElement, targetId)); >- } >- >- static const TargetListener* cast(const EventListener* listener) >- { >- return listener->type() == CPPEventListenerType ? static_cast<const TargetListener*>(listener) : 0; >- } >- >- virtual bool operator==(const EventListener&); >- >- void clear() >- { >- Element* target = m_trefElement->treeScope()->getElementById(m_targetId); >- if (target) { >- target->removeEventListener(eventNames().DOMSubtreeModifiedEvent, this, false); >- target->removeEventListener(eventNames().DOMNodeRemovedFromDocumentEvent, this, false); >- } >- >- m_trefElement = 0; >- m_targetId = String(); >- } >- >-private: >- TargetListener(SVGTRefElement* trefElement, String targetId) >- : EventListener(CPPEventListenerType) >- , m_trefElement(trefElement) >- , m_targetId(targetId) >- { >- } >- >- virtual void handleEvent(ScriptExecutionContext*, Event*); >- >- SVGTRefElement* m_trefElement; >- String m_targetId; >-}; >- >-bool TargetListener::operator==(const EventListener& listener) >-{ >- if (const TargetListener* subtreeModificationEventListener = TargetListener::cast(&listener)) >- return m_trefElement == subtreeModificationEventListener->m_trefElement; >- return false; >-} >- >-void TargetListener::handleEvent(ScriptExecutionContext*, Event* event) >-{ >- if (m_trefElement && event->type() == eventNames().DOMSubtreeModifiedEvent && m_trefElement != event->target()) >- m_trefElement->updateReferencedText(); >- >- if (m_trefElement && event->type() == eventNames().DOMNodeRemovedFromDocumentEvent) >- m_trefElement->detachTarget(); >-} >- > class SVGShadowText : public Text { > public: > static PassRefPtr<SVGShadowText> create(Document* document, const String& data) >@@ -286,9 +231,8 @@ void SVGTRefElement::buildPendingResource() > // expects every element instance to have an associated shadow tree element - which is not the > // case when we land here from SVGUseElement::buildShadowTree(). > if (!isInShadowTree()) { >- m_eventListener = TargetListener::create(this, id); >- target->addEventListener(eventNames().DOMSubtreeModifiedEvent, m_eventListener.get(), false); >- target->addEventListener(eventNames().DOMNodeRemovedFromDocumentEvent, m_eventListener.get(), false); >+ if (Element* target = treeScope()->getElementById(id)) >+ ensureRareSVGData()->createAndInstallEventListener(this, id, target); > } > } > >@@ -309,10 +253,14 @@ void SVGTRefElement::removedFrom(Node* rootParent) > > void SVGTRefElement::clearEventListener() > { >- if (m_eventListener) { >- m_eventListener->clear(); >- m_eventListener = 0; >- } >+ if (hasRareSVGData()) >+ rareSVGData()->removeEventListenerIfNeeded(treeScope()); >+} >+ >+void SVGTRefElement::subtreeModifiedEvent(Event*) >+{ >+ if (inDocument()) >+ updateReferencedText(); > } > > } >diff --git a/Source/WebCore/svg/SVGTRefElement.h b/Source/WebCore/svg/SVGTRefElement.h >index 85c0684a93bc125a06e05ff488c7bc1fb52645eb..62f27bad929140eadf85b654070b39708b52be19 100644 >--- a/Source/WebCore/svg/SVGTRefElement.h >+++ b/Source/WebCore/svg/SVGTRefElement.h >@@ -24,13 +24,15 @@ > #if ENABLE(SVG) > #include "SVGTextPositioningElement.h" > #include "SVGURIReference.h" >+#include "SubtreeModificationEventListener.h" > > namespace WebCore { > > class TargetListener; > > class SVGTRefElement : public SVGTextPositioningElement, >- public SVGURIReference { >+ public SVGURIReference, >+ public SubtreeModificationEventListenerClient { > public: > static PassRefPtr<SVGTRefElement> create(const QualifiedName&, Document*); > >@@ -61,11 +63,11 @@ private: > > virtual void buildPendingResource(); > >+ virtual void subtreeModifiedEvent(Event*); >+ > BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGTRefElement) > DECLARE_ANIMATED_STRING(Href, href) > END_DECLARE_ANIMATED_PROPERTIES >- >- RefPtr<TargetListener> m_eventListener; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGTextPathElement.cpp b/Source/WebCore/svg/SVGTextPathElement.cpp >index 8b59f4e887eabcd3a58496b3b37e765f255bc9f7..cb44d8fb386603e61edf0800df06bdcc68c61ffe 100644 >--- a/Source/WebCore/svg/SVGTextPathElement.cpp >+++ b/Source/WebCore/svg/SVGTextPathElement.cpp >@@ -28,6 +28,7 @@ > #include "RenderSVGResource.h" > #include "RenderSVGTextPath.h" > #include "SVGElementInstance.h" >+#include "SVGElementRareData.h" > #include "SVGNames.h" > > namespace WebCore { >@@ -109,6 +110,16 @@ void SVGTextPathElement::svgAttributeChanged(const QualifiedName& attrName) > if (attrName == SVGNames::startOffsetAttr) > updateRelativeLengthsInformation(); > >+ if (SVGURIReference::isKnownAttribute(attrName)) { >+ if (hasRareSVGData()) >+ rareSVGData()->removeEventListenerIfNeeded(treeScope()); >+ String id; >+ if (Element* targetElement = SVGURIReference::targetElementFromIRIString(href(), document(), &id)) >+ ensureRareSVGData()->createAndInstallEventListener(this, id, targetElement); >+ else >+ document()->accessSVGExtensions()->addPendingResource(id, this); >+ } >+ > if (RenderObject* object = renderer()) > RenderSVGResource::markForLayoutAndParentResourceInvalidation(object); > } >@@ -159,12 +170,35 @@ Node::InsertionNotificationRequest SVGTextPathElement::insertedInto(Node* rootPa > return InsertionDone; > } > >+void SVGTextPathElement::removedFrom(Node* node) >+{ >+ SVGTextContentElement::removedFrom(node); >+ if (hasRareSVGData()) >+ rareSVGData()->removeEventListenerIfNeeded(treeScope()); >+} >+ >+void SVGTextPathElement::buildPendingResource() >+{ >+ String id; >+ if (Element* targetElement = SVGURIReference::targetElementFromIRIString(href(), document(), &id)) { >+ ensureRareSVGData()->createAndInstallEventListener(this, id, targetElement); >+ if (RenderObject* object = renderer()) >+ RenderSVGResource::markForLayoutAndParentResourceInvalidation(object); >+ } >+} >+ > bool SVGTextPathElement::selfHasRelativeLengths() const > { > return startOffset().isRelative() > || SVGTextContentElement::selfHasRelativeLengths(); > } > >+void SVGTextPathElement::subtreeModifiedEvent(Event*) >+{ >+ if (RenderObject* object = renderer()) >+ RenderSVGResource::markForLayoutAndParentResourceInvalidation(object); >+} >+ > } > > #endif // ENABLE(SVG) >diff --git a/Source/WebCore/svg/SVGTextPathElement.h b/Source/WebCore/svg/SVGTextPathElement.h >index 452e60e00265185f927e33e3bea26b37b0a3031e..4e7cfaa074fc9c10320c43335026d7e7f78ad1a4 100644 >--- a/Source/WebCore/svg/SVGTextPathElement.h >+++ b/Source/WebCore/svg/SVGTextPathElement.h >@@ -24,6 +24,7 @@ > #include "SVGTextContentElement.h" > > #include "SVGURIReference.h" >+#include "SubtreeModificationEventListener.h" > > namespace WebCore { > >@@ -98,7 +99,8 @@ struct SVGPropertyTraits<SVGTextPathSpacingType> { > }; > > class SVGTextPathElement : public SVGTextContentElement, >- public SVGURIReference { >+ public SVGURIReference, >+ public SubtreeModificationEventListenerClient { > public: > // Forward declare enumerations in the W3C naming scheme, for IDL generation. > enum { >@@ -116,6 +118,7 @@ private: > SVGTextPathElement(const QualifiedName&, Document*); > > virtual InsertionNotificationRequest insertedInto(Node*) OVERRIDE; >+ virtual void removedFrom(Node*) OVERRIDE; > > bool isSupportedAttribute(const QualifiedName&); > virtual void parseAttribute(const Attribute&) OVERRIDE; >@@ -126,6 +129,10 @@ private: > virtual bool rendererIsNeeded(const NodeRenderingContext&); > > virtual bool selfHasRelativeLengths() const; >+ >+ virtual void buildPendingResource(); >+ >+ virtual void subtreeModifiedEvent(Event*); > > BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGTextPathElement) > DECLARE_ANIMATED_LENGTH(StartOffset, startOffset) >diff --git a/Source/WebCore/svg/SubtreeModificationEventListener.cpp b/Source/WebCore/svg/SubtreeModificationEventListener.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..08e151abbff5339b3355fa2868edeb12f70d353c >--- /dev/null >+++ b/Source/WebCore/svg/SubtreeModificationEventListener.cpp >@@ -0,0 +1,48 @@ >+/* >+ * Copyright (C) Research In Motion Limited 2011. All rights reserved. >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+ * License as published by the Free Software Foundation; either >+ * version 2 of the License, or (at your option) any later version. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Library General Public License for more details. >+ * >+ * You should have received a copy of the GNU Library General Public License >+ * along with this library; see the file COPYING.LIB. If not, write to >+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, >+ * Boston, MA 02110-1301, USA. >+ */ >+ >+#include "config.h" >+ >+#if ENABLE(SVG) >+#include "SubtreeModificationEventListener.h" >+ >+#include "Element.h" >+#include "Event.h" >+#include "EventListener.h" >+#include "EventNames.h" >+#include "MutationEvent.h" >+ >+namespace WebCore { >+ >+void SubtreeModificationEventListener::handleEvent(ScriptExecutionContext*, Event* event) >+{ >+ if (event->type() == eventNames().DOMSubtreeModifiedEvent) >+ m_client->subtreeModifiedEvent(event); >+} >+ >+void SubtreeModificationEventListener::removeFromTarget(TreeScope* treeScope) >+{ >+ Element* target = treeScope->getElementById(m_clientId); >+ if (target && target->parentNode()) >+ target->parentNode()->removeEventListener(eventNames().DOMSubtreeModifiedEvent, this, false); >+} >+ >+} >+ >+#endif // ENABLE(SVG) >diff --git a/Source/WebCore/svg/SubtreeModificationEventListener.h b/Source/WebCore/svg/SubtreeModificationEventListener.h >new file mode 100644 >index 0000000000000000000000000000000000000000..ab612a3f99cf36add775a63425c0cceb2439db81 >--- /dev/null >+++ b/Source/WebCore/svg/SubtreeModificationEventListener.h >@@ -0,0 +1,76 @@ >+/* >+ * Copyright (C) Research In Motion Limited 2011. All rights reserved. >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Library General Public >+ * License as published by the Free Software Foundation; either >+ * version 2 of the License, or (at your option) any later version. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Library General Public License for more details. >+ * >+ * You should have received a copy of the GNU Library General Public License >+ * along with this library; see the file COPYING.LIB. If not, write to >+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, >+ * Boston, MA 02110-1301, USA. >+ */ >+ >+#ifndef SubtreeModificationEventListener_h >+#define SubtreeModificationEventListener_h >+ >+#if ENABLE(SVG) >+#include "EventListener.h" >+#include <wtf/PassRefPtr.h> >+#include <wtf/text/WTFString.h> >+ >+namespace WebCore { >+ >+class TreeScope; >+ >+class SubtreeModificationEventListenerClient { >+public: >+ virtual ~SubtreeModificationEventListenerClient() { } >+ virtual void subtreeModifiedEvent(Event*) = 0; >+}; >+ >+class SubtreeModificationEventListener : public EventListener { >+public: >+ static PassRefPtr<SubtreeModificationEventListener> create(SubtreeModificationEventListenerClient* client, const String& clientId) >+ { >+ return adoptRef(new SubtreeModificationEventListener(client, clientId)); >+ } >+ >+ static const SubtreeModificationEventListener* cast(const EventListener* listener) >+ { >+ return listener->type() == CPPEventListenerType ? static_cast<const SubtreeModificationEventListener*>(listener) : 0; >+ } >+ >+ virtual bool operator==(const EventListener& listener) >+ { >+ if (const SubtreeModificationEventListener* subtreeModificationEventListener = SubtreeModificationEventListener::cast(&listener)) >+ return m_client == subtreeModificationEventListener->m_client; >+ return false; >+ } >+ >+ void removeFromTarget(TreeScope*); >+ >+private: >+ SubtreeModificationEventListener(SubtreeModificationEventListenerClient* client, const String& clientId) >+ : EventListener(CPPEventListenerType) >+ , m_client(client) >+ , m_clientId(clientId) >+ { >+ } >+ >+ virtual void handleEvent(ScriptExecutionContext*, Event*); >+ >+ SubtreeModificationEventListenerClient* m_client; >+ String m_clientId; >+}; >+ >+} >+ >+#endif >+#endif >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 53a8ad99fe5431dac2745d6b970159a2079a0c2e..b87a56922619b4c90040db31c4174a7f21fd5621 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,106 @@ >+2012-05-22 Rob Buis <rbuis@rim.com> >+ >+ Bug 15799: textPath element does not re-render when referenced path changes >+ https://bugs.webkit.org/show_bug.cgi?id=15799 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ - textPath-path-change-id.svg, react to change of id attribute on referenced path (makes the xlink:href valid). >+ - textPath-path-change-id2.svg, react to change of id attribute on referenced path (makes the xlink:href invalid). >+ - textPath-path-set-id.svg, react to setting of id attribute on referenced path (makes the xlink:href valid). >+ - textPath-change-reference.svg, <textPath> references existing <path>, change the xlink:href to a non-existing one. >+ - textPath-change-reference-using-baseval.svg, <textPath> references existing <path>, change the xlink:href to a non-existing one using SVG DOM. >+ - textPath-change-reference2.svg, <textPath> references non-existing <path>, change xlink:href to an existing one. >+ - textPath-change-reference2-using-baseval.svg, <textPath> references non-existing <path>, change xlink:href to an existing one using SVG DOM. >+ - textPath-insert-path.svg, <textPath> references non-existing <path>, <path> added dynamically. >+ - textPath-modify-child.svg, react to change on textPath content. >+ - textPath-path-change-using-svg-dom.svg, react to change on pathSegList of referenced path. >+ - textPath-path-change.svg, react to change on d attribute of referenced path. >+ - textPath-path-change2.svg, react to change on d attribute of path referenced by multiple <textPath>s. >+ - textPath-remove-path.svg, <textPath> references existing <path>, <path> is removed from DOM. >+ - textPath-startoffset.svg, react to startOffset attribute change on <textPath>. >+ >+ These tests are duplicated for <textPath> inside a <pattern>. >+ >+ * platform/mac/svg/custom/textPath-change-id-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-id-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-id2-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-id2-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-reference-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-reference-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-reference-using-baseval-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-reference-using-baseval-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-reference2-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-reference2-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-reference2-using-baseval-expected.png: Added. >+ * platform/mac/svg/custom/textPath-change-reference2-using-baseval-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-insert-path-expected.png: Added. >+ * platform/mac/svg/custom/textPath-insert-path-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-path-change-expected.png: Added. >+ * platform/mac/svg/custom/textPath-path-change-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-path-change-using-svg-dom-expected.png: Added. >+ * platform/mac/svg/custom/textPath-path-change-using-svg-dom-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-path-change2-expected.png: Added. >+ * platform/mac/svg/custom/textPath-path-change2-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-remove-path-expected.png: Added. >+ * platform/mac/svg/custom/textPath-remove-path-pattern-expected.png: Added. >+ * platform/mac/svg/custom/textPath-startoffset-expected.png: Added. >+ * platform/mac/svg/custom/textPath-startoffset-pattern-expected.png: Added. >+ * svg/custom/textPath-change-id-expected.txt: Added. >+ * svg/custom/textPath-change-id-pattern-expected.txt: Added. >+ * svg/custom/textPath-change-id-pattern.svg: Added. >+ * svg/custom/textPath-change-id.svg: Added. >+ * svg/custom/textPath-change-id2-expected.txt: Added. >+ * svg/custom/textPath-change-id2-pattern-expected.txt: Added. >+ * svg/custom/textPath-change-id2-pattern.svg: Added. >+ * svg/custom/textPath-change-id2.svg: Added. >+ * svg/custom/textPath-change-reference-expected.txt: Added. >+ * svg/custom/textPath-change-reference-pattern-expected.txt: Added. >+ * svg/custom/textPath-change-reference-pattern.svg: Added. >+ * svg/custom/textPath-change-reference-using-baseval-expected.txt: Added. >+ * svg/custom/textPath-change-reference-using-baseval-pattern-expected.txt: Added. >+ * svg/custom/textPath-change-reference-using-baseval-pattern.svg: Added. >+ * svg/custom/textPath-change-reference-using-baseval.svg: Added. >+ * svg/custom/textPath-change-reference.svg: Added. >+ * svg/custom/textPath-change-reference2-expected.txt: Added. >+ * svg/custom/textPath-change-reference2-pattern-expected.txt: Added. >+ * svg/custom/textPath-change-reference2-pattern.svg: Added. >+ * svg/custom/textPath-change-reference2-using-baseval-expected.txt: Added. >+ * svg/custom/textPath-change-reference2-using-baseval-pattern-expected.txt: Added. >+ * svg/custom/textPath-change-reference2-using-baseval-pattern.svg: Added. >+ * svg/custom/textPath-change-reference2-using-baseval.svg: Added. >+ * svg/custom/textPath-change-reference2.svg: Added. >+ * svg/custom/textPath-insert-path-expected.txt: Added. >+ * svg/custom/textPath-insert-path-pattern-expected.txt: Added. >+ * svg/custom/textPath-insert-path-pattern.svg: Added. >+ * svg/custom/textPath-insert-path.svg: Added. >+ * svg/custom/textPath-modify-child-expected.txt: Added. >+ * svg/custom/textPath-modify-child-pattern-expected.txt: Added. >+ * svg/custom/textPath-modify-child-pattern.svg: Added. >+ * svg/custom/textPath-modify-child.svg: Added. >+ * svg/custom/textPath-path-change-expected.txt: Added. >+ * svg/custom/textPath-path-change-pattern-expected.txt: Added. >+ * svg/custom/textPath-path-change-pattern.svg: Added. >+ * svg/custom/textPath-path-change-using-svg-dom-expected.txt: Added. >+ * svg/custom/textPath-path-change-using-svg-dom-pattern-expected.txt: Added. >+ * svg/custom/textPath-path-change-using-svg-dom-pattern.svg: Added. >+ * svg/custom/textPath-path-change-using-svg-dom.svg: Added. >+ * svg/custom/textPath-path-change.svg: Added. >+ * svg/custom/textPath-path-change2-expected.txt: Added. >+ * svg/custom/textPath-path-change2-pattern-expected.txt: Added. >+ * svg/custom/textPath-path-change2-pattern.svg: Added. >+ * svg/custom/textPath-path-change2.svg: Added. >+ * svg/custom/textPath-remove-path-expected.txt: Added. >+ * svg/custom/textPath-remove-path-pattern-expected.txt: Added. >+ * svg/custom/textPath-remove-path-pattern.svg: Added. >+ * svg/custom/textPath-remove-path.svg: Added. >+ * svg/custom/textPath-set-id-expected.txt: Added. >+ * svg/custom/textPath-set-id.svg: Added. >+ * svg/custom/textPath-startoffset-expected.txt: Added. >+ * svg/custom/textPath-startoffset-pattern-expected.txt: Added. >+ * svg/custom/textPath-startoffset-pattern.svg: Added. >+ * svg/custom/textPath-startoffset.svg: Added. >+ > 2012-05-22 Nikolas Zimmermann <nzimmermann@rim.com> > > Not reviewed. Re-add expected results for three tests that were missing. >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-id-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-id-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..59d457f6c1b41b182653cae483a20f146fa44f36 >GIT binary patch >literal 11565 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 >AQ2+n{ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-id-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-id-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..4ff7b37467a7b366437c28d0844dd5ead13e70a1 >GIT binary patch >literal 12541 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 >YQ-7#a?$>w&-!nk$tR1Y%ExZ%|1#K3^RR910 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-id2-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-id2-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..d97a101024c3dbdc6d5cee3887142cb0bc0c3b48 >GIT binary patch >literal 12379 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-id2-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-id2-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..52b3e1f3fb727240ae68964be6d7b460ed58a926 >GIT binary patch >literal 12383 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-reference-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-reference-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..59d457f6c1b41b182653cae483a20f146fa44f36 >GIT binary patch >literal 11565 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 >AQ2+n{ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-reference-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-reference-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..51c9352bbca29ce48f6ea097748c8d9db916785e >GIT binary patch >literal 13843 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-reference-using-baseval-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-reference-using-baseval-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..59d457f6c1b41b182653cae483a20f146fa44f36 >GIT binary patch >literal 11565 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 >AQ2+n{ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-reference-using-baseval-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-reference-using-baseval-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..51c9352bbca29ce48f6ea097748c8d9db916785e >GIT binary patch >literal 13843 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-reference2-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-reference2-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..d97a101024c3dbdc6d5cee3887142cb0bc0c3b48 >GIT binary patch >literal 12379 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-reference2-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-reference2-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..006515d33b7fcccaae2a0af37d48bbb14cf101d0 >GIT binary patch >literal 12750 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 >YJ3ee6WLoFT{-6PJbM|n0y4x@PKj7Oxn*aa+ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-reference2-using-baseval-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-reference2-using-baseval-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..d97a101024c3dbdc6d5cee3887142cb0bc0c3b48 >GIT binary patch >literal 12379 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-change-reference2-using-baseval-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-change-reference2-using-baseval-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..006515d33b7fcccaae2a0af37d48bbb14cf101d0 >GIT binary patch >literal 12750 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 >YJ3ee6WLoFT{-6PJbM|n0y4x@PKj7Oxn*aa+ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-insert-path-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-insert-path-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..d97a101024c3dbdc6d5cee3887142cb0bc0c3b48 >GIT binary patch >literal 12379 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-insert-path-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-insert-path-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..4ff7b37467a7b366437c28d0844dd5ead13e70a1 >GIT binary patch >literal 12541 >zcmeHOc|6<M77xRSwutJ~)UMNxYD-3IttGJy+97I6(OPPKh9*))tO+$$gT|CvLZ!Os >z>)31Tv5Zk^DP}~`svtCKOB%}{k>veKnSS0M@9+0{@Ap@JxxahwIrp4%zvtX@?k~mB >z!A5GA!Y&8|B4uZ5<phCzrUrqCx<Wq(T1XLzp}>#kRcqI)zW?y|4Gs&x4DmNQ5fE@f >zUq{DZ*YF!7Bi)lH{d9bMPwM*k`UM#280f9+mN^Z~zzVXobhNXyRCBz72?z@Dhd^*5 >zKc4FgmNVZc&__T1;~>;MSo#Sr<Di{e$v><I^!c(r!FxtjYppZ<PTCEk_2*b$*F3y2 >z#rX3m-Fl%&LP$`Fe(wiA{iD0}5qilHpCWlJP7nIK+K01kz41$Q19luHVhkd6rC)c2 >zAT}jMb-E`T6cTIk!^REB&3lsOx`&-d<{b`wZhkFnJ!X11S|;Iw%kMF~$S09yr2blx >zL=qo4ZbN!?w3024-Q~7d^oGe;ktX#jbZl~Xah_=85QY1#M&_7lhugteq@GqU-oF0( >zp2IZcHCw~16|9q4!BA?}kg`M&I-v6ztQnP2-1LG~;!{-M@RxK(^PS~*hibZ6yL$WX >z17(PB>(dKY(q1AMmnI%CJFc55eW|y+=KV#T!s9i)_I+M3dyRYNu&=bGIJxC~m&MbG >zp&5o<ewPSg?zX6*@6c<F$>MQe56M+9B3;f-L=oiz=>wx|>(`<c-$*O(QP@M0vUP-6 >zi(SgCbVOb^QP9zSas}~K$>)lhF(<+g{m^vP$EwOaM*odz-Ps4DCW0dev00Wi&|4ek >zf}<7BQE#KxyDwG_yR2rF<&zp0$Bm!9&1+Cl8KOO#472x)y*&_-dEO?wG%A`xnpZ%~ >zpU=@@Ch8G8!YX+jEw9@zax~NSJ)Lx3nmv;g?yh4nMh?Lnn=-Wfv}*>#%2HAdT=H`Q >z`9Ik5Siev*na=Ad&lS!_U{8lHLsRGLh@Ym_Q*xeab8ZcvDcQ~NzD$MQxqV%;|MJh= >zLodC(Nt6}12jT**`CI&+m9tp~Ui6<!S;e;>_0zr6AdTS?N2nX}Q>#BslaGkPL&l%w >zHD3N6%Z3&CKSYO>i^{kD8TY;x9eh9Da6`=1q-1}YlO9=(BBB(L9If(BGnbZ~-DBjG >ze4L!wIMe0h^ulq((#dJ)@R0wR{ndHSJ~I)+c{F9TQjw9xYR99~{+Zkgj%+2r(rJCY >z)ag~cgTi1!4j0o#;aj)iQd1xhHHe*+`8k}(!svy6vV5DUoS4^NsQ17$ETpsSl`<ZL >zs^uU2Im1cmuA!R0eAqR^P{Mp_l9H_^_Q4^eX{%d)a!;hxV`$Mr)SSYB@&=bl;Q(g9 >zed%OZOggr28t+wsIz4thFipxgt+g)X)gpP~8bm}?3|eaMJvUf3Sv!JOq%E5hKD05R >z^G||k#Z^&DOrt)W)`woOFGp%G-$!n~4%j`f%afFWscrp*0uSDHA|g)?6;MAsZ}x%0 >za^Y%7W`0!SCXvnNgu~)u&u)dPe6`&L7}r98<YAbSA1HhrnY|CDcBVZl?UQlqqN08+ >zc^W%ipfFb_B;mN^w9Y5vn7g4F>j8y3^g*UJ_4a=&sg%2Ikz;Xn#UuE&iDV9kstWhy >zO%f3|z3}`R)4J@TUz3%#O%7@$9+5(4Eh@W=Kg{t|sC#pz8^>FyqdtCAcuF7r#?VZ- >zu~a1#@Q8{S3br7$U2>$RVU3YWjawZxkVb60Ul6PZlH>HzjWfknJXRCYboEUbh101x >znd23IfQS&Rb=?V$>WP3y+J4*{YA|`28kV6P_S>sKvZ>kH_%-Z8&CtyzR%5WN1fIV# >zR6qMmN#}D7vWaKh%1dm&okm%El#stlJyt<Ep%VSBh|~6&OewdT%V?Y{S8N4X!!h#$ >z_uJq%I8;Mc{bc7Oa=bhI06?@WHO^w2Xl1#mK&~|WExjsxp}Nm3wRJ*DQU5rz*O+Zm >z-YVc)BTabo)l$A(?N0w35B<V;?hJ>9LewD0(sW>@9DtoPO_O4xN91U@$@*00<OrtK >zBi5AP=k8g(=tJHSW@!ll;&vY0-6G)5iMNYLC{^zAjh3OF_lncg$IvM^h?*9)tJpuS >z<<kwuV#5j|UI$Hf!&@&>riOiq%I7a)pLTT*Es}1_^OCk9z}o`=j>aqO;qG`qEm*2@ >z<Z-&pmFI_ZO51U)hUw1rX);3k)VsS_KnU7`lcmn^H8#Awfl0!4X+BCD^1{a{MNR$e >z8(s0d6*0I-!XqYww}B&JMHZ$uH%YO?G)!Dq+>fzBaNpghwg6hhO|D%^R<7-udYj{= >z5?FxkWXyLRt59N7mU?l3vRs-2xIXOWRZj|PikXj5p`l)!0@P0ZT?Rp!4F@Fui$v@e >zngXy@i58_NwV(%#S@)XQEip=fo_upWYK6p+3z%lTmUU)6r$Y{PJVUUt)K@ivZc3L> >zjSZF67G~$uS9O}J_{%hus=Oy|qMkcjLIq@Cpj|(ncsr;3t==*CUy_^q9KgM{M#(kl >zXN_ms^{K@MWFd;9^VkGfO{xJIHKv>=AkkG%#05@1mG`<xnV?LW0k3rUy+m$qJZW$@ >zoKm^A2*}avMGd96&_Hrqn}c3RLTPJ5x)8P|;IZXf9pCq#fh$kniKKUV)zPEpa^pkT >zzC_d7#n~DA>D4j3uxp5>p;3rq7y?Fp-ojt2!Yw=jzJuI@&cJlXR&Umn#xq_b@K&r= >z@nY3x<K~%-F;yGo@PS+bNz{*<&ZJR`l2uNznpf!@dJMaavXKgJaov#4sO~)#+*9Ee >zHLS7YFy^!?`NAXkQ6a{4O=$1UojHdxT^V3t<_cq22aFefr7=tug&Vwr_yHEcb;H_Y >zm+6AAUc;#jOBVr-`(qLU*xZa}by}p23ScDI@dOF&_)P9{_a34VGxsUate9LFzWz1` >z9&gNDe!uLQF;iD2#8kMsG30h^C|rKH67ZL;b?DJXR;t#a%CxrS(X4bu18v3>U=J5J >zhUv|Jy$*iqylob3Aqg{MihxH|6!3NOdp`pfGdv+4E8&+cv>6xfZ`-FzqpHNr>)bSC >z+*lBhy}E;Id3P;$=+zTe2^}d~pSZfaVq&&-xjQlugLa6E*%l0oZVv%W<TR3ym1MV# >z1xNz&A`+YglnH1j;NAhD0E9=-WdI=$2n8S%fKUKJ0SE=a*#d+D5DGvj0HFYcg3Y7} >zm_Gq?O5gzjj0(V1Dv(tE--iP49H6|_Y_?SiX(Ndh<0C^}{~Bapv2t)Tss0|7Aa$WO >zWSvKrFw@v9Xa~y<Q=*pKJ(+r&d3f*JZP#0cOI5QS@}K18VNgk&j4gDq=99LoA|n0v >z1=|%Ds4nNo@4%Isln-|SU}~_vFg118p}l`6`~Lt^wg%XpsvZ!i+ad``-X3Q@$?XH> >z#nFzP!VpkLQx_50n;5=T%HNvG14+0l_jegZ44MSg5dI@$ATv8U`Ztw<k^v<H?xqj; >z1LDjUup>bP-YoiqzUkv77SL;NT~h($nUA+0!4P6AUIoL>kFgUNkZ&DK{<}hm1fl4= >YQ-7#a?$>w&-!nk$tR1Y%ExZ%|1#K3^RR910 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-path-change-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-path-change-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..bccb5c9200041e9a892bddc4011d0c6fa01a5610 >GIT binary patch >literal 18982 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 >ObHdK)XvJ?AZ~hN{COxzO > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-path-change-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-path-change-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..8be2ea654381b77a13d367b466ee03a7dc8e363a >GIT binary patch >literal 19283 >zcmeI4XIN9&*Y**0a7Kz1kZ#wJjshB*gNV)uI68Dg7sNn91QJ>Z$_PlL%veBaIy#^t >zy#y1IfRv~-H9#OC1QG!ek`P)*<vG#$m+N}JzMr0lPaHOfb8_}x_r2Eo?Q`YUc~@tZ >zAGCf@P*6}gd*;*y1%>qn3JQu|o4x}^9wKf;0Y47MIC;ecU%4C%iH?m_2nn*Z3N{b9 >zY<}6))ZD^6=-AO<tB|81)*;7DFCRBEwLCMN+YelU8}8_M{;Z>;!TD>j(C~=M3JP)S >zZvNH>*?w||%o6(i{hm!e5Y^ha+&yQ#%da@~TS~VEL6qtGjZV2C7H0>cmNVP~4S#2R >zVtx2=)QR(0X*ESJVJ^hv=bJuGhepc}1wGa<;`cz$HU9mjr8jwD)QX3KA(#p(*FGLy >zO4;y9g?!<!t>F<#KV6k%C}jWj{mG;I-RZNg`@TDw8ZAtm8cI;R?(5N(C`Q&ID;|Dq >ze5mxh)M3o|;qZ^uJPr5{-rE#2Y?zM^lVdh9*+cWQImcb&<60Zkj@Y()?@4kvX4H#z >zX}Z|6pW={u#`^9O{DNH}6?2!Ws}v3m?R>L^;Fep8@8*^VJuY-zR?Q_8Ehf9xjoQ85 >z{d)7R3j5PdS;b4Y2kcpa<4-5s(`<D#k1ehQ?8It4Upe-AhyNCrgMa-7A2wFu=T}NS >z=6}8sm23SjBrqk~=ZqWm9CQVjz7chRy1j~p^!Rl=K4*K_Xg`DJL{qFXRn=A2Qhum% >z=KL0?4T1U9=N-~)w9JmyUbEj@{+;%nMDy5vSMf1Hr)o|nT8`Lae|^fZksaCtzw6kr >z=}*Z?*^gCk-6rCNU6-ndJOp<u3LfI-$3Ptu4_;~MQ7LcO(Jp>T_xcfcJe}{qj8ABO >zIICqp>zQXZdE;14dvvv!Z{&ZkJMZxA9UW}<g)hJS9_wRf#Vm<HgKSyGeZ~!g(G|Ba >zRvra;VbZH-#M~FncP8D1ZhlLANmx&NFzc|{0Yv81?pt{s#{55rektF~3Wy|cD!P|; >z_+#WBqJ0Aa0S}v(Ou+WOafH)o<)vTm?&|*d+bse5^^YM(i(aY1L^*V_MB|enbE@Q! >zqDjQqn+Leai*VkS$Cv+xMpr6okUpU18ljLU$<~q$UN+_G6&H?`7&NcbL8K?>eLkE| >zxqrXs_=R-Ck~_HRcR?4r&(j?*T%hi!Uj9YB?ty#IG-BuhMHi~``1ntP_OhQZ-w{>u >zw^mE5F9?M%FAOKUY7Jh`6Tw=VrA{qzm|F@81`20So%}6s9fz^8+R*!+<@<;$BVZ+@ >zphXe6OLHV}PT{-n^f%Eqjeygxx1hd5s*LP6&_W`SpCx_0q`EyY!iz-MV4|8O-t%-b >z(LFr2m*$@9Kk@eEdR*m<n(gBIW%8*Mg>{M>5C@}%0@GuabYsqIpj|d>+G5}kklk`! >zNk1tH`DS-|_i!if>)<00D`W2=;IAnP*M}9I3kWw=<mZ0925?aQI7Oj$cVW+ejpdsd >zq;y-=Z3J%euTkwEHW_HY9=<KV@wc(-LPf<lNfy3qms*=Eg|%S#s*5$@e07;MXONrZ >z|AAnLx~ptJl5${pUeXi@(vZAdR}$+leCIi6+}9jXM&v}&R~O6dWA#Pv(+9beFtpfL >z&|#7c=gePW3Wx$iLzf`5)g+mZAq*#R8qvZoe_WfIeY1Gl4UIz-q5E%0!90$rf#jbk >zBrNwyUXApAF#no<qJG<cXuCsYbkR)A!Q*ew;vkpUS_~KHwL9F;&h`n&NsE$K_zzjo >ze(-W_o^CN|?xxACpXg&AqU^-LbDRd@vl9e@nrl@;Qc1EUs&OAKzzRh#XhbhQ(dQT= >zYA~@@O|2>(+)1|nY8>+MX7DroLJ_a|ny{`!I?D|?2=W%Z@FZNFm?sp)FBCA7B3I(+ >z^wB}^(hE<Hs`Xe37nlrx<cu#9hi7o0RK~a}@^kV0-Ljai=J(5Bs2N{IY*iwIYl(g3 >zA}AI#mnFX5Ui=;`VQKLE=Ksu#@LtM-B?SviR_9IHh-`vJ;N`;PRWTEp6W6{s?J|-u >z1IEY6-gy#hL4sF(w%z!T_bU4t)2_%b+&D4_fo<wA!bKM^6f%}7kp%cc<SLh!028pp >z;s#FwRpxD<M?da!`fKvf{!@{&+AscrGEj+Vkj?n7ivBu6wp*?dBT`<)$yUhrM3_=b >z+X7;aYA+dA^EdQOeovg{k|Yx*CViuPq5kR$S;pWc3$kZ8p*LLw4Hub+1sc6#p^0o; >z30nu{{3rm9M2PbQM0|v}{h%GN?k*bj79Ob08mML&?)l9OBI*scSr%ru@IYowKJLm? >zY`NcKw<_!tknLrBahcuHbKgm<MVRzKZ%nCd6bPC7!m9WlNE)h2WYZy@eyu@_V)m*U >zHHJS9@mg)um(2zF*{n>Mpof`@rB)1cm?%Vusv*rtbCNg{0$OQFSGc~-C{i(9FX0O5 >zi<HRoYb}-+Gml<4Jg_hTW)qcWp*M5k6PSA~kJ~(D%d1||BwKgRaTai~Y+sRl`4bJH >zup73MSr#nq#T5^!l!somhOkM|%MBx?MWROdlkAbXe6r2t&-lIB)<ItEmi210*@*fj >zSh;k7xGF4Jot8<Ns{~BlC9|Vf26lwK3CgT9V8^s>_KUJE=L3(3EF6#u`_Noye3vg` >z>IC%_PW_7d0=pH^gsAc+wesdO<K7pyFBY0%P_~?KH|^eQw-?yFE`QlP*Ivf9Z)_@D >zX+Nmv@t|>kXuavt!asJY8%x6m#6jqIW5Qxo+7+Rc@KsNZ+~`*$9(~_`s|!aIXL5E# >zV-s@*!O}0D%;3?OPJTABnQNZ+syoO-$CR9#ZBaO`+?HDiOJZxc)#^*elo-K!3;Em& >zdAR-{hG#QtC&Qvd*c~YQ+XOY;A(>7+XghtDArC5ULlr6#2`Hpd3`7f63P|+J9!;=p >zK96Ud@BxF+7rt>$bFmY?bwhA&_iV{vwOAFCTW2==&D{tTzCgM7AJKzROJh+O4r|Ot >z^#w1HDOPRk=EnCWBG4;s`avJ6`zS@+7_fK{9jB+%YqsxDnrcNs(3uYmE&|I9R7)JH >z9zAHszZF|<JV~|`;F;32$5G?+H%*cPYa)t<gKq9rqj_KF0wD*N*UidO%$8dE;V+B8 >zgM@1~T0yrjt;~km;}M#E%3Yb$z->pH-p*P5)Y*rYEd=H>V_IkY1h~LMV=<#RvRYir >zdfY`o>_;@J68$4QdB=<C1gqr<2>Q##k}s^y*VAo2?RLxubsTp6fSL`~_Z^;sPtH%7 >zr?oR?L#?z&o%>MSXnbAq(o4qx9eZ*OqmY<W#Wwj?bk8BTJWKci6~Ae4amV0B<EZOI >z-8q5WdBvI+D8y+$<<@YeS`=uE>y|u!N3Eb9RwPC++JY7|6D)LpuJd}Y*Z#gx(`P#c >zSQD!3A+<Sl6<D4GFOqK5633w&rtz~{7rVhXUW{#?Fp?H9C6h$3ziGGrss)2;4U^!( >z1&uSl5$IQ4;7XX%=eA0kl~lUl7=DWgwzuHoVCzD<=IS+R2(~seuBI7m@}Wf3U*=~+ >zT5hOfU>}*=sO3?Lm+MjZ!JwKX;Ym>Hd#uH;sLhbJsD{r|-o4lE+llJ$49^ogr{wc0 >zM(B3V9i_>AEbLPK1WXzG!-D2RjmYHwCwc=|g?=o=MD$E-Z98?mZ`UA3T3O&4_j<dk >zG~XE3`oezttlJ4?tkx8{x&@)~b|r={*wq);Ij6-JViM|2DNHFB$uqh32gY#Fdno`g >z2rywPfx9?5<XNTL)=L|HMg*JmlSBhmTy|Z})i>-#LZjprV1VeM61L8irX3y@*QPCk >zB`*}9Hg}=$#i0QObb<TeWTZ*Jrom;q``dsTs3qaLd6>gwXhYK#DPYy}rcWm`0gbR& >z6DyX>k|}#M^-UVM(M$*iMR9!2Xcm(<wy|s7tB$KazqL6ln4tOR(jb=D0O|>MrAR*= >zw4auHpGrXo1Y09xqypj_zp-Myy~ZX>>{Cp-STML`MB`sqOA1(-v|irjcm;|U(~<D4 >zv7kdbeh1PNT>Rxm%)LKFX>8wB6t%0*uH$_<1U%zIardyx#^Bh7KQ&>uyl+TdtlU^T >z&YI<PdvIU&++HU4C<SH02HAV&R??CfI~*U-*3F)$T1Rg~`euR*vo3aHp5MF;AJjt! >zd-q45xCy>=P6oJC0=#kNvPt4_RE;=>FwK5;Qu)}4!J6!2k^*C2L7Y#CR~VRpOi*(b >zkO~B+Uy@Ax#DC^Be~N0{W86*}SAh-L&Up9v9RCET5hwaCkDS@lo6sJ1OoZ;VD6YY5 >z7O^8d&P9vtP`Ww)IG5BU>aL0bW&QIe%YX!igQ0dF)?#-XxP+DR3gyUXfL%`qU9C9M >z(*)LePtISmZn}*&lg#My;>e~uAR~?75PAbFIXxaut(*uSq0UQ+Xh#`P8dh_1o6<G- >zdyp$f`OTcE>cc5lvn0dHJDOEt865ge`euBr81&(mYrWSFr6*<`kvYiV#-X`4N*}mQ >zwov6ZA#YX28()4mu1gJiS-^7j5a6f;+$N=QeQZd!!w~V9zU6WHaId8#E4TJ)X6}x* >zL=W)69c>@>WHealw3W)u6@TQ?_z&d>i*5`k+G$G`D4;=me+<X4ofb>pND*~5PcMWM >zrsBBE1T$0xA)d1d!uKn*=zzHSqlLonU88Oor?ESZmhqx#0pM>9djM~v>WCQJ&vYEQ >zR<C08rC9RmAkr+^*4S>8OXqL7mC9-|5dY};>YdM{O^Wa>>eRw^PC%K`JjCk6wblcX >znGln|z*`&l9BSXeG;jv7eKKBAkR&nV9x2Pr_RL6l3BM;+$GVfm$T#Ad5N&fXePmht >ze3O9$y(&Pb2W-WX8PKbaOKCIqtcQ242-7ZYMp5K~oiD`|`PPox!hWTlud+qxN`+Lk >zlsc}x(xiR}>T5&ZJGxnX^&$IJ6;nIfFVTMqi7P=b&bZN8X5SpK+I{R$;&&lO+C*V| >zqd1+YPH;|8{<|qV!K?Ag(=&~lYL;xPGpyU>m8^)D`piPIcPjkE=SQh&yU*3Q*!UH9 >zqKx`V=%sM6weME@9hxMnnd=Aa%A|c-+igmmb2(p#BW-;bq<NvxX(&b{6OfqFNh{Jc >zE%ItQKA#g}i7L{}R3{B=b;Pl-XFJhwc=V!0GBU)9@>z%8zGK}}Fv;Tg40m<-`jkyM >z<!L<~%W$&<<(W+UX(#&Rxf<rm<4z6IN(aPBn~q1^+^aD=X=}|5#`3bHd|I&f@&xlZ >zikVjh@&CqKT6z`tuRo)6w6o$jcJ`_A(v?OlS=PmojaQqu|JIGU%(qc=yrjKFsnD#W >zsGQ}@DrGjRZO)ds6}D#7DVlZUR%n)Pr|xSvi6LK?IRf=~M|IIA3$x!3s!H^Mgsg@f >zeyE!IkP8uN5U~&n0tL~yqeg9RKPj{B0GG4IqMOt9^k%f@wA}RnJ+%tOf%sPDWC-~j >z^f|MbL%qfA-Wl*r|C2ee5^|~#E?eZqc#9c#$8S50Y&3+T@I}Kh`h06BLHlH2e5PGH >zX_EoxfC8q2Ee_PVx^weiy=FU(^qz7_|JiBmcCw9h+RZ;gU+pg<KlOLDq_Oqs__9dv >zxKDSQ)OYu0pF*)u+;pdSQRWI=w_ajZ26Gf=re{0Y6M_!JQZf5gfuNI^#Cg`bXo3Aa >z_NjG|pk7y2(iNxIRkqITeh#mqNTk=xU;hVt>ezDFo^J$9=BhZry|L5YKm$1to&=<) >zM>+Zil7Xt^f!g-f5>_QB^0q9h>?xv!iQVmvlH~h>a`m{~{i;MUV)JOAc%`+uDf$8^ >zLnpbtn&H|23znpVEVIM~vPg})YW8VV<5@2KdJGfFpkpzZ^mvW}Hb=i4b2#~>DR<va >zarSfYQ3e*`AX=`7)UVQ~%oEcdILi)-nqIhomW(WOWS!u@^u$ACRV4E&)|^9+jMBiP >zsrb<WEW|Snbdj+t6X<g{4OZr8(sUv*_|rEdM>?MCwl8r!Tg8@1S4|^Gilf-E0j%#% >zwFM1Ok<AtCJC3ilCf8x<jk8@Xj2fhj{6X8(JIvBpf3?w9U2Q4ydQ_L%`ObOEQ_#6v >zh|YQSry?xS;I%Pc1^H<o7;w&FLBStNmN$Qq%7@`p49Tnt{F}WYjCyxbE#ZA?+7f;E >zR>z4My;JtAUXSw9<zMF77zKYBaXg2`zKky(ZKS4D&t^B4sxL<YHBjn1s!_Ab8SSb` >zWh8XsKm@B&-dn)U;`-|8K>|*vGHSDc|1t4g7q0<f)N{Y@a<iMSffg4xSSir7`-MX* >z8edRv$PUL7$zhd6J=1Jd2<==8xY{zhZl~NI7NzU9I;etXs}Y7FKKr*Yt2>=K%tj8T >zk=uE<BCI;Flkh)QtUIvvaHErebiy`Ip6e28VT%Am!1G~=Y@|O>3a2Mmh|=t6I?R3K >zo3G)Gdqo7sj+ss?(FdO9HFc`{?9mR>S}*jyx1;%-MO=Yl&T_lcJp6tL0~TY*vmyrO >z9OgnBs>)({nAj={a&(!XQ<lVu<uD6`^d;LgwbL#x1>d)?!rE8Wg{wI|k_ab&(LSk7 >zQMmS7C6Txt0J@Ir)`d7)7i<M;3J1@5tu3+p{|#;(49Zdz{;V_h0siTm9XdREnxb%_ >z_T`EHjI5orHb37Afd7B7(ekT#iewo};t&BW^3v#YAHaRMM*!|an|Pox+m9tgic4gR >zWn6ilp)n*J7<z`d(qU2w*5inQLKce<+Ou!SF#=;eU4K*x5F%;%Q8b#Ggm>lesD8;L >zsRh~+8(sfxvq9(HhIbosXD&^hV4QWm_9s`1+H@Lur(onMNc16Rv`E+;#)ZZ_(T>d{ >z%wA5PGD#ZWjL#!3{>^yq8vBClWRmcKc0xaCu9dM=g_bsS)fo@DFqca?@~nr)fM<gk >zD$uCZdw3y$J4V5uf719Or#DrXWb&2|H2l_eknqL5%I8&5Z#R~}iDbA}B@A#=)~kN* >zMG_ZcvBaecJRRsW8M@r4bnaod_@6Z%2Ne1N2n->wLegWaV*Wl7i^NfiaG+6sHp2)C >z$8Za$Y{KLi2j&%v8{JtI*TF3Uy0|9HJv3>l0v1apaAWcGkx5HN;^;y#_j|XvpOAcv >ze{<s7U;Jt>OH)-(JOfRd<qYd`t~k#W^KXYKcfDo-=x6kOsl2;n$h*J5WJy+|Zrs>) >z1_f9OBeC~V2r$0`knDwJ0i-H{B&|!fbhbeMQ$rtkFH<8_nSwc2J!b$SR%L>_2K1(Q >zn9@_sR1R9g79-wU*}#;ZNacv7qjo}xQ!p!&BZv7}-I7&)4tn-$Pt`OE^%#or2Q5Wf >zRS_5`auP?_BK5Js%4@*U6PS_^l1FZIOJZ%O8kf{P(p?mAjG8Z_0cH>;0{SXz6expP >zTkdSb+S-N#Zj+AfUi}xz0e5RtA?w1-U<0Z0=1>aUQ6hWphWc{9gVXJUF109nP7)A! >zgv-fIr+no+(qz(pxh6+<lCUb}`FCTK_%?(7Rz@VNWn@noXC;xeJTH!<^i9^Q>G8C$ >zJF3~%SIw{Li%+-v$!SmkR`GIg$_TK2yL#hZ{&EiqbiB9)0Mxayf_2!MZB~6VgITa? >zdDQc2njUk_V1-+mO=RpGXAEB0z-Jy8`#>qKD0<Vc&QML}C$e|?#B|2qY|YRPD*@kS >z6&LQ`Xwn<kaWt}Tqe)!rxM4d0G)4o5S4y^*thBeaP2<d-+`Kn_`|W(f!4n^Db$TaC >zqzfghBaHd`*xBCL%IH|5LlNG|B1#DnGTsQ;U5=?c%3dr1*peg2AApECb!iq(K)VOW >zTU%Ha$$(Y_W?gPxWM${KG&+=5%AR>C66eGLJdBR(n|!hS(D_^T__V_d{WQOh0P&4o >zD)&cmYQ46!fsLadbQuobT0g1T3s18s4AgwRAZL?a%RmqMD6u<Oj{^R3A<yTf7-(+) >zN(8X$@oo~pO$hn+sJW*HZJ#GfXZ)E2fB<lyiF7&w=off6x$?jpp2)+8A(tn2F93k5 >z-yXCVzO5{(*`@fa&LQ%GbyPBd#7qtS8>*%u9c&J*z7kdgzCE0iIw`l1Hq$z}HW>0a >z@j5!Y5K{&MQ;7rm#d25CPdg-MpSs0WqCNo6iMdcD-d9kaZu=6m1YjVymp+kQ%|nyP >z00}bPVSI@Q&|$;-RTjQ4tJ_keRzKzuk1Ds(0|x^6>-FYRxOdBJCZHbRm)n;_Unx-j >zzbQ~q!B<YxQx>?FrlquGwpd=|tvQ%QLjg;p_fvlm`)z70FN<^4jvRv*kb$}s2-u6@ >zq{Ca<`u0>8v38Vw23Tv3O9F1HZK5w!IT1hH1GQ|<D;AGTAp&(CM@bCHdXtN&KF_1+ >z-}3vAiK4sPV-vO3hsE1)EgOyBW7o@wS$tmbn{%Km-pa#5Ko=v}_0uwd7znG+f*fY) >zv1*u};43cp_X+$YkwMyM`<CK-nTSeSrZ!I=6U#wRn}`!o4pZ`$$~k;sd^6(6mDT&$ >z=D*PZ*&e~pD5VM6=u)xPR2KScV}Rk90D4&B7{m>^iw}@U?fZ>CU}wTQ!2+X{h+W0% >zj&vvh2u<!|XO4(20t5&%MI|mbh}C~fn;O4HqZBv7sG)}UP3*6PZ4x04ynqEpYF4UC >zZMwXBKRTBn%zZ~a0o2o`c~v7a?knnXpkN^&(KB|;RjQxzOsCjZ#C&}c4J;jj^v229 >z99*GKg#^O8B-3}MY^IL45sOzPQ*L3f_#}X-M}3}(32hFo$Aamm-GC{Uj4<T|^JG?< >zQSNfO&b2o&b+&pYB&)`9;U!AZsJ{41L-3(Xpj4o`P7`?o1PGO6=b@5VNMzo(FOVZ} >zadaVDr)^500*iB8?SUoN!KjOi9IcYp2q;sKVj1ka&at|2q9#|qT#b*+lD+@+F2L49 >z(cgtYPhc>ERY?;^kY*tVjIH%}BRiPw^3ThAI9%O@$a0{n#^BYrrA@)tEi^>{UhSB~ >z^5uA$q=gWGw7_wVen?T)&?50rJZ(!16-w2MQA?gnP2bF7pKG5#%7w(sTqAv`*ehfu >zySeM*zU-keWyUMO44DLe7HpQbZhX$%Y+twtXLjm}D2aC8`pI@<_HdbILTm*D48gs7 >zM}~hu6z<<7P}jmCIK5G=0@u(Z$idJ~@81!oC;Ff3K1IN%o;LY@d~sN$)0U7O`!ZN% >z)uW=0(j1qS@AJkBf7MXi#8BTe6T=A3pv9?w0`h*M;C;GXJ>+pDeECT4iH;6F$ffI; >zx97s~QhYr66n?n_;t%Y2==6HD_pE~gR1MLWFj(iInpk+k5N*j0-3A}rYghGQ)dI+J >z;E@o6-V{00piuew{|JJl=sc`oZkv$_`9A3LTkDQmcsyvk`N+~?)qJ|uBv|}iT+@@m >zChj~FFvCYV{4elo?bV<asyr139vW<N!M8L*m?G5$RwcNL(o{7e1T}=?81*o-_Wi0X >zmO)Y>ZCCDiptAS@r~x*Up8AF_${Zqs^9j|ySkm;;PPl>A#gXMWtI+c0UC3g9@o)!# >zBE&@7hOOSUb&h5=miST+*_%10p(NyVZUBor(K)e*hw#R_qDZg(KlQyhd?QR*>P^i4 >z40z>qREo}Sb~(^<m;y%fTssZpq<ITLmMmAuUNE2!tSaD!`F16PN!im-rapyAE1+gq >zYxBs*FE%ePF6EV!jBPmRr5sj35gd=KHvZNQR3jCYxQt2XtO_>b3EwDI+nmxdwA9oT >zhli0I_a|@PL*x+OxmVVzAHLzBlhSeQAY42&eO*G!%Dz;6wtz*$T=D$9V$%<19a!>* >z-X^_3?jpeNkrOcgb81_Vw6G+Iu2L2sW)%wJz-%7nK+cT<n=VGs8axzVT>{FovdCzu >zzM5&V5AHDuNV885!)|=P)sodsN!43?6etArvtV3Vl@SjoyeAe;=5uER<U;Cb9!gKJ >zl#?v2(Ur+TDzMPL8?$S}92(7EqScw#$m=eT3>->(mc)%NnPF+q#!}+ubV(<-h1qms >zFu~H5P@7(@+ZQEvr<4OTBU$`!x)`y{qLVk`_>R~4iMs3^D2&BMvmK#@tQ(Vza{%DU >z|Fy7V_`d*;F;GLQA<gJ-Bdn?{a8CZnhkG`3s_k{<xi&xxyiAM@a}+*S@^+=IysXXC >z-q4=xsZuV+qQ%&8WgmPNZ%<*T_cMfUx2dvG+Fnkmmbi(6!^i7qi-$PkV082HP#Q{z >zbY%)AW@sA!tP{cEt->~?oAC1f62K0QB<eF4J4x_Nyh9f9MrM4CVX<>S2IPBIig{^M >zwEJzgexIJQ#lh8E7MgGmgHp}foo!JpS9{Luh28D#ajS4I*WVw+=_tu^k{6$(<0D+s >zPr3+p(%s5{BnoEIIzF`>GlA#YyTYk2tmkg)N8LUQkR7%EB0FVrvXgwy?CxQJ?5s%P >znUHW+!4yYTR@O!1l`13eWa3jgDk8BK+Wx^3&>-?e|BqkP9cx(KA9q$p-GmQ3{*J$o >zW?#fg_@gP2YCRiX@29F><0oke+VFS&p4`*+d1yn^FZ%XpR$7$oqMGou#Re8!xdc<E >z!*|T1JdT2^?@QhR*V>SW)h+pE&N>uEvpukf;>;*5!PlTEB#OYdyCm6?9dB4N_#?n| >zssOHYEYd2=D=9P>ec)TWGsZJG&oTDmuZP2(i%wIq5EaqNy4UiS-sl&}>S1mZ#rQs# >zK9?`wLy0`&&QukN5C*m*4-RwB_d{Dj5&HJ|8c3h38aP$^pcO#cl`w3fE_diC7be1j >z&yQkZ>0-;fr7)$BD10o8X^haDY*^2d9Rs!}s}m$%fg@*sT-K$?`<t(LCyT>UJqyqU >z51V=W4`la9+H+V<{Gyde&;Evnob8zXKWwK%_aQ4gfRm6pp6wpE9r@q~dXw*Opp+SU >zRk9#*r9WUO`8pBSS`Nehs5fbXI1#@E8FzJeSX1zTyqqF}@n$23BQ9Mo8g5FG(9_IR >zko3&P`oK%6@gt}sG^*+(Rx;)<o>&@pJzE164=l<&u(*La6Yki~*jpfvhSc$7oZoC2 >z*w9{bCJ_H7+4NQ{y_Gxk`}i@Mlb~%zzVSFi&wVit(4M;;C(8AH2M@WGJ(~vDE!ril >z0%e1OwHGxsCfbu-5fH5z?xIY-x56txKxT=I!pE?6_I?RD;X>(ht6FkYSD3|UxzQFC >zq#uNus9aKpK=sZ&zzCer0ffX3$&Zi3l1AALJwx7O=j~55S^RnIYmNSQ%fHx8M5vtY >zRCY3oSiKkdS+SDhH;9W#NA#H2axNx0YEyq`Z%~Cd2K3f9SHbD8BDJvEtBuIlQ8m$v >zN4R_HZJY|&zMq=TSob2%k)Hee0b7qa_@seI*Rhv%;&xG~=4thrD)V9Ox*|U$8o)c9 >zPK)rt%T}br+n688S>N9mk3xr=*$qy?Vk*I^bD|49l`ntXk}ARo7sXEk(A1XK&kDkc >z4wBW=64)QBtNF07%|L|e3~bzx`$PnCSOt2p>g&KOc<Uaze0{PlhvHQ-X#aShoc-or >zbWnKftx@q0umncVUvN-3?CnwXpOLk5*5>D1GFgj_HC=p*gf&lC^Mo}|So6a*KV0*} >zwOp{43)XVMS}s`21#7wB|8_1IYe~0Te0<!u)cq@4@i35)*kh?`u5>$<y#Q{$-mIvk >zlkoX5YIHJumpoQNc3OYRb*!~?!OQ84K~2j#RKYf^8%6%xKkwZf+Bc?^`%_2%&Tr&V >zJ~|B0o!Olq?fx@zbHj$UbH2UGxHdm)vGMOnSkuLtZ+vso|HYmeIaa5xprAyNe=oqA >z_SduzWWY7wTl2mD^}e^}b!%StzuN0$`b8RhGWcgq1i-gsDV%k3JyrQrz>WU_Ki!Pd > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-path-change-using-svg-dom-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-path-change-using-svg-dom-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..bccb5c9200041e9a892bddc4011d0c6fa01a5610 >GIT binary patch >literal 18982 >zcmeI4cUV(d_wPZm%qVSCkPhOA4G;lAfkX!p9VwPk=|~fi8j;Y61p%eR9;8J?L8V3@ >zgqA2RDoqSRNJt_?h?FFRmXLZ+hI!wa_dfS`@BQOGzvuqJU+|oqv$OZwYkk*RpM9R( >zIpt(8|FinfGBPsqCypOIBO|j~S4L))%lfszl^p2J2;k4IYj!Tz{4NLh1xH4O${aK` >zJ+RNr^wL3pA4^L!-vg$W=05(GK9=VDef=y0O!nFKU3?CVzzVXpJ$1s?R`=A^@Jm4< >z0WvZ%vbX=}4c>HQv-m*R>(ATPy9Fz}jk&k&glp+#yZ!?rW#8b9WF55KJ%7^^17QcI >zSUYN8rhOmn+fB7&7Os<A*N&U<H~#&$o83-o=}zB5RYOj9m;?Id<h!1vIjRLaF&s*h >zk-z%IY~i}xcX|Ao=gL7L3BO$trpaVI|LKU?ujk0qPTSWWxfQt-&mhJr-f%zP8ZU@` >z8(p6B1)Z}lS#<cDea_JCDz+-*XV+g=rCHMocj2$Cr_qVC)9`~%u`%y!75CV*xo%51 >zY;M>CbHtqO{*`d})^W>63y?FQyutKGgIeo?!Y*}uP-=F*SKQdeD)lYQb6Qlm*PK6} >z<Wx-swdl2MP%8%?!(<jLWPAmW`i#67Z%eV!+-g40ySSxJ{WZ_LWwW=Eqrvk(AVWs- >zoa_qG`PtuZM%=Uf<nMDm((SnOphFn1A$3jSj=@cpqtWM2kHo?^1ycJdY&+7b%6$r2 >z8`U@F$R9tYWGCm7U3KbkinY3l+1smN{nE7>599YoZNJiZ&G#tkNc@3eo4V64DAwYg >z+aQl@Yu7&z9ue=Z{OCLuyVU7XMLf@aRGypDF#FA_ee7wyy7nO913l8wE8%fJ^x*~j >zCuOm5O*zx*;OPqplkuD8@V3Y*0msn$aTj7&#^!eVxw*-c$x&`57BplC%*tlesMn}= >zAhP^Uy2bfiM4;%(aRKX1)5Gy|OU_;k9ARL0o8RazlO52z481#ub|cOM;>pqtqZdQ* >z>+>I{?D`UVpTGU<#fv#j3&x&c_n78mu#F3+AE|YH`Qr{3*0S5*EWchMoDV1Cg{t4V >zcNxf?tBgaweR$dsdKSV~DhzlT7Fn@M71x(IgANNWO0pEnxmcH~l%Fw2>Nd%0LQ~_k >zf9%R8JbBW6@J#An<im!EPrhfmPLXZToEiLeFyN$0_0w~{6Hww)f>xMj;lbayZ6&`4 >zJmgn$l&eHlXO@=A&I~0vsSn&h@WbCViR|9Rq~DQ|(Um!I^vEAEvP{aFvhBf-*UiMu >zL_~WIQ*Nz^c6Ax{;mB-AH<mlGo>j5oeWGf#d=+NxY(#W4g2YaU{rZ|rNMsLNn2Hnv >zlOA^sv))X;VGHsnUx)(|KM+&iAHFUlyGm}ok}mMi4f*w&0jsB~e*V`5=_l7@W!qBz >zao4*JIk|h8r`?tR{g~{kRcWFB947Op^|~5G=xzTPMox+R_xH%I(%7VQ_`tDHyT86z >zI@Eey^gl+FJFr9ddPoN8?()q3{6y(+$m)MQ5aMuHW@u~e7G>$wmmk%=PF(ws2Z-6% >zW!{=x*|Y86Hyl1JgOdMqt;-KonaIle`}Lnc`mYfVU%xKntMT`UhcEiATJ@phRe9P! >zrZ3xe;O`NyuNVaIkQIZhc*wsZWF=(&ztIrQN3!3eaRSN=g`E@~x&RZ;Ar-wvlNSb^ >zdaZp*u*_hxM92Uu>WF7j2aU$rFo|I1rEy{qbN(`oi<5|I3EY4dW7tw>;u4S4D_*FC >zX(?DuSB(UM1w*9Rtg@fhHBiY5Q->?#W8DRTVy`g9W%WOW)siUpN$y^-=agIP9j9y0 >zN3L9GBt;ZyP%c|eo`xUF<75PChDF@c*oeT+zZ3{malH1{PH*w-$mSBu_L&EWCjZcK >zo!NV-8wZ<NQNUae`GoV)#-S1-9(2It`!-dzis<I4a*r+p5a-UwDpkz82)q>)GB(e! >zW*lri;dJ%Eh<Rmf_ooTLq1j@K<_XfwTvl|GA7=J(rM2eO4|=V!J&^??PwJY+B67*Y >zmoOA&n1%JiYiF%({(BW^;>EhuU~d7bwLC1UbR>}-Pn&5o06{Q6?2HdJO$Qj0_fO^0 >zgySRL;xTXjTR(Do)qZ&xuT>|-9yEJDk(AF)VCYeC{I8YTJ;3)YLM~uhwxn1Mk0`V< >z!(oDvOBRho5sTHxL`+Xqg=t~}87DPjxezeoSM*{pzj?T)&+O048FA|847-$4kFni! >z3oIwoE<7u?%P%W*T_i{RlXFZ95qe!9K+jo#MwQ_%4(>^PS=Zp+OP?-0v1jwd&M-cK >zN9AIp@k@)BQuG_j^7&|sDQZ{&9xUegZHNdCtS3`g2hjPGwFG*#bKIAQ15V)Qn@DP< >zsN3l#1GuoudcGmvvxZZW=|HfR_LK`=-Cc$_i!x3a*+7TD<A*sx&hext9A?*0Op0lq >zPZPt2T^}Hv^5QmNr_m3a0uq|;Feh%RHhm-ZC>R#kp8CR&e6R<--KuJwv{34uDP2%q >zMlQ~kYNT+j8Qv9T93E^xAAgX2Yj8Qmzq@aIYJB4dVE-$VI{ZBEHWBh!W_f~P2J0al >zT2r)8)H^kvSu`JLGv&(79{yB|#{?bKJOVG8)DeDLS902(#}0c^J6xR4hbC)8@z%kU >z=8Gz81i<S17?$&&ZBvUh14Ngio{_jTiHO#UlL&B%kSBYL<lW5M)ZT6#-TT2T4+sr* >zpgC0{<~kRp;Dlqwt=-{Cb0eAzOZ?|m-M$G;mdqe$tD2cZHA?1fu8)J#OfR9zO2DEC >z(O$e6NQ?#CO;bz<i~Z6&rTYcyY%(-?e!DQ~Sh2GQKm02c^2{1>p3<vi7*1OkN9iP! >z8rWl3-J1=TYm2KJ%4lc1C@dSd=&z+-QE<qdGX7u>B;};%<eBu-s8&tHwLI3fk}1UZ >zgt=VWG$9FaK?Qi?v|s8;kI`S!W4#yNT#)aL8>r^<PI}EgNaxI{Iw#FOOqE)`b;?`9 >z9~r2_F3bpMk|Z7n4zoVGuK{pwD-T|asy2w<2VaCIOrAxmlhksx(|qw3RD91=y4U=3 >zP~z9O<5PDB$+bbAw9!aZq_)*pE|%LY2)HB_npD8O;3lt)=gdkDc7M*|bGazGCPJ?L >zrR`J-=EV=A==#o?nN)C7FZZK!(p5@XI*0QV*i?|{3?^b}R27HGM)!o6wBA)^mc5&K >zh!pzA{IJy_2~_p`!&6@o5Wp@Z4N>QxzQQv=-1=I?NPB>*Nz=DA#@V1Rl4Bou?Z!!c >z#&fyOF|8WZ&&F%=;O<<061R~SG5ZjiF!nu)+zwr!W-_4U4zUMUx>b4#>#ctrQJnN) >z`5Rab%>af-2tbzH@1%8NwzGCv)SsYb6##yq7zmns8h<eli|5o+<`doExWBw~tz4Gy >z;l6dnYdR4Zy9cjg=kmittc3JNnuuj$^g77CK^5_>Mr#PgjDQ>1Oq>wdlTI^G6mAtS >z#v{%Y_vn&IVRPEa$k8u3TLIa@WnKVu0}qIcMWPtpYL3<_M^ScCO7IQtvG}@XW+>gA >z#vedYyg%ceCEW<~%v^EUU@?=gg2Z(N7@4BA=CQA!FJMi?cB2DmL13{R-0*rxy|tlH >zXyb@{I3}CQLTq)8{dCrd>OGe;sOf%cg55gSUjkYnvT9u%yp#HRbTgO^{lpeGoQEMl >zw%9a3C<DawM>myCh&FihT2PeKKH9N(K(`_tAEJeso#idoM&0QLz<|4GyUVDPn^pb# >z6V(g2O^k&l-}<Q(x{id`tTQ)Z=#nXwYQflf0uQsdiekIJ*;AM}Zi*ZlR7Ql@*|=q^ >zvEv3Cvs4>C-&UC`i$gVehFoA%;#f7I)0I*9fIwzQKar)X4yf{A7Kh>z^^u<7?k@Hc >z|F8$E_d?Ot3v5;{b-tJ*wGXjnmdGlZ2x(*rb_dh{>TFi)OVuQ-+HJTdseO+Z%KJ>@ >zQm1zkWbUeFrVTr`*UF5A{Qz|oe};Obs{FziV0>b7&{y&aznVjeAYG~m|7H<0T*oQu >z%~^TCYn)RR6TYn$`Jq_Qa>>lQb)YJml1|{ZC#gZMo%HA{ga)jg6==RtaX}xC>cS+C >zqk+v+vN&Cr--6A-$X&)#{d5FGcWN*Bm%wW+0fz*e5ni5j^}+1kx3f{h{aS&_EzP&D >z7cyTc8s1yTt*$e5udh0=pQNLxlctwdhIjl1Nlu_BA@<j55xoX2BY$yrziY79(KaK! >z@ODN}zc$Rztv?c!>^bZpe%hOG34)&5QW;~18%hMxgi-yvM&^e)OtShU-6iGmHkHm@ >z)fH5$&|7n3>~6I392*|xEgV&42ksd?CX}i~Yc*0d{TN~0L#`7xXRJHX<_hOk9Fs`% >ziz37pme+mP$089~i4R_G_P)K_pjjj9kJaD8UE9UhNDCs&LwCFYFYJP5la(h6wbrnl >z``s?&Ohlq=bq34uJpsb>P8@ZiB6{H@s<;=O8<GnBUI$Mvff_0j-af&z`-_(t<B92= >z9=`TQ(72MqeAx+OzmnKGTMv*5_k;u2w2eW|ByVVp>a=?QlT%gpW~(BTHa|GGBZTw5 >z)%$28or8g>^+X~C!{V5+nXGt|0eQ~$()eMzwr%pQ8Mys^d)*NGZh?Kz)hE^SIOQ|v >z<&__d&K8{G{?tBpS-Fj*mL={3a)U%es$Au64mzsN<9Bt{o!?zi{Cz9QHLZ5eY18;Z >zCS;B~7su|146n;vYFG@QC=d9$4|gj~6;#5OL>!>_&@;lP1BRkGYIL1k?lq?y-xUh5 >zY5bFE_F3qY=_w`FW4mlUaM~6+;nCNukNTEahJC<(d0bJWvh(KQ>Ew1B1CAweDN9IF >z)B=s9)$C$5r$OzAcb_TQY97ggb~GzBY5_9LE*FMoEIExjb!O-fqUc*Ciya}cv5<M| >zFc6Zzi9k=8kt`u46YsZa!y74|jlNECVQn_M!ecw#`T7whsawhf<=K|DzXYBpz4VIT >zdx$?*DdAU&)+Y>a*bFzMX4;2r5Cju58Di=IXf;dpm9}&>YkHxVJZk<|KYi}oGn>_K >zANz<JEq~Uw%H#AGVI0Qhkdg%0o4y8T2di9;#&$@D-=S?9bNKsnmcjev6_aLe34V3p >zJdJ6#cIb4|#*q&=BH`6rIJP%9@md6>#B_ZL<Y1SXgL6#|wNju_xYx+`ZuNTmYrOZ0 >zN&AF=YHE@Et_aR{LHFlY8W`E7(<akSHjLJtD272IBj-(%qW!~DJ{|;ZvX#3Bl{hIX >zm+l>vl~LBd;CVn53D51LzpaS5@<&amh3#I8q*olE{GA}d9hsh1ts|QjFKOgGLDi8v >zZn$v!Q$$PAzz!m(YWFVt`o+K-4`jDP)#<0-aE?AdXRFD~gb|dSZ{!rnZK3<RHNoF0 >zao4sf1a9Pff5W?vS?XH^jm$_!Hy+E|lBQR265e@jv>=&xn?>w{5nHv<m=J>&2alFb >zR$@3%=kd>?#}P-m5w*e%G$7YDVrz3h3T%u~55e-B{x`&>JXT?v={Amj#E9z1H))_g >z5$O9SXo}!^Mp}2P4InDM>Z2Dv(|^p>n1VBrl6>c2T<(`%m$tL-M*Hf>PrDJymGr(w >z<;_o0f7lAsWxi;ys>-$wRV2JTZ=yG;iSTWI`fBOr8D+~No!*!ZQxzm!^)!ulqy;D! >z#G;8H_Z`~e9W1-FYW>qRjI+<zeP7M28MbnWm`Rt$_i>;&PF!pwv4Yyj8O{y$gH>2v >z*(d2SJY*SfLL2a%7sjix{rJ|p9rHnC(rfmJCRpiUqPJh{+P}<dyDHS6v0n+StLpqU >zD8a9B@M4CJt`KNGnt%9NN0oRM(U6b&p*%eF#MiCh@d4-y!NaGd9xhS)JsGS6&Q_hP >z$^RhMPhmpd_%(Lmz^EY9yP<TbZLGwk3F^lsLSNt)e^5~rk70bR*04!ZnNbQ4)e`gI >z59`OfQlNx+B1=|{e41=Bpwl}0mj9tuk`Ai4LU2k<hug#GyG{eOFP%@QBNaK|7q<?# >zkJ9D}xEW09W3m4m0Z?#@?p$Pw)2QQ@-L1`chtPL9g&Kr~;C=?7J4+gT1Y2fMls%?s >z`z>5f`t2UC8vC&<L(O@EQ#L?b1f<Wcq7y!Zy;EJq69n4ghfyz@%KAE?On^f;;zJbj >za-c)_kt+!dE7}mUXA7MaaK^8HXTiW0Q4sDKC<(ayRHd1xK_@vbB*rzC_$Rzut^Ju1 >z9%uk0)Ocl4nt^+{I?4Dwx5UEEomBZ2UWaKn<l|y)UI;PZB$uOaVJC~+(dkfHCz^b9 >z@5OK%KWaWYbLl|6@l;l5v5iW6h~lNK?ilzvw#nY`VCKkA?pOq8bG=F$|Lh=1q%CUf >zXHh0-b+4i}k{4{Sk<5^ut>pVRmXQFl?42H}0j=-vqOWA{LN6Z03>z51@6a|4g{2jZ >zLmu+X+D?-&2wj$ZTJ@SnwI>MkL}*=T4#+~3`2fZY_MQ^CMJ0nsn)VOq$3`s4$|7o5 >zS}Z*+Y2M1{V7g#8RDE>++ick5kJxNx4OM@?4QZ3bN4)EUC|n<^Y1pzw+t!+L1*SNK >zPLG-z%49eJ;q1X}SY&tdn0#%7;xR}0zlym_Yvk^A$GK}PYZ*|6-?-)W?7NNbx+uG- >zf`8GC>xX@1Ww%2hW|@CqF_)En;bymx`uCNUdsgi8XX$zP|Cw*xxV8VfkQI&7zzQhr >zit@2ufaZ*p0yKv-@zh|tzb-LUfCO5Vkye1_klKYJHcSVgE5_yd+Dw6%i^D<rV0tnR >zfH<u_sagkw(!Tyo4(wSl*0V%mz5!8J2ODRPL$iwi<moqVop|OTQ$J8!VV?KnsDXL~ >zw6;{<qM<J{rAT|>RjV416h_usVBSYeob+zM!8qyO)=fZ%tm6c^dv>F7?8lP>150{} >zu^%ERQ(n=``La!m#o>Z4i_-qI)z0YZ{Slztr+#Wr7~O>2Y7}u}!^Y?)y4D3J7yxEW >z^S*C4Q1b#hl(IZ*?tOL)-YR7e05)3nQZ@JI0f<K}3@BF=>gu~gQvikmZ9R+R_v`)k >z-mK~0%q6xm;`W}6(U?}P6f(ebTD!xb)g!=y1rhmE9wohpknCBYm7D>L8SmEi3HN`2 >zd?dF3t}p_$8~lhz06K_~_AVv2+aXzzdDP-{Hb0KEN-JUzNPLW}U^D-DL~5WXV`XuX >zfPH~B0<*fAb&gC1Pen)WpF=Fm#N}0f_eXYLsQ<*v3{UXu%k|Tq%l0Gdc{agXHWlnc >z=VQfKW=0k~rcGak@Wi`De~5koKni1hR#*uEDK?W9dlU$^`RPcSQ80k=x*O_p89@Ik >zB(54Jxw4>jjhUeaFy=gO`eDKRi&{doX(4kSj{2z=!5!*Nf?5xtvdq!>Jj3+3@A^7J >z43U)11PChuI>YGz7=iDwnfC_EbV#WeKzzKnO0!-TKzs;jhp@nb4%57mjdW?>WJquQ >zmBa^_SD=X)z(O86T%an8FfsCK6J*0ERZXFqKXQ7>s0o1Ygxk+I{*&+Q`6u6b^FQ+) >z{r})Qzc2G02)t+}lmStXN|vxLxpsz<UWeObPN%~5WqrrHrjCsO?WVoX7JC-`xTL`c >zhBoerY2O##y97i^lFBF$5HREcQ8ZxPDqLQ#hQ6E2M4-bHhO}|mmr0_t0RV{@8MnYK >zMF6|%cln4<=RBccvBq{oo$UrY+q{=gQzXJ($uu(o@cBcTlYw`$0B=@=TnYmT*%EO$ >zxOBgcMYC6J=(IB-$fi`Rtv2OFr4A%oT&NwiTrO>NOWyHq+Vhy6<Ts^W3vYr;+LJNE >zV`mTz{k{c6pRCS<PSFj7g_AMZrS9;>Ah2*mF%=J5M792E1i91RR2lcRG(`%$5{174 >zA=b`YN;d#6eQedB@j6C;@<<dh<xY#^0qX<{d3dn)wymCvZxLEXzy>Pnh<?}$>_GtJ >zlxJo*Djr1@X|nzBOLoR_r;*qzu5(fCQ%q7#ML4G(a|sO1VFTEc+u6ke*oh)cNZ0W@ >z<2@ea6q!?~^_9(*LdM0Dk61t{!sV8V1%Tk}8y+)?R?`MBvZ4u1I;nHjp=zqg`rbqq >z!T9zDgmDrlJ$+)TOT~10X4|lorExoFpxL#~SOAn*<O#nU&~jZ>=Z-c5RHwJR*}>ST >z^X|wR<CyoOrhk%`ZibION!@AzGI7DG`ZFVwB!vePdRI6jL+MfE4yZXTa{@}n{~PN3 >z+%^`dOmu?2eJBt31U}G)GB-9GZE6(X_|Y-!OWjKbSh8fh)qZClwiA^M0G(cQb=&2( >zOjGHGK3A^mhPz<)SC=_+Db3X&D@ceH93A?Dr)a`kj6XxVKxr8%4J?s<=sHLU*JdwB >z8!=F$QLf5n7>|C*#UvY~-~ePm{|ZDD2k<FJB#s#ZL}W0qcG!><=^Xhd(gFV$NGJar >zfONM1?~qRAe}#0qmywRre}Qx`!@D=q&oo|cEdqQ4wI&BeA)6f2V%RovpZAh~3uMDK >ztfPAZREF~#KxGopketff?S^zl_@8tqpn2xDaUPsH%Lg1SiOopxFEb^PS)o6Qkh70U >zG5~2x6ktA9t@*+!R80IK^owuuq8>n(E`>QplR%4u4fHb@=-S{A?#9f@L}oCamsHj; >z4QQDm%mOxFq>~wFMIHjsp<{R)fma@$2;4ZI!PG{Ep~+abY^dCFeHL+8?o*!ZQ0Srb >z+=0rN_B{%aj}F5T);9IKvf8AR%#8QrZzJ2RvL*LvxgGz(rmr0jBE5-nLh#y7Gqa72 >zKE?^iG*I5;A0?9(>acICb$;liN7cnErmO?a+z_SkEH|N+8`8760}F;E=}KPdm}doa >zytI<CxKv<MyKTvO)1`M#J{X_MJefSsW`y1`Jv6dEKk@F#$_hwka95z~(xEU?R<+y+ >z^|#i~K!t3P!1hO9^$GRQv%73n)C_b7QE3JS?Su#C<@*?zGR9WC<uOU!m4f_^_Cvmx >z_57G+CZP?egq&SrP<YX8*_eO53vjZ(xLOzRO{>&Yn`s~04Wa4P-jIP^VOg{wmx_-K >zIqZ&W;b{2fL9q)LV4|EP^fqmU2+@=`ECx7wXr6tGuWtq7L3@XCpv|a2T_j~%;5OT} >zqZ?f|Hcki<Y`iutpMkGC|LvK)?p*#WpgcFSd76@az%e}VH~v|qZ)&}ki4IBmoA_vX >z5OoYkVECqjDlWkDDLhpKta-|lJ&EvjL<U(96_~HW0c^r_(=HA$gwtL-&h>T+R1lap >zCy(i5XIrb)U%Wd4z>Qj@K0bESL5jCBGTh>l@$`UUcoNKRI;}$qZbQ|mKG&IH;7p-w >zbGLeN?q0ao8`E}Gt_doa03V`%bX6Am8sKcQFJ876a<c<VlmicTy7Kob#{o3Qn*Iej >zCP;GvDh;mI_w{O0gvfvC&2;d@dF*XDUSri!SHv$>X$%-{>M-#UCwa|LvRTYU6YoK6 >znN>?z2)t3vmom3tj000SS#_Aa(Eo%uxd6mj<lLeYIG8@m-zi2<)kaARnEIH;B3j`u >zxSy2m8!NB9+*59MS69jEBBb|(H3*8;$1U2XI$LfFy&G@*+*297ZD*U3J-jF%0&WRQ >zl`8KZn7|i%3q#mXe-$-t)`4p_AqT}06cUI1W`RSi08Sbu3b{c*Q6RK#+_tYweRSiA >zyvGLz>w9YP-(&V(OU|^Mo4>x!`k6Cs!ZG|%n`n!P5lfYXYz=eZau-p#QS4rjbLXMA >zgW%d$@4s5^(sxJV*ZS{i<wrvvSwVNwUmt_q`6Lxdy{wCs8pZi+p8Nw#x(UTY6Tmhc >zDYoGVlpsHyP1xaOybS8ljsymMErnP3j@O(Ol!k48dK0txlKN=Mc(dBJN9_T}AS#SB >z1uy_@Ql#Zpt5n>@o2&D?7BAU6bf1qZ(fjS9aNnqK;*TlNrn&aaG3CP~k&WmV<hk>l >z>(^aaZ#pN%Oq#eHc_bLl@k}OIZurW&HGwE>A3Gjz>X0}bL~R~YC<&NmE<$t%Y-)XA >zVu~Y;%ZM{fU#_-@UeEkx?&P<`{4ps_Mvt4}`pukh_0e6Y2oIn6dN`zWmA8(1-6R%f >z=oNTu8RR$zD)K)J!60k(dwy<H8hn8du;jczLg}%JCXi;yHCLzPr!iXpiE6eWk&6Ed >zRKv;8iOA6FNo!MlciTJp7Lcc>+*u`Q9LP0r3g*$So`SXo0YQoTrR_e02^BL4BzEz9 >z$%%F;s6msTI!<Maofh)FuWX4*KZzRc`T``{`k(=?TQQrMNJR+lxOH=I!*tMFF9j77 >zZ{a&%xtCkF-8%+G!1nH&)BzulkqBrwuxBW?B1Q|*+wPjhE9_i)839q*p0pXFEr$SG >zHG3~Bvjg{%fQX#RYUsvApOuWm7-aVhB+P=I=ztvDUF=LAbV`Khpi__S#a5%NSO10k >zWN)A!dR|G>NlQ1FG;2Ung7<YODv9}nIInq=0t_MSi8gu6#E(3pL;m%gA9+H9oOKPh >z|EzW4E1R2jFi_Grqwye%hD9Bd1mL`8AKJcW(cplgie-FX*iIdC-w4X{ci>QC0%g+> >z9b#d{g@mTYBmn)yAR|j>Plf?tqC8*A>8jQasNx4=7SX8SUQJUOh(02*)45O^RDx~C >z7vcK2Jmsbs{`vTf38MC`Mi*f`b*=zKY5an8*y4QouEEV(!7l!$(v}?s`?sJuHLuXC >zEzsT~VAf|TRiafQBI~glx#+Hd*Zy0e@#s&^hTrE6&i@5#H2wi=plWAfr1Lc|Jv+X3 >z(<j{fuxL}<*g6TxxRPt|YkL#(0s-$nJgOq{wtl~7@)zf_D^{)a1gwiwqbpW&+^6v) >zHn*)QG%)(gZ{GHe6WB`j1kg<ojb2Yqg$JIM9*8JIeZV@;izN%*5_6r}#f1d&WjK-o >zjnBG0T^`icNLWPS2DHeI@n(xe?Vf$;>pG=WKNl*Mw0bi-!GeC`s-e<?L1nGLhR=OX >zK@xD0sKmA^PZ~X5l{UD@o3a`BcTW8#r*OxvPRq1a{f1?Ox^whh1Lt<-DW1)JW{Tx* >zZTtEXy{yk2&8r}lwt0rc?keD9sJbzfFke3r{>VBEnw8XkHu*{F<w#AttlVUJ2wr$x >zG~2`hjc1y!>tkcS?`5?TgVH)b_=?Z%5cr}Aaf)s8m&1pT>I8Z&j$7D`?o71KzF5y@ >z-tV@ex|`L)C}<N$Z*ijrAs-E2UC$bWvf*3+FB$1&G^qV`u+t5^YnEG$-mxrX(i(1E >z^Wl&2hZXp5R{i}N*S$Xu%balA+Wq&NV5d$WmU-=RF7fXxEBCC}XIa)(d}AdpmOWub >z6IL`~MH5!^a77PS^l&8?tmJ}~T(FW0R&v2gE?CJ0E4g4L7p&xhm0Ylr3s!Q$N-p?s >z&jnE(2lHiQ))q^D7eIGKhgWoXMTb{(ctwZ*+jV$Fd;gDT=-(u=mO)BueDy6}0zdpD >ObHdK)XvJ?AZ~hN{COxzO > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-path-change-using-svg-dom-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-path-change-using-svg-dom-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..8be2ea654381b77a13d367b466ee03a7dc8e363a >GIT binary patch >literal 19283 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-path-change2-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-path-change2-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..5804b17e1b2eb77671453de674aae2a685749fdd >GIT binary patch >literal 18897 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-path-change2-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-path-change2-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..e6559d933f47fed903f4c426dddb2b17bbadecee >GIT binary patch >literal 19273 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 >F{{l>7%DVsn > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-remove-path-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-remove-path-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..d97a101024c3dbdc6d5cee3887142cb0bc0c3b48 >GIT binary patch >literal 12379 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-remove-path-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-remove-path-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..52b3e1f3fb727240ae68964be6d7b460ed58a926 >GIT binary patch >literal 12383 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-startoffset-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-startoffset-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..d97a101024c3dbdc6d5cee3887142cb0bc0c3b48 >GIT binary patch >literal 12379 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/mac/svg/custom/textPath-startoffset-pattern-expected.png b/LayoutTests/platform/mac/svg/custom/textPath-startoffset-pattern-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..006515d33b7fcccaae2a0af37d48bbb14cf101d0 >GIT binary patch >literal 12750 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 >YJ3ee6WLoFT{-6PJbM|n0y4x@PKj7Oxn*aa+ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/svg/custom/textPath-change-id-expected.txt b/LayoutTests/svg/custom/textPath-change-id-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..7ef22e9a431ad0272713b71fdc8794016c8ef12f >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-id-expected.txt >@@ -0,0 +1 @@ >+PASS >diff --git a/LayoutTests/svg/custom/textPath-change-id-pattern-expected.txt b/LayoutTests/svg/custom/textPath-change-id-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..69cfc5a98db74fbe32ac9b678a6134af9736dd59 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-id-pattern-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+ >diff --git a/LayoutTests/svg/custom/textPath-change-id-pattern.svg b/LayoutTests/svg/custom/textPath-change-id-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..67c22a39108db12106fc052cd09ac8c71f2c08ad >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-id-pattern.svg >@@ -0,0 +1,21 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="bar" d="M150 50 L 450 50" /> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="400" height="400"> >+ <text> >+ <textPath id="theTP" xlink:href="#foo">PASS</textPath> >+ </text> >+ </pattern> >+ <rect width="400" height="400" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("bar"); >+ path.setAttribute("id","foo"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-id.svg b/LayoutTests/svg/custom/textPath-change-id.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..2dce98fc0a253792f41c8b59d61eab82b04d5693 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-id.svg >@@ -0,0 +1,18 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="bar" d="M150 50 L 450 50" /> >+ <text> >+ <textPath id="theTP" xlink:href="#foo">PASS</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("bar"); >+ path.setAttribute("id","foo"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-id2-expected.txt b/LayoutTests/svg/custom/textPath-change-id2-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..35b54f4de20b10e10b3cb27e6801c0cdbfeff14c >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-id2-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+FAIL >diff --git a/LayoutTests/svg/custom/textPath-change-id2-pattern-expected.txt b/LayoutTests/svg/custom/textPath-change-id2-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..11365c8112b8f1c90c187e2d04123a3da3baf10a >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-id2-pattern-expected.txt >@@ -0,0 +1,3 @@ >+PASS >+FAIL >+ >diff --git a/LayoutTests/svg/custom/textPath-change-id2-pattern.svg b/LayoutTests/svg/custom/textPath-change-id2-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..b32d851495ceb2d75cfa44d559c26c13e96acaff >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-id2-pattern.svg >@@ -0,0 +1,22 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="foo" d="M150 50 L 450 50" /> >+ <text x="50" y="50">PASS</text> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="400" height="400"> >+ <text> >+ <textPath id="theTP" xlink:href="#foo">FAIL</textPath> >+ </text> >+ </pattern> >+ <rect width="400" height="400" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("foo"); >+ path.setAttribute("id", "bar"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-id2.svg b/LayoutTests/svg/custom/textPath-change-id2.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..71cbd39b32d08d6ae53befbdf13010c39bee9984 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-id2.svg >@@ -0,0 +1,19 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <text x="50" y="50">PASS</text> >+ <path id="foo" d="M150 50 L 450 50" /> >+ <text> >+ <textPath id="theTP" xlink:href="#foo">FAIL</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("foo"); >+ path.setAttribute("id", "bar"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-reference-expected.txt b/LayoutTests/svg/custom/textPath-change-reference-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..7ef22e9a431ad0272713b71fdc8794016c8ef12f >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference-expected.txt >@@ -0,0 +1 @@ >+PASS >diff --git a/LayoutTests/svg/custom/textPath-change-reference-pattern-expected.txt b/LayoutTests/svg/custom/textPath-change-reference-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..69cfc5a98db74fbe32ac9b678a6134af9736dd59 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference-pattern-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+ >diff --git a/LayoutTests/svg/custom/textPath-change-reference-pattern.svg b/LayoutTests/svg/custom/textPath-change-reference-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..ee44b82a1fbd0c38f22ac7ab768948e38b91f5d3 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference-pattern.svg >@@ -0,0 +1,22 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 150 50" /> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="100" height="100"> >+ <text> >+ <textPath id="theTP" xlink:href="#wrongPath">PASS</textPath> >+ </text> >+ </pattern> >+ <rect width="200" height="200" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ var tp = document.getElementById("theTP"); >+ tp.setAttributeNS("http://www.w3.org/1999/xlink","href","#thePath"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-reference-using-baseval-expected.txt b/LayoutTests/svg/custom/textPath-change-reference-using-baseval-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..7ef22e9a431ad0272713b71fdc8794016c8ef12f >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference-using-baseval-expected.txt >@@ -0,0 +1 @@ >+PASS >diff --git a/LayoutTests/svg/custom/textPath-change-reference-using-baseval-pattern-expected.txt b/LayoutTests/svg/custom/textPath-change-reference-using-baseval-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..69cfc5a98db74fbe32ac9b678a6134af9736dd59 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference-using-baseval-pattern-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+ >diff --git a/LayoutTests/svg/custom/textPath-change-reference-using-baseval-pattern.svg b/LayoutTests/svg/custom/textPath-change-reference-using-baseval-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..5f18da26627e18ba9b6822236374c48814df109d >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference-using-baseval-pattern.svg >@@ -0,0 +1,23 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 150 50" /> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="100" height="100"> >+ <text> >+ <textPath id="theTP" xlink:href="#wrongPath">PASS</textPath> >+ </text> >+ </pattern> >+ <rect width="200" height="200" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ var tp = document.getElementById("theTP"); >+ tp.href.baseVal = "#thePath"; >+ tp.setAttributeNS("http://www.w3.org/1999/xlink","href","#thePath"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-reference-using-baseval.svg b/LayoutTests/svg/custom/textPath-change-reference-using-baseval.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..68ea2f0f34b1642d2675e3fe7a7d6ccd1c7779d1 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference-using-baseval.svg >@@ -0,0 +1,19 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M150 50 L 450 50" /> >+ <text> >+ <textPath id="theTP" xlink:href="#wrongPath">PASS</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ var tp = document.getElementById("theTP"); >+ tp.href.baseVal = "#thePath"; >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-reference.svg b/LayoutTests/svg/custom/textPath-change-reference.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..7cff6bb2eb9d3317ee4090ea03c3c4b7629603ac >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference.svg >@@ -0,0 +1,19 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M150 50 L 450 50" /> >+ <text> >+ <textPath id="theTP" xlink:href="#wrongPath">PASS</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ var tp = document.getElementById("theTP"); >+ tp.setAttributeNS("http://www.w3.org/1999/xlink","href","#thePath"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-reference2-expected.txt b/LayoutTests/svg/custom/textPath-change-reference2-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..35b54f4de20b10e10b3cb27e6801c0cdbfeff14c >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference2-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+FAIL >diff --git a/LayoutTests/svg/custom/textPath-change-reference2-pattern-expected.txt b/LayoutTests/svg/custom/textPath-change-reference2-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..11365c8112b8f1c90c187e2d04123a3da3baf10a >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference2-pattern-expected.txt >@@ -0,0 +1,3 @@ >+PASS >+FAIL >+ >diff --git a/LayoutTests/svg/custom/textPath-change-reference2-pattern.svg b/LayoutTests/svg/custom/textPath-change-reference2-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..7068865e1f07035d1795dabd1b728829260f33b4 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference2-pattern.svg >@@ -0,0 +1,23 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 150 50" /> >+ <text x="50" y="50">PASS</text> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="100" height="100"> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">FAIL</textPath> >+ </text> >+ </pattern> >+ <rect width="200" height="200" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ var tp = document.getElementById("theTP"); >+ tp.setAttributeNS("http://www.w3.org/1999/xlink","href","#wrongPath"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-reference2-using-baseval-expected.txt b/LayoutTests/svg/custom/textPath-change-reference2-using-baseval-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..35b54f4de20b10e10b3cb27e6801c0cdbfeff14c >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference2-using-baseval-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+FAIL >diff --git a/LayoutTests/svg/custom/textPath-change-reference2-using-baseval-pattern-expected.txt b/LayoutTests/svg/custom/textPath-change-reference2-using-baseval-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..11365c8112b8f1c90c187e2d04123a3da3baf10a >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference2-using-baseval-pattern-expected.txt >@@ -0,0 +1,3 @@ >+PASS >+FAIL >+ >diff --git a/LayoutTests/svg/custom/textPath-change-reference2-using-baseval-pattern.svg b/LayoutTests/svg/custom/textPath-change-reference2-using-baseval-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..ccb33cbb1eebaaa938a691e3f421a2d3f6fdfaab >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference2-using-baseval-pattern.svg >@@ -0,0 +1,23 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 150 50" /> >+ <text x="50" y="50">PASS</text> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="100" height="100"> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">FAIL</textPath> >+ </text> >+ </pattern> >+ <rect width="200" height="200" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ var tp = document.getElementById("theTP"); >+ tp.href.baseVal = "#wrongPath"; >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-reference2-using-baseval.svg b/LayoutTests/svg/custom/textPath-change-reference2-using-baseval.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..91a51952568b17e4c43bd9cccb652cf7f2fc2f22 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference2-using-baseval.svg >@@ -0,0 +1,20 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M150 50 L 450 50" /> >+ <text x="50" y="50">PASS</text> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">FAIL</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ var tp = document.getElementById("theTP"); >+ tp.href.baseVal = "#wrongPath"; >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-change-reference2.svg b/LayoutTests/svg/custom/textPath-change-reference2.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..a3f979ca14335ed736020d4abad0f28e7510962e >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-change-reference2.svg >@@ -0,0 +1,20 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M150 50 L 450 50" /> >+ <text x="50" y="50">PASS</text> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">FAIL</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ var tp = document.getElementById("theTP"); >+ tp.setAttributeNS("http://www.w3.org/1999/xlink","href","#wrongPath"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-insert-path-expected.txt b/LayoutTests/svg/custom/textPath-insert-path-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..69cfc5a98db74fbe32ac9b678a6134af9736dd59 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-insert-path-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+ >diff --git a/LayoutTests/svg/custom/textPath-insert-path-pattern-expected.txt b/LayoutTests/svg/custom/textPath-insert-path-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..69cfc5a98db74fbe32ac9b678a6134af9736dd59 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-insert-path-pattern-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+ >diff --git a/LayoutTests/svg/custom/textPath-insert-path-pattern.svg b/LayoutTests/svg/custom/textPath-insert-path-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..b450056577d4051480cd3ec0f1576ce30d6693f5 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-insert-path-pattern.svg >@@ -0,0 +1,22 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="400" height="400"> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">PASS</textPath> >+ </text> >+ </pattern> >+ <rect width="400" height="400" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ path.setAttribute("id", "thePath"); >+ path.setAttribute("d", "M150 50 L 450 50"); >+ document.rootElement.appendChild(path); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-insert-path.svg b/LayoutTests/svg/custom/textPath-insert-path.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..6492b8d996fd87bff5e5c3994cd3e8b7f4e2cbd9 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-insert-path.svg >@@ -0,0 +1,19 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">PASS</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); >+ path.setAttribute("id", "thePath"); >+ path.setAttribute("d", "M50 50 L 450 50"); >+ document.rootElement.appendChild(path); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-modify-child-expected.txt b/LayoutTests/svg/custom/textPath-modify-child-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..7ef22e9a431ad0272713b71fdc8794016c8ef12f >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-modify-child-expected.txt >@@ -0,0 +1 @@ >+PASS >diff --git a/LayoutTests/svg/custom/textPath-modify-child-pattern-expected.txt b/LayoutTests/svg/custom/textPath-modify-child-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..69cfc5a98db74fbe32ac9b678a6134af9736dd59 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-modify-child-pattern-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+ >diff --git a/LayoutTests/svg/custom/textPath-modify-child-pattern.svg b/LayoutTests/svg/custom/textPath-modify-child-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..f89af22512bd1fe07c1235f92d7871a353358797 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-modify-child-pattern.svg >@@ -0,0 +1,17 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 450 50" /> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="400" height="400"> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">FAIL</textPath> >+ </text> >+ </pattern> >+ <rect width="400" height="400" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ function runTest() { >+ if (window.layoutTestController) >+ layoutTestController.dumpAsText(); >+ var tp = document.getElementById("theTP"); >+ tp.firstChild.textContent = "PASS"; >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-modify-child.svg b/LayoutTests/svg/custom/textPath-modify-child.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..5bab7a6328a7280f4f5504e83dea91efc5b28358 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-modify-child.svg >@@ -0,0 +1,14 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 450 50" /> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">FAIL</textPath> >+ </text> >+ <script><![CDATA[ >+ function runTest() { >+ if (window.layoutTestController) >+ layoutTestController.dumpAsText(); >+ var tp = document.getElementById("theTP"); >+ tp.firstChild.textContent = "PASS"; >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-path-change-expected.txt b/LayoutTests/svg/custom/textPath-path-change-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..62ec1e518d775be699e628158abf221a025973e6 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change-expected.txt >@@ -0,0 +1,2 @@ >+This text should be ABOVE the other line. >+This text should be BELOW the other line. >diff --git a/LayoutTests/svg/custom/textPath-path-change-pattern-expected.txt b/LayoutTests/svg/custom/textPath-path-change-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..0d9590735ca55ae7d16a06b811c11ef2a6b2b7cc >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change-pattern-expected.txt >@@ -0,0 +1,3 @@ >+This text should be ABOVE the other line. >+This text should be BELOW the other line. >+ >diff --git a/LayoutTests/svg/custom/textPath-path-change-pattern.svg b/LayoutTests/svg/custom/textPath-path-change-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..c5696f6424ed0e52a64918ed1a323778374a39e0 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change-pattern.svg >@@ -0,0 +1,22 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 0 L 150 50" /> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="400" height="400"> >+ <text x="50" y="100">This text should be ABOVE the other line.</text> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">This text should be BELOW the other line.</textPath> >+ </text> >+ </pattern> >+ <rect width="400" height="400" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("thePath"); >+ path.setAttribute("d", "M50 150 L 450 150"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-path-change-using-svg-dom-expected.txt b/LayoutTests/svg/custom/textPath-path-change-using-svg-dom-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..62ec1e518d775be699e628158abf221a025973e6 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change-using-svg-dom-expected.txt >@@ -0,0 +1,2 @@ >+This text should be ABOVE the other line. >+This text should be BELOW the other line. >diff --git a/LayoutTests/svg/custom/textPath-path-change-using-svg-dom-pattern-expected.txt b/LayoutTests/svg/custom/textPath-path-change-using-svg-dom-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..0d9590735ca55ae7d16a06b811c11ef2a6b2b7cc >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change-using-svg-dom-pattern-expected.txt >@@ -0,0 +1,3 @@ >+This text should be ABOVE the other line. >+This text should be BELOW the other line. >+ >diff --git a/LayoutTests/svg/custom/textPath-path-change-using-svg-dom-pattern.svg b/LayoutTests/svg/custom/textPath-path-change-using-svg-dom-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..8938e19fa580cfde59a4b43c0726e29bb6546921 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change-using-svg-dom-pattern.svg >@@ -0,0 +1,27 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 450 50" /> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="400" height="400"> >+ <text x="50" y="100">This text should be ABOVE the other line.</text> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">This text should be BELOW the other line.</textPath> >+ </text> >+ </pattern> >+ <rect width="400" height="400" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("thePath"); >+ pathSegList = path.pathSegList; >+ pathSegList.clear(); >+ pathSeg = path.createSVGPathSegMovetoAbs(50, 150); >+ pathSegList.appendItem(pathSeg); >+ pathSeg = path.createSVGPathSegLinetoAbs(450, 150); >+ pathSegList.appendItem(pathSeg); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-path-change-using-svg-dom.svg b/LayoutTests/svg/custom/textPath-path-change-using-svg-dom.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..90cde76414184893a77406a9751c5052df4fd2f9 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change-using-svg-dom.svg >@@ -0,0 +1,24 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 450 50" /> >+ <text x="50" y="100">This text should be ABOVE the other line.</text> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">This text should be BELOW the other line.</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("thePath"); >+ pathSegList = path.pathSegList; >+ pathSegList.clear(); >+ pathSeg = path.createSVGPathSegMovetoAbs(50, 150); >+ pathSegList.appendItem(pathSeg); >+ pathSeg = path.createSVGPathSegLinetoAbs(450, 150); >+ pathSegList.appendItem(pathSeg); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-path-change.svg b/LayoutTests/svg/custom/textPath-path-change.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..3055fbe7c3000e6ea713b6157e740bb7c9166b77 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change.svg >@@ -0,0 +1,19 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 450 50" /> >+ <text x="50" y="100">This text should be ABOVE the other line.</text> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">This text should be BELOW the other line.</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("thePath"); >+ path.setAttribute("d", "M50 150 L 450 150"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-path-change2-expected.txt b/LayoutTests/svg/custom/textPath-path-change2-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..21487aec0697c2697b9e83398aa7511c77ddea4c >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change2-expected.txt >@@ -0,0 +1 @@ >+This text should be ABOVE the other line. This text should be BELOW the other line. >diff --git a/LayoutTests/svg/custom/textPath-path-change2-pattern-expected.txt b/LayoutTests/svg/custom/textPath-path-change2-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..dcc19602c10fe195a8d19bbfcd43c2774586fca8 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change2-pattern-expected.txt >@@ -0,0 +1,2 @@ >+This text should be ABOVE the other line. This text should be BELOW the other line. >+ >diff --git a/LayoutTests/svg/custom/textPath-path-change2-pattern.svg b/LayoutTests/svg/custom/textPath-path-change2-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..3bfd9aa0171a5c08efb5b93d1aa23b1a022cbe88 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change2-pattern.svg >@@ -0,0 +1,22 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 450 50" /> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="400" height="400"> >+ <text> >+ <textPath xlink:href="#thePath">This text should be ABOVE the other line.</textPath> >+ <textPath xlink:href="#thePath"><tspan dy="20">This text should be BELOW the other line.</tspan></textPath> >+ </text> >+ </pattern> >+ <rect width="400" height="400" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("thePath"); >+ path.setAttribute("d", "M50 150 L 450 150"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-path-change2.svg b/LayoutTests/svg/custom/textPath-path-change2.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..dcfb333720393d5156402ca8e0eb7d4cb0253d93 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-path-change2.svg >@@ -0,0 +1,19 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M50 50 L 450 50" /> >+ <text> >+ <textPath xlink:href="#thePath">This text should be ABOVE the other line.</textPath> >+ <textPath xlink:href="#thePath"><tspan dy="20">This text should be BELOW the other line.</tspan></textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("thePath"); >+ path.setAttribute("d", "M50 150 L 450 150"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-remove-path-expected.txt b/LayoutTests/svg/custom/textPath-remove-path-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..740e723ec2da8f9aa3c95360ddb5f3cfe073f547 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-remove-path-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+This text should not be visible >diff --git a/LayoutTests/svg/custom/textPath-remove-path-pattern-expected.txt b/LayoutTests/svg/custom/textPath-remove-path-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..11365c8112b8f1c90c187e2d04123a3da3baf10a >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-remove-path-pattern-expected.txt >@@ -0,0 +1,3 @@ >+PASS >+FAIL >+ >diff --git a/LayoutTests/svg/custom/textPath-remove-path-pattern.svg b/LayoutTests/svg/custom/textPath-remove-path-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..ad892f590d5eb0d1fd47f1af6e88cc8fbd9f2cae >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-remove-path-pattern.svg >@@ -0,0 +1,22 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M150 50 L 450 50" /> >+ <text x="50" y="50">PASS</text> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="400" height="400"> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">FAIL</textPath> >+ </text> >+ </pattern> >+ <rect width="400" height="400" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("thePath"); >+ path.parentNode.removeChild(path); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-remove-path.svg b/LayoutTests/svg/custom/textPath-remove-path.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..28026390e6f1c8b5c5d5bbc90c8419c2caa4b6f3 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-remove-path.svg >@@ -0,0 +1,19 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M150 100 L 450 100" /> >+ <text x="50" y="50">PASS</text> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">This text should not be visible</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementById("thePath"); >+ path.parentNode.removeChild(path); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-set-id-expected.txt b/LayoutTests/svg/custom/textPath-set-id-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..7ef22e9a431ad0272713b71fdc8794016c8ef12f >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-set-id-expected.txt >@@ -0,0 +1 @@ >+PASS >diff --git a/LayoutTests/svg/custom/textPath-set-id.svg b/LayoutTests/svg/custom/textPath-set-id.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..0679f3f909b46f85cd7ad94c002b75a83c3da007 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-set-id.svg >@@ -0,0 +1,29 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <defs> >+ <path d="M150 50 L 450 50" /> >+ </defs> >+ <text> >+ <textPath id="theTP" xlink:href="#foo">FAIL</textPath> >+ </text> >+ <script><![CDATA[ >+ var subtreeModifiedEventsSeen = 0; >+ >+ function handler(event) >+ { >+ subtreeModifiedEventsSeen++; >+ } >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var path = document.getElementsByTagName("path")[0]; >+ path.parentNode.addEventListener('DOMSubtreeModified', handler); >+ path.setAttribute("id","foo"); >+ if (subtreeModifiedEventsSeen == 1) >+ document.getElementById("theTP").textContent = "PASS"; >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-startoffset-expected.txt b/LayoutTests/svg/custom/textPath-startoffset-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..7ef22e9a431ad0272713b71fdc8794016c8ef12f >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-startoffset-expected.txt >@@ -0,0 +1 @@ >+PASS >diff --git a/LayoutTests/svg/custom/textPath-startoffset-pattern-expected.txt b/LayoutTests/svg/custom/textPath-startoffset-pattern-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..69cfc5a98db74fbe32ac9b678a6134af9736dd59 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-startoffset-pattern-expected.txt >@@ -0,0 +1,2 @@ >+PASS >+ >diff --git a/LayoutTests/svg/custom/textPath-startoffset-pattern.svg b/LayoutTests/svg/custom/textPath-startoffset-pattern.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..6cb46a19bad725384a9ca991ef59f85ef29d1a54 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-startoffset-pattern.svg >@@ -0,0 +1,21 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M-150 50 L 450 50" /> >+ <pattern id="pat" patternUnits="userSpaceOnUse" x="0" y="0" width="200" height="200"> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">PASS</textPath> >+ </text> >+ </pattern> >+ <rect width="200" height="200" fill="url(#pat)" stroke="black" stroke-width="1"/> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var tp = document.getElementById("theTP"); >+ tp.setAttribute("startOffset", "200"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg> >diff --git a/LayoutTests/svg/custom/textPath-startoffset.svg b/LayoutTests/svg/custom/textPath-startoffset.svg >new file mode 100644 >index 0000000000000000000000000000000000000000..0d689617c463603bf2901380a31c0eddcd726b16 >--- /dev/null >+++ b/LayoutTests/svg/custom/textPath-startoffset.svg >@@ -0,0 +1,18 @@ >+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="runTest()"> >+ <path id="thePath" d="M-150 50 L 450 50" /> >+ <text> >+ <textPath id="theTP" xlink:href="#thePath">PASS</textPath> >+ </text> >+ <script><![CDATA[ >+ if (window.layoutTestController) { >+ layoutTestController.waitUntilDone(); >+ layoutTestController.dumpAsText(true); >+ } >+ function runTest() { >+ var tp = document.getElementById("theTP"); >+ tp.setAttribute("startOffset", "200"); >+ if (window.layoutTestController) >+ layoutTestController.notifyDone(); >+ } >+ ]]></script> >+</svg>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 15799
:
17047
|
27683
|
27854
|
95436
|
99097
|
99104
|
99152
|
99164
|
99172
|
99588
|
99652
|
99655
|
99656
|
99657
|
99665
|
99752
|
99772
|
99882
|
100043
|
100047
|
143034
|
143158
|
143314
|
143363
|
143436
|
143453
|
143598
|
143856
|
144062
|
144072
|
144081
|
144093