[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

zimmermann at webkit.org zimmermann at webkit.org
Wed Dec 22 14:47:19 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 4d3d82e78389ca3ee6d57338a5f8bca16020206c
Author: zimmermann at webkit.org <zimmermann at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Oct 20 08:32:32 2010 +0000

    2010-10-20  Nikolas Zimmermann  <nzimmermann at rim.com>
    
            Reviewed by Adam Roben.
    
            Rename SVGAnimatedProperty* -> DeprecatedSVGAnimatedProperty*
            https://bugs.webkit.org/show_bug.cgi?id=47973
    
            Prepare fixing bug 47905, redesigning SVGAnimatedProperty. As we're going to move type by type
            to the new animated property concept, keep the old one around, marked deprecated, until the
            transition is finished.
    
            * GNUmakefile.am:
            * WebCore.gypi:
            * WebCore.pro:
            * WebCore.vcproj/WebCore.vcproj:
            * WebCore.xcodeproj/project.pbxproj:
            * bindings/scripts/CodeGeneratorObjC.pm:
            * bindings/scripts/CodeGeneratorV8.pm:
            * svg/DeprecatedSVGAnimatedProperty.h: Copied from svg/SVGAnimatedProperty.h.
            (WebCore::DeprecatedSVGAnimatedPropertyTearOff::DeprecatedSVGAnimatedPropertyTearOff):
            (WebCore::DeprecatedSVGAnimatedPropertyTearOff::~DeprecatedSVGAnimatedPropertyTearOff):
            (WebCore::DeprecatedSVGAnimatedProperty::~DeprecatedSVGAnimatedProperty):
            (WebCore::DeprecatedSVGAnimatedProperty::DeprecatedSVGAnimatedProperty):
            (WebCore::DeprecatedSVGAnimatedProperty::value):
            (WebCore::DeprecatedSVGAnimatedProperty::baseValue):
            * svg/DeprecatedSVGAnimatedPropertyTraits.h: Copied from svg/SVGAnimatedPropertyTraits.h.
            * svg/DeprecatedSVGAnimatedTemplate.h: Copied from svg/SVGAnimatedTemplate.h.
            (WebCore::DeprecatedSVGAnimatedTypeWrapperKey::DeprecatedSVGAnimatedTypeWrapperKey):
            (WebCore::DeprecatedSVGAnimatedTypeWrapperKey::operator==):
            (WebCore::DeprecatedSVGAnimatedTypeWrapperKeyHash::hash):
            (WebCore::DeprecatedSVGAnimatedTypeWrapperKeyHash::equal):
            (WebCore::DeprecatedSVGAnimatedTypeWrapperKeyHashTraits::constructDeletedValue):
            (WebCore::DeprecatedSVGAnimatedTypeWrapperKeyHashTraits::isDeletedValue):
            (WebCore::DeprecatedSVGAnimatedTemplate::~DeprecatedSVGAnimatedTemplate):
            (WebCore::DeprecatedSVGAnimatedTemplate::forgetWrapper):
            (WebCore::lookupOrCreateWrapper):
            * svg/SVGAnimatedProperty.h: Removed.
            * svg/SVGAnimatedPropertySynchronizer.h: Removed.
            * svg/SVGAnimatedPropertyTraits.h: Removed.
            * svg/SVGAnimatedTemplate.h: Removed.
            * svg/SVGElement.h:
            * svg/SVGExternalResourcesRequired.h:
            * svg/SVGFitToViewBox.h:
            * svg/SVGURIReference.h:
            * svg/properties: Added.
            * svg/properties/SVGAnimatedPropertySynchronizer.h: Copied from svg/SVGAnimatedPropertySynchronizer.h.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@70135 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 6fdd372..ea0cf77 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,50 @@
+2010-10-20  Nikolas Zimmermann  <nzimmermann at rim.com>
+
+        Reviewed by Adam Roben.
+
+        Rename SVGAnimatedProperty* -> DeprecatedSVGAnimatedProperty*
+        https://bugs.webkit.org/show_bug.cgi?id=47973
+
+        Prepare fixing bug 47905, redesigning SVGAnimatedProperty. As we're going to move type by type
+        to the new animated property concept, keep the old one around, marked deprecated, until the
+        transition is finished.
+
+        * GNUmakefile.am:
+        * WebCore.gypi:
+        * WebCore.pro:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/scripts/CodeGeneratorObjC.pm:
+        * bindings/scripts/CodeGeneratorV8.pm:
+        * svg/DeprecatedSVGAnimatedProperty.h: Copied from svg/SVGAnimatedProperty.h.
+        (WebCore::DeprecatedSVGAnimatedPropertyTearOff::DeprecatedSVGAnimatedPropertyTearOff):
+        (WebCore::DeprecatedSVGAnimatedPropertyTearOff::~DeprecatedSVGAnimatedPropertyTearOff):
+        (WebCore::DeprecatedSVGAnimatedProperty::~DeprecatedSVGAnimatedProperty):
+        (WebCore::DeprecatedSVGAnimatedProperty::DeprecatedSVGAnimatedProperty):
+        (WebCore::DeprecatedSVGAnimatedProperty::value):
+        (WebCore::DeprecatedSVGAnimatedProperty::baseValue):
+        * svg/DeprecatedSVGAnimatedPropertyTraits.h: Copied from svg/SVGAnimatedPropertyTraits.h.
+        * svg/DeprecatedSVGAnimatedTemplate.h: Copied from svg/SVGAnimatedTemplate.h.
+        (WebCore::DeprecatedSVGAnimatedTypeWrapperKey::DeprecatedSVGAnimatedTypeWrapperKey):
+        (WebCore::DeprecatedSVGAnimatedTypeWrapperKey::operator==):
+        (WebCore::DeprecatedSVGAnimatedTypeWrapperKeyHash::hash):
+        (WebCore::DeprecatedSVGAnimatedTypeWrapperKeyHash::equal):
+        (WebCore::DeprecatedSVGAnimatedTypeWrapperKeyHashTraits::constructDeletedValue):
+        (WebCore::DeprecatedSVGAnimatedTypeWrapperKeyHashTraits::isDeletedValue):
+        (WebCore::DeprecatedSVGAnimatedTemplate::~DeprecatedSVGAnimatedTemplate):
+        (WebCore::DeprecatedSVGAnimatedTemplate::forgetWrapper):
+        (WebCore::lookupOrCreateWrapper):
+        * svg/SVGAnimatedProperty.h: Removed.
+        * svg/SVGAnimatedPropertySynchronizer.h: Removed.
+        * svg/SVGAnimatedPropertyTraits.h: Removed.
+        * svg/SVGAnimatedTemplate.h: Removed.
+        * svg/SVGElement.h:
+        * svg/SVGExternalResourcesRequired.h:
+        * svg/SVGFitToViewBox.h:
+        * svg/SVGURIReference.h:
+        * svg/properties: Added.
+        * svg/properties/SVGAnimatedPropertySynchronizer.h: Copied from svg/SVGAnimatedPropertySynchronizer.h.
+
 2010-10-20  Shinichiro Hamaji  <hamaji at chromium.org>
 
         Reviewed by Kent Tamura.
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index 811ffa6..708e563 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -2993,6 +2993,9 @@ webcore_sources += \
 	WebCore/svg/animation/SVGSMILElement.h \
 	WebCore/svg/ColorDistance.cpp \
 	WebCore/svg/ColorDistance.h \
+	WebCore/svg/DeprecatedSVGAnimatedProperty.h \
+	WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h \
+	WebCore/svg/DeprecatedSVGAnimatedTemplate.h \
 	WebCore/svg/ElementTimeControl.h \
 	WebCore/svg/GradientAttributes.h \
 	WebCore/svg/graphics/filters/SVGFEImage.cpp \
@@ -3005,6 +3008,7 @@ webcore_sources += \
 	WebCore/svg/graphics/SVGImage.h \
 	WebCore/svg/LinearGradientAttributes.h \
 	WebCore/svg/PatternAttributes.h \
+	WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h \
 	WebCore/svg/RadialGradientAttributes.h \
 	WebCore/svg/SVGAElement.cpp \
 	WebCore/svg/SVGAElement.h \
@@ -3018,10 +3022,6 @@ webcore_sources += \
 	WebCore/svg/SVGAnimatedPathData.h \
 	WebCore/svg/SVGAnimatedPoints.cpp \
 	WebCore/svg/SVGAnimatedPoints.h \
-	WebCore/svg/SVGAnimatedProperty.h \
-	WebCore/svg/SVGAnimatedPropertySynchronizer.h \
-	WebCore/svg/SVGAnimatedPropertyTraits.h \
-	WebCore/svg/SVGAnimatedTemplate.h \
 	WebCore/svg/SVGAnimateElement.cpp \
 	WebCore/svg/SVGAnimateElement.h \
 	WebCore/svg/SVGAnimateMotionElement.cpp \
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index f79542e..350bdac 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -3922,8 +3922,12 @@
             'svg/graphics/filters/SVGFilterBuilder.h',
             'svg/graphics/SVGImage.cpp',
             'svg/graphics/SVGImage.h',
+            'svg/properties/SVGAnimatedPropertySynchronizer.h',
             'svg/ColorDistance.cpp',
             'svg/ColorDistance.h',
+            'svg/DeprecatedSVGAnimatedProperty.h',
+            'svg/DeprecatedSVGAnimatedPropertyTraits.h',
+            'svg/DeprecatedSVGAnimatedTemplate.h',
             'svg/ElementTimeControl.h',
             'svg/GradientAttributes.h',
             'svg/LinearGradientAttributes.h',
@@ -3948,10 +3952,6 @@
             'svg/SVGAnimatedPathData.h',
             'svg/SVGAnimatedPoints.cpp',
             'svg/SVGAnimatedPoints.h',
-            'svg/SVGAnimatedProperty.h',
-            'svg/SVGAnimatedPropertySynchronizer.h',
-            'svg/SVGAnimatedPropertyTraits.h',
-            'svg/SVGAnimatedTemplate.h',
             'svg/SVGAnimationElement.cpp',
             'svg/SVGAnimationElement.h',
             'svg/SVGCircleElement.cpp',
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 1ce1055..4b3d27b 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -2335,20 +2335,20 @@ HEADERS += \
     svg/animation/SMILTime.h \
     svg/animation/SVGSMILElement.h \
     svg/ColorDistance.h \
+    svg/DeprecatedSVGAnimatedProperty.h \
+    svg/DeprecatedSVGAnimatedPropertyTraits.h \
+    svg/DeprecatedSVGAnimatedTemplate.h \
     svg/graphics/filters/SVGFEImage.h \
     svg/graphics/filters/SVGFilterBuilder.h \
     svg/graphics/filters/SVGFilter.h \
     svg/graphics/SVGImage.h \
+    svg/properties/SVGAnimatedPropertySynchronizer.h \
     svg/SVGAElement.h \
     svg/SVGAltGlyphElement.h \
     svg/SVGAngle.h \
     svg/SVGAnimateColorElement.h \
     svg/SVGAnimatedPathData.h \
     svg/SVGAnimatedPoints.h \
-    svg/SVGAnimatedProperty.h \
-    svg/SVGAnimatedPropertySynchronizer.h \
-    svg/SVGAnimatedPropertyTraits.h \
-    svg/SVGAnimatedTemplate.h \
     svg/SVGAnimateElement.h \
     svg/SVGAnimateMotionElement.h \
     svg/SVGAnimateTransformElement.h \
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index 706065b..488ecda 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -61151,51 +61151,47 @@
 				>
 			</File>
 			<File
-				RelativePath="..\svg\ElementTimeControl.h"
+				RelativePath="..\svg\DeprecatedSVGAnimatedProperty.h"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAElement.h"
+				RelativePath="..\svg\DeprecatedSVGAnimatedPropertyTraits.h"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAllInOne.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\svg\SVGAltGlyphElement.h"
+				RelativePath="..\svg\DeprecatedSVGAnimatedTemplate.h"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAngle.h"
+				RelativePath="..\svg\ElementTimeControl.h"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAnimateColorElement.h"
+				RelativePath="..\svg\SVGAElement.h"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAnimatedPathData.h"
+				RelativePath="..\svg\SVGAllInOne.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAnimatedPoints.h"
+				RelativePath="..\svg\SVGAltGlyphElement.h"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAnimatedProperty.h"
+				RelativePath="..\svg\SVGAngle.h"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAnimatedPropertySynchronizer.h"
+				RelativePath="..\svg\SVGAnimateColorElement.h"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAnimatedPropertyTraits.h"
+				RelativePath="..\svg\SVGAnimatedPathData.h"
 				>
 			</File>
 			<File
-				RelativePath="..\svg\SVGAnimatedTemplate.h"
+				RelativePath="..\svg\SVGAnimatedPoints.h"
 				>
 			</File>
 			<File
@@ -62214,6 +62210,14 @@
 					</File>
 				</Filter>
 			</Filter>
+			<Filter
+				Name="properties"
+				>
+				<File
+    				RelativePath="..\svg\properties\SVGAnimatedPropertySynchronizer.h"
+					>
+				</File>
+			</Filter>
 		</Filter>
 		<Filter
 			Name="ForwardingHeaders"
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index 163310e..bc612df 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -79,6 +79,10 @@
 		0818AEE20EDB86BC00647B66 /* WMLEventHandlingElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0818AEE00EDB86BC00647B66 /* WMLEventHandlingElement.cpp */; };
 		0818AEE30EDB86BC00647B66 /* WMLEventHandlingElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 0818AEE10EDB86BC00647B66 /* WMLEventHandlingElement.h */; };
 		081AA8DA1111237E002AB06E /* SVGElementRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = 081AA8D91111237E002AB06E /* SVGElementRareData.h */; };
+		081CDFB8126ECFDB00D215CA /* DeprecatedSVGAnimatedProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 081CDFB5126ECFDB00D215CA /* DeprecatedSVGAnimatedProperty.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		081CDFB9126ECFDB00D215CA /* DeprecatedSVGAnimatedPropertyTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 081CDFB6126ECFDB00D215CA /* DeprecatedSVGAnimatedPropertyTraits.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		081CDFBA126ECFDB00D215CA /* DeprecatedSVGAnimatedTemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = 081CDFB7126ECFDB00D215CA /* DeprecatedSVGAnimatedTemplate.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		081CDFBF126ECFE800D215CA /* SVGAnimatedPropertySynchronizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 081CDFBE126ECFE800D215CA /* SVGAnimatedPropertySynchronizer.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		081D81310EE0E74D00D73689 /* WMLTimerElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 081D812F0EE0E74D00D73689 /* WMLTimerElement.cpp */; };
 		081D81320EE0E74D00D73689 /* WMLTimerElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 081D81300EE0E74D00D73689 /* WMLTimerElement.h */; };
 		081EBF3A0FD34F4100DA7559 /* SVGFilterBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 081EBF380FD34F4100DA7559 /* SVGFilterBuilder.cpp */; };
@@ -108,8 +112,6 @@
 		084D0E3D11F5816100081E1A /* SVGResources.h in Headers */ = {isa = PBXBuildFile; fileRef = 084D0E3911F5816100081E1A /* SVGResources.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		084D0E3E11F5816100081E1A /* SVGResourcesCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 084D0E3A11F5816100081E1A /* SVGResourcesCache.cpp */; };
 		084D0E3F11F5816100081E1A /* SVGResourcesCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 084D0E3B11F5816100081E1A /* SVGResourcesCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		084D2833110A7FCB0038239A /* SVGAnimatedPropertySynchronizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 084D2831110A7FCB0038239A /* SVGAnimatedPropertySynchronizer.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		084D2834110A7FCB0038239A /* SVGAnimatedPropertyTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 084D2832110A7FCB0038239A /* SVGAnimatedPropertyTraits.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		084DBAA10ED39D360038C226 /* WMLVariables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 084DBA9D0ED39D350038C226 /* WMLVariables.cpp */; };
 		084DBAA20ED39D360038C226 /* WMLVariables.h in Headers */ = {isa = PBXBuildFile; fileRef = 084DBA9E0ED39D360038C226 /* WMLVariables.h */; };
 		0854B0141255E4E600B9CDD0 /* RenderSVGInline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0854B0021255E4E600B9CDD0 /* RenderSVGInline.cpp */; };
@@ -154,7 +156,6 @@
 		08735FB910E91232006D6FAD /* SVGMarkerLayoutInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 08735FB710E91232006D6FAD /* SVGMarkerLayoutInfo.h */; };
 		08744BAA0EDB7D86004C9E63 /* WMLOnEventElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08744BA90EDB7D86004C9E63 /* WMLOnEventElement.cpp */; };
 		08744BAE0EDB7D92004C9E63 /* WMLOnEventElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 08744BAD0EDB7D92004C9E63 /* WMLOnEventElement.h */; };
-		0878B1FD10874E3F00A55097 /* SVGAnimatedProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 0878B1F910874E3F00A55097 /* SVGAnimatedProperty.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		087D97BF10FB8D7700C00874 /* JSSVGPODListCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 087D97BE10FB8D7700C00874 /* JSSVGPODListCustom.h */; };
 		087FFA0F0EFF3ED3009DBD88 /* WMLInsertedLegendElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 087FFA0D0EFF3ED3009DBD88 /* WMLInsertedLegendElement.cpp */; };
 		087FFA100EFF3ED3009DBD88 /* WMLInsertedLegendElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 087FFA0E0EFF3ED3009DBD88 /* WMLInsertedLegendElement.h */; };
@@ -3917,7 +3918,6 @@
 		B22279850D00BF220071B782 /* SVGAnimatedPathData.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277EF0D00BF1F0071B782 /* SVGAnimatedPathData.h */; };
 		B22279870D00BF220071B782 /* SVGAnimatedPoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277F10D00BF1F0071B782 /* SVGAnimatedPoints.cpp */; };
 		B22279880D00BF220071B782 /* SVGAnimatedPoints.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277F20D00BF1F0071B782 /* SVGAnimatedPoints.h */; };
-		B222798D0D00BF220071B782 /* SVGAnimatedTemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277F70D00BF1F0071B782 /* SVGAnimatedTemplate.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		B222798F0D00BF220071B782 /* SVGAnimateElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277F90D00BF1F0071B782 /* SVGAnimateElement.cpp */; };
 		B22279900D00BF220071B782 /* SVGAnimateElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B22277FA0D00BF1F0071B782 /* SVGAnimateElement.h */; };
 		B22279920D00BF220071B782 /* SVGAnimateMotionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B22277FC0D00BF1F0071B782 /* SVGAnimateMotionElement.cpp */; };
@@ -6065,6 +6065,10 @@
 		0818AEE00EDB86BC00647B66 /* WMLEventHandlingElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLEventHandlingElement.cpp; sourceTree = "<group>"; };
 		0818AEE10EDB86BC00647B66 /* WMLEventHandlingElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLEventHandlingElement.h; sourceTree = "<group>"; };
 		081AA8D91111237E002AB06E /* SVGElementRareData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGElementRareData.h; sourceTree = "<group>"; };
+		081CDFB5126ECFDB00D215CA /* DeprecatedSVGAnimatedProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeprecatedSVGAnimatedProperty.h; sourceTree = "<group>"; };
+		081CDFB6126ECFDB00D215CA /* DeprecatedSVGAnimatedPropertyTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeprecatedSVGAnimatedPropertyTraits.h; sourceTree = "<group>"; };
+		081CDFB7126ECFDB00D215CA /* DeprecatedSVGAnimatedTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeprecatedSVGAnimatedTemplate.h; sourceTree = "<group>"; };
+		081CDFBE126ECFE800D215CA /* SVGAnimatedPropertySynchronizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPropertySynchronizer.h; sourceTree = "<group>"; };
 		081D812F0EE0E74D00D73689 /* WMLTimerElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLTimerElement.cpp; sourceTree = "<group>"; };
 		081D81300EE0E74D00D73689 /* WMLTimerElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLTimerElement.h; sourceTree = "<group>"; };
 		081EBF380FD34F4100DA7559 /* SVGFilterBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGFilterBuilder.cpp; sourceTree = "<group>"; };
@@ -6092,8 +6096,6 @@
 		084D0E3911F5816100081E1A /* SVGResources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGResources.h; sourceTree = "<group>"; };
 		084D0E3A11F5816100081E1A /* SVGResourcesCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGResourcesCache.cpp; sourceTree = "<group>"; };
 		084D0E3B11F5816100081E1A /* SVGResourcesCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGResourcesCache.h; sourceTree = "<group>"; };
-		084D2831110A7FCB0038239A /* SVGAnimatedPropertySynchronizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPropertySynchronizer.h; sourceTree = "<group>"; };
-		084D2832110A7FCB0038239A /* SVGAnimatedPropertyTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedPropertyTraits.h; sourceTree = "<group>"; };
 		084DBA9D0ED39D350038C226 /* WMLVariables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLVariables.cpp; sourceTree = "<group>"; };
 		084DBA9E0ED39D360038C226 /* WMLVariables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLVariables.h; sourceTree = "<group>"; };
 		0854B0021255E4E600B9CDD0 /* RenderSVGInline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGInline.cpp; sourceTree = "<group>"; };
@@ -6138,7 +6140,6 @@
 		08735FB710E91232006D6FAD /* SVGMarkerLayoutInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGMarkerLayoutInfo.h; sourceTree = "<group>"; };
 		08744BA90EDB7D86004C9E63 /* WMLOnEventElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLOnEventElement.cpp; sourceTree = "<group>"; };
 		08744BAD0EDB7D92004C9E63 /* WMLOnEventElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLOnEventElement.h; sourceTree = "<group>"; };
-		0878B1F910874E3F00A55097 /* SVGAnimatedProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedProperty.h; sourceTree = "<group>"; };
 		087D97BE10FB8D7700C00874 /* JSSVGPODListCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGPODListCustom.h; sourceTree = "<group>"; };
 		087FFA0D0EFF3ED3009DBD88 /* WMLInsertedLegendElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WMLInsertedLegendElement.cpp; sourceTree = "<group>"; };
 		087FFA0E0EFF3ED3009DBD88 /* WMLInsertedLegendElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMLInsertedLegendElement.h; sourceTree = "<group>"; };
@@ -9724,7 +9725,6 @@
 		B22277F40D00BF1F0071B782 /* SVGAnimatedPreserveAspectRatio.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedPreserveAspectRatio.idl; sourceTree = "<group>"; };
 		B22277F50D00BF1F0071B782 /* SVGAnimatedRect.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedRect.idl; sourceTree = "<group>"; };
 		B22277F60D00BF1F0071B782 /* SVGAnimatedString.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedString.idl; sourceTree = "<group>"; };
-		B22277F70D00BF1F0071B782 /* SVGAnimatedTemplate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedTemplate.h; sourceTree = "<group>"; };
 		B22277F80D00BF1F0071B782 /* SVGAnimatedTransformList.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SVGAnimatedTransformList.idl; sourceTree = "<group>"; };
 		B22277F90D00BF1F0071B782 /* SVGAnimateElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimateElement.cpp; sourceTree = "<group>"; };
 		B22277FA0D00BF1F0071B782 /* SVGAnimateElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SVGAnimateElement.h; sourceTree = "<group>"; };
@@ -11660,6 +11660,14 @@
 			tabWidth = 4;
 			usesTabs = 0;
 		};
+		081CDFBD126ECFE800D215CA /* properties */ = {
+			isa = PBXGroup;
+			children = (
+				081CDFBE126ECFE800D215CA /* SVGAnimatedPropertySynchronizer.h */,
+			);
+			path = properties;
+			sourceTree = "<group>";
+		};
 		0867D691FE84028FC02AAC07 /* WebKit */ = {
 			isa = PBXGroup;
 			children = (
@@ -15868,8 +15876,12 @@
 			children = (
 				E46E97860DAAD61B0071E894 /* animation */,
 				B25598860D00D8B800BB825C /* graphics */,
+				081CDFBD126ECFE800D215CA /* properties */,
 				B22277CB0D00BF1F0071B782 /* ColorDistance.cpp */,
 				B22277CC0D00BF1F0071B782 /* ColorDistance.h */,
+				081CDFB5126ECFDB00D215CA /* DeprecatedSVGAnimatedProperty.h */,
+				081CDFB6126ECFDB00D215CA /* DeprecatedSVGAnimatedPropertyTraits.h */,
+				081CDFB7126ECFDB00D215CA /* DeprecatedSVGAnimatedTemplate.h */,
 				E415F1830D9A1A830033CE97 /* ElementTimeControl.h */,
 				E415F10C0D9A05870033CE97 /* ElementTimeControl.idl */,
 				B22277CD0D00BF1F0071B782 /* GradientAttributes.h */,
@@ -15903,12 +15915,8 @@
 				B22277F20D00BF1F0071B782 /* SVGAnimatedPoints.h */,
 				B22277F30D00BF1F0071B782 /* SVGAnimatedPoints.idl */,
 				B22277F40D00BF1F0071B782 /* SVGAnimatedPreserveAspectRatio.idl */,
-				0878B1F910874E3F00A55097 /* SVGAnimatedProperty.h */,
-				084D2831110A7FCB0038239A /* SVGAnimatedPropertySynchronizer.h */,
-				084D2832110A7FCB0038239A /* SVGAnimatedPropertyTraits.h */,
 				B22277F50D00BF1F0071B782 /* SVGAnimatedRect.idl */,
 				B22277F60D00BF1F0071B782 /* SVGAnimatedString.idl */,
-				B22277F70D00BF1F0071B782 /* SVGAnimatedTemplate.h */,
 				B22277F80D00BF1F0071B782 /* SVGAnimatedTransformList.idl */,
 				B22277F90D00BF1F0071B782 /* SVGAnimateElement.cpp */,
 				B22277FA0D00BF1F0071B782 /* SVGAnimateElement.h */,
@@ -20671,10 +20679,6 @@
 				B222797A0D00BF220071B782 /* SVGAnimateColorElement.h in Headers */,
 				B22279850D00BF220071B782 /* SVGAnimatedPathData.h in Headers */,
 				B22279880D00BF220071B782 /* SVGAnimatedPoints.h in Headers */,
-				0878B1FD10874E3F00A55097 /* SVGAnimatedProperty.h in Headers */,
-				084D2833110A7FCB0038239A /* SVGAnimatedPropertySynchronizer.h in Headers */,
-				084D2834110A7FCB0038239A /* SVGAnimatedPropertyTraits.h in Headers */,
-				B222798D0D00BF220071B782 /* SVGAnimatedTemplate.h in Headers */,
 				B22279900D00BF220071B782 /* SVGAnimateElement.h in Headers */,
 				B22279930D00BF220071B782 /* SVGAnimateMotionElement.h in Headers */,
 				B22279950D00BF220071B782 /* SVGAnimateTransformElement.h in Headers */,
@@ -21085,6 +21089,10 @@
 				97DD4D870FDF4D6E00ECF9A4 /* XSSAuditor.h in Headers */,
 				4FA3B90B125CD12200300BAD /* InspectorState.h in Headers */,
 				9728C3141268E4390041E89B /* MarkupAccumulator.h in Headers */,
+				081CDFB8126ECFDB00D215CA /* DeprecatedSVGAnimatedProperty.h in Headers */,
+				081CDFB9126ECFDB00D215CA /* DeprecatedSVGAnimatedPropertyTraits.h in Headers */,
+				081CDFBA126ECFDB00D215CA /* DeprecatedSVGAnimatedTemplate.h in Headers */,
+				081CDFBF126ECFE800D215CA /* SVGAnimatedPropertySynchronizer.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
diff --git a/WebCore/bindings/scripts/CodeGeneratorObjC.pm b/WebCore/bindings/scripts/CodeGeneratorObjC.pm
index 7e17008..96f0446 100644
--- a/WebCore/bindings/scripts/CodeGeneratorObjC.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorObjC.pm
@@ -588,7 +588,7 @@ sub AddIncludesForType
     }
 
     if ($codeGenerator->IsSVGAnimatedType($type)) {
-        $implIncludes{"SVGAnimatedTemplate.h"} = 1;
+        $implIncludes{"DeprecatedSVGAnimatedTemplate.h"} = 1;
         $implIncludes{"DOM${type}Internal.h"} = 1;
         return;
     }
@@ -983,7 +983,7 @@ sub GenerateHeader
         my $implClassName = GetImplClassName($interfaceName);
 
         if ($codeGenerator->IsSVGAnimatedType($interfaceName)) {
-            push(@internalHeaderContent, "#import <WebCore/SVGAnimatedTemplate.h>\n\n");
+            push(@internalHeaderContent, "#import <WebCore/DeprecatedSVGAnimatedTemplate.h>\n\n");
         } else {
             push(@internalHeaderContent, "namespace WebCore {\n");
             $startedNamespace = 1;
@@ -1087,7 +1087,7 @@ sub GenerateImplementation
     $implIncludes{"DOMSVGPathSegInternal.h"} = 1 if $interfaceName =~ /^SVGPathSeg.+/;
 
     if ($codeGenerator->IsSVGAnimatedType($interfaceName)) {
-        $implIncludes{"SVGAnimatedTemplate.h"} = 1;
+        $implIncludes{"DeprecatedSVGAnimatedTemplate.h"} = 1;
     } elsif ($interfaceName =~ /(\w+)(Abs|Rel)$/) {
         $implIncludes{"$1.h"} = 1;
     } else {
diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm
index 18e80e4..91ffeaa 100644
--- a/WebCore/bindings/scripts/CodeGeneratorV8.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorV8.pm
@@ -187,7 +187,7 @@ sub AddIncludesForSVGAnimatedType
         $implIncludes{"PlatformString.h"} = 1;
     }
 
-    $implIncludes{"SVGAnimatedTemplate.h"} = 1;
+    $implIncludes{"DeprecatedSVGAnimatedTemplate.h"} = 1;
 }
 
 # If the node has a [Conditional=XXX] attribute, returns an "ENABLE(XXX)" string for use in an #if.
@@ -450,7 +450,7 @@ sub GetHeaderClassInclude
         $className =~ s/Abs|Rel//;
     }
     return "" if (AvoidInclusionOfType($className));
-    return "SVGAnimatedTemplate.h" if ($codeGenerator->IsSVGAnimatedType($className));
+    return "DeprecatedSVGAnimatedTemplate.h" if ($codeGenerator->IsSVGAnimatedType($className));
     return "${className}.h";
 }
 
diff --git a/WebCore/svg/DeprecatedSVGAnimatedProperty.h b/WebCore/svg/DeprecatedSVGAnimatedProperty.h
new file mode 100644
index 0000000..e2f2af7
--- /dev/null
+++ b/WebCore/svg/DeprecatedSVGAnimatedProperty.h
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2008 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) Research In Motion Limited 2009-2010. 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 DeprecatedSVGAnimatedProperty_h
+#define DeprecatedSVGAnimatedProperty_h
+
+#if ENABLE(SVG)
+#include "SVGAnimatedPropertySynchronizer.h"
+#include "DeprecatedSVGAnimatedPropertyTraits.h"
+#include "DeprecatedSVGAnimatedTemplate.h"
+
+namespace WebCore {
+
+template<typename AnimatedType>
+class DeprecatedSVGAnimatedProperty;
+
+template<typename AnimatedType>
+class DeprecatedSVGAnimatedPropertyTearOff : public DeprecatedSVGAnimatedTemplate<AnimatedType> {
+public:
+    typedef typename DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::PassType PassType;
+    typedef typename DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::ReturnType ReturnType;
+
+    typedef DeprecatedSVGAnimatedPropertyTearOff<AnimatedType> Self;
+    typedef DeprecatedSVGAnimatedProperty<AnimatedType> Creator;
+
+    static PassRefPtr<Self> create(Creator& creator, SVGElement* contextElement)
+    {
+        return adoptRef(new Self(creator, contextElement));
+    }
+
+    virtual void setBaseVal(PassType type)
+    {
+        m_creator.setBaseValue(type);
+        m_contextElement->invalidateSVGAttributes();
+    }
+
+    virtual void setAnimVal(PassType type)
+    {
+        m_creator.setValue(type);
+        m_contextElement->invalidateSVGAttributes();
+    }
+
+    virtual ReturnType baseVal() const { return m_creator.baseValue(); }
+    virtual ReturnType animVal() const { return m_creator.value(); }
+    virtual const QualifiedName& associatedAttributeName() const { return m_creator.associatedAttributeName(); }
+
+private:
+    DeprecatedSVGAnimatedPropertyTearOff(Creator& creator, SVGElement* contextElement)
+        : m_creator(creator)
+        , m_contextElement(contextElement)
+    {
+        m_creator.setShouldSynchronize(true);
+    }
+
+    virtual ~DeprecatedSVGAnimatedPropertyTearOff()
+    {
+        m_creator.setShouldSynchronize(false);
+    }
+
+    Creator& m_creator;
+    RefPtr<SVGElement> m_contextElement;
+};
+
+template<typename AnimatedType>
+class DeprecatedSVGAnimatedProperty {
+public:
+    virtual ~DeprecatedSVGAnimatedProperty() { }
+
+    typedef typename DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::PassType PassType;
+    typedef typename DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::ReturnType ReturnType;
+    typedef typename DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::StoredType StoredType;
+
+    DeprecatedSVGAnimatedProperty()
+        : m_value(DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::null())
+        , m_shouldSynchronize(false)
+    {
+    }
+
+    template<typename ConstructorParameterOne>
+    DeprecatedSVGAnimatedProperty(const ConstructorParameterOne& value1)
+        : m_value(value1)
+        , m_shouldSynchronize(false)
+    {
+    }
+
+    template<typename ConstructorParameterOne, typename ConstructorParameterTwo>
+    DeprecatedSVGAnimatedProperty(const ConstructorParameterOne& value1, const ConstructorParameterTwo& value2)
+        : m_value(value1, value2)
+        , m_shouldSynchronize(false)
+    {
+    }
+
+    ReturnType value() const { return DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::toReturnType(m_value); }
+    ReturnType baseValue() const { return DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::toReturnType(m_value); }
+
+    void setValue(PassType type) { m_value = type; }
+    void setBaseValue(PassType type) { m_value = type; }
+
+    bool shouldSynchronize() const { return m_shouldSynchronize; }
+    void setShouldSynchronize(bool value) { m_shouldSynchronize = value; }
+
+    virtual const QualifiedName& associatedAttributeName() const = 0;
+
+protected:
+    StoredType m_value;
+    bool m_shouldSynchronize;
+};
+
+};
+
+// Helper macro used within DECLARE_ANIMATED_PROPERTY below
+#define DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, AnimatedType, UpperProperty) \
+class DeprecatedSVGAnimatedProperty##UpperProperty : public DeprecatedSVGAnimatedProperty<AnimatedType> { \
+public: \
+    DeprecatedSVGAnimatedProperty##UpperProperty() \
+        : DeprecatedSVGAnimatedProperty<AnimatedType>() \
+    { \
+    } \
+    \
+    template<typename ConstructorParameterOne> \
+    DeprecatedSVGAnimatedProperty##UpperProperty(const ConstructorParameterOne& value1) \
+        : DeprecatedSVGAnimatedProperty<AnimatedType>(value1) \
+    { \
+    } \
+    \
+    template<typename ConstructorParameterOne, typename ConstructorParameterTwo> \
+    DeprecatedSVGAnimatedProperty##UpperProperty(const ConstructorParameterOne& value1, const ConstructorParameterTwo& value2) \
+        : DeprecatedSVGAnimatedProperty<AnimatedType>(value1, value2) \
+    { \
+    } \
+    \
+    void synchronize(SVGElement* contextElement) \
+    { \
+        ASSERT(m_shouldSynchronize); \
+        AtomicString value(DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::toString(baseValue())); \
+        SVGAnimatedPropertySynchronizer<IsDerivedFromSVGElement<OwnerType>::value>::synchronize(contextElement, DOMAttribute, value); \
+    } \
+    \
+    virtual const QualifiedName& associatedAttributeName() const \
+    { \
+        return DOMAttribute; \
+    } \
+}
+
+// Helper macro shared by DECLARE_ANIMATED_PROPERTY / DECLARE_ANIMATED_PROPERTY_MULTIPLE_WRAPPERS
+#define DECLARE_ANIMATED_PROPERTY_SHARED(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, AnimatedType, UpperProperty, LowerProperty) \
+private: \
+    typedef DeprecatedSVGAnimatedPropertyTearOff<AnimatedType> DeprecatedSVGAnimatedPropertyTearOff##UpperProperty; \
+    DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, AnimatedType, UpperProperty); \
+    DeprecatedSVGAnimatedProperty##UpperProperty m_##LowerProperty; \
+    \
+public: \
+    DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::ReturnType LowerProperty() const \
+    { \
+        return m_##LowerProperty.value(); \
+    } \
+    \
+    DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::ReturnType LowerProperty##BaseValue() const \
+    { \
+        return m_##LowerProperty.baseValue(); \
+    } \
+    \
+    void set##UpperProperty(DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::PassType type) \
+    { \
+        m_##LowerProperty.setValue(type); \
+        SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
+        contextElement->invalidateSVGAttributes(); \
+    } \
+    \
+    void set##UpperProperty##BaseValue(DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::PassType type) \
+    { \
+        m_##LowerProperty.setBaseValue(type); \
+        SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
+        contextElement->invalidateSVGAttributes(); \
+    } \
+    \
+    void synchronize##UpperProperty() \
+    { \
+        if (!m_##LowerProperty.shouldSynchronize()) \
+            return; \
+        SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
+        m_##LowerProperty.synchronize(contextElement); \
+    } \
+    \
+    PassRefPtr<DeprecatedSVGAnimatedPropertyTearOff##UpperProperty> LowerProperty##Animated() \
+    { \
+        SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
+        return lookupOrCreateWrapper<AnimatedType, DeprecatedSVGAnimatedPropertyTearOff##UpperProperty>(contextElement, m_##LowerProperty, DOMAttribute); \
+    }
+
+// Used for SVG DOM properties that map exactly to one XML DOM attribute
+#define DECLARE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, AnimatedType, UpperProperty, LowerProperty) \
+DECLARE_ANIMATED_PROPERTY_SHARED(OwnerType, DOMAttribute, DOMAttribute.localName(), AnimatedType, UpperProperty, LowerProperty)
+
+// Used for the rare case multiple SVG DOM properties that map to the same XML dom attribute
+#define DECLARE_ANIMATED_PROPERTY_MULTIPLE_WRAPPERS(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, AnimatedType, UpperProperty, LowerProperty) \
+DECLARE_ANIMATED_PROPERTY_SHARED(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, AnimatedType, UpperProperty, LowerProperty)
+
+#endif
+#endif
diff --git a/WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h b/WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h
new file mode 100644
index 0000000..a660198
--- /dev/null
+++ b/WebCore/svg/DeprecatedSVGAnimatedPropertyTraits.h
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann at kde.org>
+ *
+ * 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 DeprecatedSVGAnimatedPropertyTraits_h
+#define DeprecatedSVGAnimatedPropertyTraits_h
+
+#if ENABLE(SVG)
+#include "FloatRect.h"
+#include "PlatformString.h"
+#include "SVGAngle.h"
+#include "SVGLength.h"
+#include "SVGLengthList.h"
+#include "SVGNumberList.h"
+#include "SVGPreserveAspectRatio.h"
+#include "SVGTransformList.h"
+
+namespace WebCore {
+
+template<typename Type>
+struct DeprecatedSVGAnimatedPropertyTraits : public Noncopyable { };
+
+// SVGAnimatedAngle
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<SVGAngle> : public Noncopyable {
+    typedef const SVGAngle& PassType;
+    typedef SVGAngle ReturnType;
+    typedef SVGAngle StoredType;
+
+    static ReturnType null() { return SVGAngle(); }
+    static ReturnType toReturnType(const StoredType& type) { return type; }
+    static String toString(PassType type) { return type.valueAsString(); }
+};
+
+// SVGAnimatedBoolean
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<bool> : public Noncopyable {
+    typedef const bool& PassType;
+    typedef bool ReturnType;
+    typedef bool StoredType;
+
+    static ReturnType null() { return false; }
+    static ReturnType toReturnType(const StoredType& type) { return type; }
+    static String toString(PassType type) { return type ? "true" : "false"; }
+};
+
+// SVGAnimatedEnumeration
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<int> : public Noncopyable {
+    typedef const int& PassType;
+    typedef int ReturnType;
+    typedef int StoredType;
+
+    static ReturnType null() { return 0; }
+    static ReturnType toReturnType(const StoredType& type) { return type; }
+    static String toString(PassType type) { return String::number(type); }
+};
+
+// SVGAnimatedInteger
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<long> : public Noncopyable {
+    typedef const long& PassType;
+    typedef long ReturnType;
+    typedef long StoredType;
+
+    static ReturnType null() { return 0l; }
+    static ReturnType toReturnType(const StoredType& type) { return type; }
+    static String toString(PassType type) { return String::number(type); }
+};
+
+// SVGAnimatedLength
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<SVGLength> : public Noncopyable {
+    typedef const SVGLength& PassType;
+    typedef SVGLength ReturnType;
+    typedef SVGLength StoredType;
+
+    static ReturnType null() { return SVGLength(); }
+    static ReturnType toReturnType(const StoredType& type) { return type; }
+    static String toString(PassType type) { return type.valueAsString(); }
+};
+
+// SVGAnimatedLengthList
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<SVGLengthList*> : public Noncopyable {
+    typedef SVGLengthList* PassType;
+    typedef SVGLengthList* ReturnType;
+    typedef RefPtr<SVGLengthList> StoredType;
+
+    static ReturnType null() { return 0; }
+    static ReturnType toReturnType(const StoredType& type) { return type.get(); }
+    static String toString(PassType type) { return type ? type->valueAsString() : String(); }
+};
+
+// SVGAnimatedNumber
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<float> : public Noncopyable {
+    typedef const float& PassType;
+    typedef float ReturnType;
+    typedef float StoredType;
+
+    static ReturnType null() { return 0.0f; }
+    static ReturnType toReturnType(const StoredType& type) { return type; }
+    static String toString(PassType type) { return String::number(type); }
+};
+
+// SVGAnimatedNumberList
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<SVGNumberList*> : public Noncopyable {
+    typedef SVGNumberList* PassType;
+    typedef SVGNumberList* ReturnType;
+    typedef RefPtr<SVGNumberList> StoredType;
+
+    static ReturnType null() { return 0; }
+    static ReturnType toReturnType(const StoredType& type) { return type.get(); }
+    static String toString(PassType type) { return type ? type->valueAsString() : String(); }
+};
+
+// SVGAnimatedPreserveAspectRatio
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<SVGPreserveAspectRatio> : public Noncopyable {
+    typedef const SVGPreserveAspectRatio& PassType;
+    typedef SVGPreserveAspectRatio ReturnType;
+    typedef SVGPreserveAspectRatio StoredType;
+
+    static ReturnType null() { return SVGPreserveAspectRatio(); }
+    static ReturnType toReturnType(const StoredType& type) { return type; }
+    static String toString(PassType type) { return type.valueAsString(); }
+};
+
+// SVGAnimatedRect
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<FloatRect> : public Noncopyable {
+    typedef const FloatRect& PassType;
+    typedef FloatRect ReturnType;
+    typedef FloatRect StoredType;
+
+    static ReturnType null() { return FloatRect(); }
+    static ReturnType toReturnType(const StoredType& type) { return type; }
+    static String toString(PassType type) { return String::format("%f %f %f %f", type.x(), type.y(), type.width(), type.height()); }
+};
+
+// SVGAnimatedString
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<String> : public Noncopyable {
+    typedef const String& PassType;
+    typedef String ReturnType;
+    typedef String StoredType;
+
+    static ReturnType null() { return String(); }
+    static ReturnType toReturnType(const StoredType& type) { return type; }
+    static String toString(PassType type) { return type; }
+};
+
+// SVGAnimatedTransformList
+template<>
+struct DeprecatedSVGAnimatedPropertyTraits<SVGTransformList*> : public Noncopyable {
+    typedef SVGTransformList* PassType;
+    typedef SVGTransformList* ReturnType;
+    typedef RefPtr<SVGTransformList> StoredType;
+
+    static ReturnType null() { return 0; }
+    static ReturnType toReturnType(const StoredType& type) { return type.get(); }
+    static String toString(PassType type) { return type ? type->valueAsString() : String(); }
+};
+
+}
+
+#endif
+#endif
diff --git a/WebCore/svg/DeprecatedSVGAnimatedTemplate.h b/WebCore/svg/DeprecatedSVGAnimatedTemplate.h
new file mode 100644
index 0000000..8e29f50
--- /dev/null
+++ b/WebCore/svg/DeprecatedSVGAnimatedTemplate.h
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann at kde.org>
+ * Copyright (C) 2004, 2005 Rob Buis <buis at kde.org>
+ *
+ * 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 DeprecatedSVGAnimatedTemplate_h
+#define DeprecatedSVGAnimatedTemplate_h
+
+#if ENABLE(SVG)
+#include "DeprecatedSVGAnimatedPropertyTraits.h"
+#include <wtf/Forward.h>
+#include <wtf/HashMap.h>
+
+namespace WebCore {
+   
+    class SVGAngle;
+    class SVGElement;
+    class SVGLengthList;
+    class SVGNumberList;
+    class SVGPreserveAspectRatio;
+    class SVGTransformList;
+    class QualifiedName;
+
+    struct DeprecatedSVGAnimatedTypeWrapperKey {            
+        // Empty value
+        DeprecatedSVGAnimatedTypeWrapperKey()
+            : element(0)
+            , attributeName(0)
+        { }
+
+        // Deleted value
+        DeprecatedSVGAnimatedTypeWrapperKey(WTF::HashTableDeletedValueType)
+            : element(reinterpret_cast<SVGElement*>(-1))
+        {
+        }
+
+        bool isHashTableDeletedValue() const
+        {
+            return element == reinterpret_cast<SVGElement*>(-1);
+        }
+
+        DeprecatedSVGAnimatedTypeWrapperKey(const SVGElement* _element, const AtomicString& _attributeName)
+            : element(_element)
+            , attributeName(_attributeName.impl())
+        {
+            ASSERT(element);
+            ASSERT(attributeName);
+        }
+
+        bool operator==(const DeprecatedSVGAnimatedTypeWrapperKey& other) const
+        {
+            return element == other.element && attributeName == other.attributeName;
+        }
+
+        const SVGElement* element;
+        AtomicStringImpl* attributeName;
+    };
+    
+    struct DeprecatedSVGAnimatedTypeWrapperKeyHash {
+        static unsigned hash(const DeprecatedSVGAnimatedTypeWrapperKey& key)
+        {
+            return StringImpl::computeHash(reinterpret_cast<const UChar*>(&key), sizeof(DeprecatedSVGAnimatedTypeWrapperKey) / sizeof(UChar));
+        }
+
+        static bool equal(const DeprecatedSVGAnimatedTypeWrapperKey& a, const DeprecatedSVGAnimatedTypeWrapperKey& b)
+        {
+            return a == b;
+        }
+
+        static const bool safeToCompareToEmptyOrDeleted = true;
+    };
+
+    struct DeprecatedSVGAnimatedTypeWrapperKeyHashTraits : WTF::GenericHashTraits<DeprecatedSVGAnimatedTypeWrapperKey> {
+        static const bool emptyValueIsZero = true;
+
+        static void constructDeletedValue(DeprecatedSVGAnimatedTypeWrapperKey& slot)
+        {
+            new (&slot) DeprecatedSVGAnimatedTypeWrapperKey(WTF::HashTableDeletedValue);
+        }
+
+        static bool isDeletedValue(const DeprecatedSVGAnimatedTypeWrapperKey& value)
+        {
+            return value.isHashTableDeletedValue();
+        }
+    };
+ 
+    template<typename AnimatedType>
+    class DeprecatedSVGAnimatedTemplate : public RefCounted<DeprecatedSVGAnimatedTemplate<AnimatedType> > {
+    public:
+        typedef typename DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::PassType PassType;
+        typedef typename DeprecatedSVGAnimatedPropertyTraits<AnimatedType>::ReturnType ReturnType;
+
+        virtual ~DeprecatedSVGAnimatedTemplate() { forgetWrapper(this); }
+
+        virtual ReturnType baseVal() const = 0;
+        virtual void setBaseVal(PassType) = 0;
+
+        virtual ReturnType animVal() const = 0;
+        virtual void setAnimVal(PassType) = 0;
+
+        virtual const QualifiedName& associatedAttributeName() const = 0;
+
+        typedef HashMap<DeprecatedSVGAnimatedTypeWrapperKey, DeprecatedSVGAnimatedTemplate<AnimatedType>*, DeprecatedSVGAnimatedTypeWrapperKeyHash, DeprecatedSVGAnimatedTypeWrapperKeyHashTraits > ElementToWrapperMap;
+        typedef typename ElementToWrapperMap::const_iterator ElementToWrapperMapIterator;
+
+        static ElementToWrapperMap* wrapperCache()
+        {
+            static ElementToWrapperMap* s_wrapperCache = new ElementToWrapperMap;                
+            return s_wrapperCache;
+        }
+
+        static void forgetWrapper(DeprecatedSVGAnimatedTemplate<AnimatedType>* wrapper)
+        {
+            ElementToWrapperMap* cache = wrapperCache();
+            ElementToWrapperMapIterator itr = cache->begin();
+            ElementToWrapperMapIterator end = cache->end();
+            for (; itr != end; ++itr) {
+                if (itr->second == wrapper) {
+                    cache->remove(itr->first);
+                    break;
+                }
+            }
+        }
+    };
+
+    template<typename AnimatedType>
+    class DeprecatedSVGAnimatedProperty;
+
+    template<typename AnimatedType, typename AnimatedTearOff>
+    PassRefPtr<AnimatedTearOff> lookupOrCreateWrapper(SVGElement* element, DeprecatedSVGAnimatedProperty<AnimatedType>& creator, const QualifiedName& attrName)
+    {
+        DeprecatedSVGAnimatedTypeWrapperKey key(element, attrName.localName());
+        RefPtr<AnimatedTearOff> wrapper = static_cast<AnimatedTearOff*>(AnimatedTearOff::wrapperCache()->get(key));
+
+        if (!wrapper) {
+            wrapper = AnimatedTearOff::create(creator, element);
+            AnimatedTearOff::wrapperCache()->set(key, wrapper.get());
+        }
+
+        return wrapper.release();
+    }
+
+    // Common type definitions, to ease IDL generation.
+    typedef DeprecatedSVGAnimatedTemplate<SVGAngle> SVGAnimatedAngle;
+    typedef DeprecatedSVGAnimatedTemplate<bool> SVGAnimatedBoolean;
+    typedef DeprecatedSVGAnimatedTemplate<int> SVGAnimatedEnumeration;
+    typedef DeprecatedSVGAnimatedTemplate<long> SVGAnimatedInteger;
+    typedef DeprecatedSVGAnimatedTemplate<SVGLength> SVGAnimatedLength;
+    typedef DeprecatedSVGAnimatedTemplate<SVGLengthList*> SVGAnimatedLengthList;
+    typedef DeprecatedSVGAnimatedTemplate<float> SVGAnimatedNumber;
+    typedef DeprecatedSVGAnimatedTemplate<SVGNumberList*> SVGAnimatedNumberList; 
+    typedef DeprecatedSVGAnimatedTemplate<SVGPreserveAspectRatio> SVGAnimatedPreserveAspectRatio;
+    typedef DeprecatedSVGAnimatedTemplate<FloatRect> SVGAnimatedRect;
+    typedef DeprecatedSVGAnimatedTemplate<String> SVGAnimatedString;
+    typedef DeprecatedSVGAnimatedTemplate<SVGTransformList*> SVGAnimatedTransformList;
+
+}
+
+#endif
+#endif
diff --git a/WebCore/svg/SVGAnimatedProperty.h b/WebCore/svg/SVGAnimatedProperty.h
deleted file mode 100644
index d9cbeec..0000000
--- a/WebCore/svg/SVGAnimatedProperty.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) 2008 Nikolas Zimmermann <zimmermann at kde.org>
- * Copyright (C) Research In Motion Limited 2009-2010. 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 SVGAnimatedProperty_h
-#define SVGAnimatedProperty_h
-
-#if ENABLE(SVG)
-#include "SVGAnimatedPropertySynchronizer.h"
-#include "SVGAnimatedPropertyTraits.h"
-#include "SVGAnimatedTemplate.h"
-
-namespace WebCore {
-
-template<typename AnimatedType>
-class SVGAnimatedProperty;
-
-template<typename AnimatedType>
-class SVGAnimatedPropertyTearOff : public SVGAnimatedTemplate<AnimatedType> {
-public:
-    typedef typename SVGAnimatedPropertyTraits<AnimatedType>::PassType PassType;
-    typedef typename SVGAnimatedPropertyTraits<AnimatedType>::ReturnType ReturnType;
-
-    typedef SVGAnimatedPropertyTearOff<AnimatedType> Self;
-    typedef SVGAnimatedProperty<AnimatedType> Creator;
-
-    static PassRefPtr<Self> create(Creator& creator, SVGElement* contextElement)
-    {
-        return adoptRef(new Self(creator, contextElement));
-    }
-
-    virtual void setBaseVal(PassType type)
-    {
-        m_creator.setBaseValue(type);
-        m_contextElement->invalidateSVGAttributes();
-    }
-
-    virtual void setAnimVal(PassType type)
-    {
-        m_creator.setValue(type);
-        m_contextElement->invalidateSVGAttributes();
-    }
-
-    virtual ReturnType baseVal() const { return m_creator.baseValue(); }
-    virtual ReturnType animVal() const { return m_creator.value(); }
-    virtual const QualifiedName& associatedAttributeName() const { return m_creator.associatedAttributeName(); }
-
-private:
-    SVGAnimatedPropertyTearOff(Creator& creator, SVGElement* contextElement)
-        : m_creator(creator)
-        , m_contextElement(contextElement)
-    {
-        m_creator.setShouldSynchronize(true);
-    }
-
-    virtual ~SVGAnimatedPropertyTearOff()
-    {
-        m_creator.setShouldSynchronize(false);
-    }
-
-    Creator& m_creator;
-    RefPtr<SVGElement> m_contextElement;
-};
-
-template<typename AnimatedType>
-class SVGAnimatedProperty {
-public:
-    virtual ~SVGAnimatedProperty() { }
-
-    typedef typename SVGAnimatedPropertyTraits<AnimatedType>::PassType PassType;
-    typedef typename SVGAnimatedPropertyTraits<AnimatedType>::ReturnType ReturnType;
-    typedef typename SVGAnimatedPropertyTraits<AnimatedType>::StoredType StoredType;
-
-    SVGAnimatedProperty()
-        : m_value(SVGAnimatedPropertyTraits<AnimatedType>::null())
-        , m_shouldSynchronize(false)
-    {
-    }
-
-    template<typename ConstructorParameterOne>
-    SVGAnimatedProperty(const ConstructorParameterOne& value1)
-        : m_value(value1)
-        , m_shouldSynchronize(false)
-    {
-    }
-
-    template<typename ConstructorParameterOne, typename ConstructorParameterTwo>
-    SVGAnimatedProperty(const ConstructorParameterOne& value1, const ConstructorParameterTwo& value2)
-        : m_value(value1, value2)
-        , m_shouldSynchronize(false)
-    {
-    }
-
-    ReturnType value() const { return SVGAnimatedPropertyTraits<AnimatedType>::toReturnType(m_value); }
-    ReturnType baseValue() const { return SVGAnimatedPropertyTraits<AnimatedType>::toReturnType(m_value); }
-
-    void setValue(PassType type) { m_value = type; }
-    void setBaseValue(PassType type) { m_value = type; }
-
-    bool shouldSynchronize() const { return m_shouldSynchronize; }
-    void setShouldSynchronize(bool value) { m_shouldSynchronize = value; }
-
-    virtual const QualifiedName& associatedAttributeName() const = 0;
-
-protected:
-    StoredType m_value;
-    bool m_shouldSynchronize;
-};
-
-};
-
-// Helper macro used within DECLARE_ANIMATED_PROPERTY below
-#define DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, AnimatedType, UpperProperty) \
-class SVGAnimatedProperty##UpperProperty : public SVGAnimatedProperty<AnimatedType> { \
-public: \
-    SVGAnimatedProperty##UpperProperty() \
-        : SVGAnimatedProperty<AnimatedType>() \
-    { \
-    } \
-    \
-    template<typename ConstructorParameterOne> \
-    SVGAnimatedProperty##UpperProperty(const ConstructorParameterOne& value1) \
-        : SVGAnimatedProperty<AnimatedType>(value1) \
-    { \
-    } \
-    \
-    template<typename ConstructorParameterOne, typename ConstructorParameterTwo> \
-    SVGAnimatedProperty##UpperProperty(const ConstructorParameterOne& value1, const ConstructorParameterTwo& value2) \
-        : SVGAnimatedProperty<AnimatedType>(value1, value2) \
-    { \
-    } \
-    \
-    void synchronize(SVGElement* contextElement) \
-    { \
-        ASSERT(m_shouldSynchronize); \
-        AtomicString value(SVGAnimatedPropertyTraits<AnimatedType>::toString(baseValue())); \
-        SVGAnimatedPropertySynchronizer<IsDerivedFromSVGElement<OwnerType>::value>::synchronize(contextElement, DOMAttribute, value); \
-    } \
-    \
-    virtual const QualifiedName& associatedAttributeName() const \
-    { \
-        return DOMAttribute; \
-    } \
-}
-
-// Helper macro shared by DECLARE_ANIMATED_PROPERTY / DECLARE_ANIMATED_PROPERTY_MULTIPLE_WRAPPERS
-#define DECLARE_ANIMATED_PROPERTY_SHARED(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, AnimatedType, UpperProperty, LowerProperty) \
-private: \
-    typedef SVGAnimatedPropertyTearOff<AnimatedType> SVGAnimatedPropertyTearOff##UpperProperty; \
-    DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, AnimatedType, UpperProperty); \
-    SVGAnimatedProperty##UpperProperty m_##LowerProperty; \
-    \
-public: \
-    SVGAnimatedPropertyTraits<AnimatedType>::ReturnType LowerProperty() const \
-    { \
-        return m_##LowerProperty.value(); \
-    } \
-    \
-    SVGAnimatedPropertyTraits<AnimatedType>::ReturnType LowerProperty##BaseValue() const \
-    { \
-        return m_##LowerProperty.baseValue(); \
-    } \
-    \
-    void set##UpperProperty(SVGAnimatedPropertyTraits<AnimatedType>::PassType type) \
-    { \
-        m_##LowerProperty.setValue(type); \
-        SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
-        contextElement->invalidateSVGAttributes(); \
-    } \
-    \
-    void set##UpperProperty##BaseValue(SVGAnimatedPropertyTraits<AnimatedType>::PassType type) \
-    { \
-        m_##LowerProperty.setBaseValue(type); \
-        SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
-        contextElement->invalidateSVGAttributes(); \
-    } \
-    \
-    void synchronize##UpperProperty() \
-    { \
-        if (!m_##LowerProperty.shouldSynchronize()) \
-            return; \
-        SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
-        m_##LowerProperty.synchronize(contextElement); \
-    } \
-    \
-    PassRefPtr<SVGAnimatedPropertyTearOff##UpperProperty> LowerProperty##Animated() \
-    { \
-        SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
-        return lookupOrCreateWrapper<AnimatedType, SVGAnimatedPropertyTearOff##UpperProperty>(contextElement, m_##LowerProperty, DOMAttribute); \
-    }
-
-// Used for SVG DOM properties that map exactly to one XML DOM attribute
-#define DECLARE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, AnimatedType, UpperProperty, LowerProperty) \
-DECLARE_ANIMATED_PROPERTY_SHARED(OwnerType, DOMAttribute, DOMAttribute.localName(), AnimatedType, UpperProperty, LowerProperty)
-
-// Used for the rare case multiple SVG DOM properties that map to the same XML dom attribute
-#define DECLARE_ANIMATED_PROPERTY_MULTIPLE_WRAPPERS(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, AnimatedType, UpperProperty, LowerProperty) \
-DECLARE_ANIMATED_PROPERTY_SHARED(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, AnimatedType, UpperProperty, LowerProperty)
-
-#endif
-#endif
diff --git a/WebCore/svg/SVGAnimatedPropertySynchronizer.h b/WebCore/svg/SVGAnimatedPropertySynchronizer.h
deleted file mode 100644
index 55f77b1..0000000
--- a/WebCore/svg/SVGAnimatedPropertySynchronizer.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) Research In Motion Limited 2010. 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 SVGAnimatedPropertySynchronizer_h
-#define SVGAnimatedPropertySynchronizer_h
-
-#include "SVGAnimatedPropertyTraits.h"
-
-#if ENABLE(SVG)
-namespace WebCore {
-
-class SVGElement;
-
-// GetOwnerElementForType implementation
-template<typename OwnerType, bool isDerivedFromSVGElement>
-struct GetOwnerElementForType;
-
-template<typename OwnerType>
-struct GetOwnerElementForType<OwnerType, true> : public Noncopyable {
-    static SVGElement* ownerElement(OwnerType* type)
-    {
-        return type;
-    }
-};
-
-template<typename OwnerType>
-struct GetOwnerElementForType<OwnerType, false> : public Noncopyable {    
-    static SVGElement* ownerElement(OwnerType* type)
-    {
-        SVGElement* context = type->contextElement();
-        ASSERT(context);
-        return context;
-    }
-};
-
-// IsDerivedFromSVGElement implementation
-template<typename OwnerType>
-struct IsDerivedFromSVGElement : public Noncopyable {
-    static const bool value = true;
-};
-
-class SVGViewSpec;
-template<>
-struct IsDerivedFromSVGElement<SVGViewSpec> : public Noncopyable {
-    static const bool value = false;
-};
-
-// Helper template used for synchronizing SVG <-> XML properties
-template<bool isDerivedFromSVGElement>
-struct SVGAnimatedPropertySynchronizer {
-    static void synchronize(SVGElement*, const QualifiedName&, const AtomicString&);
-};
-
-template<>
-struct SVGAnimatedPropertySynchronizer<true> {
-    static void synchronize(SVGElement* ownerElement, const QualifiedName& attrName, const AtomicString& value)
-    {
-        NamedNodeMap* namedAttrMap = ownerElement->attributes(false); 
-        Attribute* old = namedAttrMap->getAttributeItem(attrName);
-        if (old && value.isNull()) 
-            namedAttrMap->removeAttribute(old->name()); 
-        else if (!old && !value.isNull()) 
-            namedAttrMap->addAttribute(ownerElement->createAttribute(attrName, value));
-        else if (old && !value.isNull()) 
-            old->setValue(value); 
-    }
-};
-
-template<>
-struct SVGAnimatedPropertySynchronizer<false> {
-    static void synchronize(SVGElement*, const QualifiedName&, const AtomicString&)
-    {
-        // no-op, for types not inheriting from Element, thus nothing to synchronize
-    }
-};
-
-};
-
-#endif
-#endif
diff --git a/WebCore/svg/SVGAnimatedPropertyTraits.h b/WebCore/svg/SVGAnimatedPropertyTraits.h
deleted file mode 100644
index 5cc69a9..0000000
--- a/WebCore/svg/SVGAnimatedPropertyTraits.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (C) Research In Motion Limited 2010. All rights reserved.
- * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann at kde.org>
- *
- * 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 SVGAnimatedPropertyTraits_h
-#define SVGAnimatedPropertyTraits_h
-
-#if ENABLE(SVG)
-#include "FloatRect.h"
-#include "PlatformString.h"
-#include "SVGAngle.h"
-#include "SVGLength.h"
-#include "SVGLengthList.h"
-#include "SVGNumberList.h"
-#include "SVGPreserveAspectRatio.h"
-#include "SVGTransformList.h"
-
-namespace WebCore {
-
-template<typename Type>
-struct SVGAnimatedPropertyTraits : public Noncopyable { };
-
-// SVGAnimatedAngle
-template<>
-struct SVGAnimatedPropertyTraits<SVGAngle> : public Noncopyable {
-    typedef const SVGAngle& PassType;
-    typedef SVGAngle ReturnType;
-    typedef SVGAngle StoredType;
-
-    static ReturnType null() { return SVGAngle(); }
-    static ReturnType toReturnType(const StoredType& type) { return type; }
-    static String toString(PassType type) { return type.valueAsString(); }
-};
-
-// SVGAnimatedBoolean
-template<>
-struct SVGAnimatedPropertyTraits<bool> : public Noncopyable {
-    typedef const bool& PassType;
-    typedef bool ReturnType;
-    typedef bool StoredType;
-
-    static ReturnType null() { return false; }
-    static ReturnType toReturnType(const StoredType& type) { return type; }
-    static String toString(PassType type) { return type ? "true" : "false"; }
-};
-
-// SVGAnimatedEnumeration
-template<>
-struct SVGAnimatedPropertyTraits<int> : public Noncopyable {
-    typedef const int& PassType;
-    typedef int ReturnType;
-    typedef int StoredType;
-
-    static ReturnType null() { return 0; }
-    static ReturnType toReturnType(const StoredType& type) { return type; }
-    static String toString(PassType type) { return String::number(type); }
-};
-
-// SVGAnimatedInteger
-template<>
-struct SVGAnimatedPropertyTraits<long> : public Noncopyable {
-    typedef const long& PassType;
-    typedef long ReturnType;
-    typedef long StoredType;
-
-    static ReturnType null() { return 0l; }
-    static ReturnType toReturnType(const StoredType& type) { return type; }
-    static String toString(PassType type) { return String::number(type); }
-};
-
-// SVGAnimatedLength
-template<>
-struct SVGAnimatedPropertyTraits<SVGLength> : public Noncopyable {
-    typedef const SVGLength& PassType;
-    typedef SVGLength ReturnType;
-    typedef SVGLength StoredType;
-
-    static ReturnType null() { return SVGLength(); }
-    static ReturnType toReturnType(const StoredType& type) { return type; }
-    static String toString(PassType type) { return type.valueAsString(); }
-};
-
-// SVGAnimatedLengthList
-template<>
-struct SVGAnimatedPropertyTraits<SVGLengthList*> : public Noncopyable {
-    typedef SVGLengthList* PassType;
-    typedef SVGLengthList* ReturnType;
-    typedef RefPtr<SVGLengthList> StoredType;
-
-    static ReturnType null() { return 0; }
-    static ReturnType toReturnType(const StoredType& type) { return type.get(); }
-    static String toString(PassType type) { return type ? type->valueAsString() : String(); }
-};
-
-// SVGAnimatedNumber
-template<>
-struct SVGAnimatedPropertyTraits<float> : public Noncopyable {
-    typedef const float& PassType;
-    typedef float ReturnType;
-    typedef float StoredType;
-
-    static ReturnType null() { return 0.0f; }
-    static ReturnType toReturnType(const StoredType& type) { return type; }
-    static String toString(PassType type) { return String::number(type); }
-};
-
-// SVGAnimatedNumberList
-template<>
-struct SVGAnimatedPropertyTraits<SVGNumberList*> : public Noncopyable {
-    typedef SVGNumberList* PassType;
-    typedef SVGNumberList* ReturnType;
-    typedef RefPtr<SVGNumberList> StoredType;
-
-    static ReturnType null() { return 0; }
-    static ReturnType toReturnType(const StoredType& type) { return type.get(); }
-    static String toString(PassType type) { return type ? type->valueAsString() : String(); }
-};
-
-// SVGAnimatedPreserveAspectRatio
-template<>
-struct SVGAnimatedPropertyTraits<SVGPreserveAspectRatio> : public Noncopyable {
-    typedef const SVGPreserveAspectRatio& PassType;
-    typedef SVGPreserveAspectRatio ReturnType;
-    typedef SVGPreserveAspectRatio StoredType;
-
-    static ReturnType null() { return SVGPreserveAspectRatio(); }
-    static ReturnType toReturnType(const StoredType& type) { return type; }
-    static String toString(PassType type) { return type.valueAsString(); }
-};
-
-// SVGAnimatedRect
-template<>
-struct SVGAnimatedPropertyTraits<FloatRect> : public Noncopyable {
-    typedef const FloatRect& PassType;
-    typedef FloatRect ReturnType;
-    typedef FloatRect StoredType;
-
-    static ReturnType null() { return FloatRect(); }
-    static ReturnType toReturnType(const StoredType& type) { return type; }
-    static String toString(PassType type) { return String::format("%f %f %f %f", type.x(), type.y(), type.width(), type.height()); }
-};
-
-// SVGAnimatedString
-template<>
-struct SVGAnimatedPropertyTraits<String> : public Noncopyable {
-    typedef const String& PassType;
-    typedef String ReturnType;
-    typedef String StoredType;
-
-    static ReturnType null() { return String(); }
-    static ReturnType toReturnType(const StoredType& type) { return type; }
-    static String toString(PassType type) { return type; }
-};
-
-// SVGAnimatedTransformList
-template<>
-struct SVGAnimatedPropertyTraits<SVGTransformList*> : public Noncopyable {
-    typedef SVGTransformList* PassType;
-    typedef SVGTransformList* ReturnType;
-    typedef RefPtr<SVGTransformList> StoredType;
-
-    static ReturnType null() { return 0; }
-    static ReturnType toReturnType(const StoredType& type) { return type.get(); }
-    static String toString(PassType type) { return type ? type->valueAsString() : String(); }
-};
-
-}
-
-#endif
-#endif
diff --git a/WebCore/svg/SVGAnimatedTemplate.h b/WebCore/svg/SVGAnimatedTemplate.h
deleted file mode 100644
index 307c66a..0000000
--- a/WebCore/svg/SVGAnimatedTemplate.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann at kde.org>
- * Copyright (C) 2004, 2005 Rob Buis <buis at kde.org>
- *
- * 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 SVGAnimatedTemplate_h
-#define SVGAnimatedTemplate_h
-
-#if ENABLE(SVG)
-#include "SVGAnimatedPropertyTraits.h"
-#include <wtf/Forward.h>
-#include <wtf/HashMap.h>
-
-namespace WebCore {
-   
-    class SVGAngle;
-    class SVGElement;
-    class SVGLengthList;
-    class SVGNumberList;
-    class SVGPreserveAspectRatio;
-    class SVGTransformList;
-    class QualifiedName;
-
-    struct SVGAnimatedTypeWrapperKey {            
-        // Empty value
-        SVGAnimatedTypeWrapperKey()
-            : element(0)
-            , attributeName(0)
-        { }
-
-        // Deleted value
-        SVGAnimatedTypeWrapperKey(WTF::HashTableDeletedValueType)
-            : element(reinterpret_cast<SVGElement*>(-1))
-        {
-        }
-
-        bool isHashTableDeletedValue() const
-        {
-            return element == reinterpret_cast<SVGElement*>(-1);
-        }
-
-        SVGAnimatedTypeWrapperKey(const SVGElement* _element, const AtomicString& _attributeName)
-            : element(_element)
-            , attributeName(_attributeName.impl())
-        {
-            ASSERT(element);
-            ASSERT(attributeName);
-        }
-
-        bool operator==(const SVGAnimatedTypeWrapperKey& other) const
-        {
-            return element == other.element && attributeName == other.attributeName;
-        }
-
-        const SVGElement* element;
-        AtomicStringImpl* attributeName;
-    };
-    
-    struct SVGAnimatedTypeWrapperKeyHash {
-        static unsigned hash(const SVGAnimatedTypeWrapperKey& key)
-        {
-            return StringImpl::computeHash(reinterpret_cast<const UChar*>(&key), sizeof(SVGAnimatedTypeWrapperKey) / sizeof(UChar));
-        }
-
-        static bool equal(const SVGAnimatedTypeWrapperKey& a, const SVGAnimatedTypeWrapperKey& b)
-        {
-            return a == b;
-        }
-
-        static const bool safeToCompareToEmptyOrDeleted = true;
-    };
-
-    struct SVGAnimatedTypeWrapperKeyHashTraits : WTF::GenericHashTraits<SVGAnimatedTypeWrapperKey> {
-        static const bool emptyValueIsZero = true;
-
-        static void constructDeletedValue(SVGAnimatedTypeWrapperKey& slot)
-        {
-            new (&slot) SVGAnimatedTypeWrapperKey(WTF::HashTableDeletedValue);
-        }
-
-        static bool isDeletedValue(const SVGAnimatedTypeWrapperKey& value)
-        {
-            return value.isHashTableDeletedValue();
-        }
-    };
- 
-    template<typename AnimatedType>
-    class SVGAnimatedTemplate : public RefCounted<SVGAnimatedTemplate<AnimatedType> > {
-    public:
-        typedef typename SVGAnimatedPropertyTraits<AnimatedType>::PassType PassType;
-        typedef typename SVGAnimatedPropertyTraits<AnimatedType>::ReturnType ReturnType;
-
-        virtual ~SVGAnimatedTemplate() { forgetWrapper(this); }
-
-        virtual ReturnType baseVal() const = 0;
-        virtual void setBaseVal(PassType) = 0;
-
-        virtual ReturnType animVal() const = 0;
-        virtual void setAnimVal(PassType) = 0;
-
-        virtual const QualifiedName& associatedAttributeName() const = 0;
-
-        typedef HashMap<SVGAnimatedTypeWrapperKey, SVGAnimatedTemplate<AnimatedType>*, SVGAnimatedTypeWrapperKeyHash, SVGAnimatedTypeWrapperKeyHashTraits > ElementToWrapperMap;
-        typedef typename ElementToWrapperMap::const_iterator ElementToWrapperMapIterator;
-
-        static ElementToWrapperMap* wrapperCache()
-        {
-            static ElementToWrapperMap* s_wrapperCache = new ElementToWrapperMap;                
-            return s_wrapperCache;
-        }
-
-        static void forgetWrapper(SVGAnimatedTemplate<AnimatedType>* wrapper)
-        {
-            ElementToWrapperMap* cache = wrapperCache();
-            ElementToWrapperMapIterator itr = cache->begin();
-            ElementToWrapperMapIterator end = cache->end();
-            for (; itr != end; ++itr) {
-                if (itr->second == wrapper) {
-                    cache->remove(itr->first);
-                    break;
-                }
-            }
-        }
-    };
-
-    template<typename AnimatedType>
-    class SVGAnimatedProperty;
-
-    template<typename AnimatedType, typename AnimatedTearOff>
-    PassRefPtr<AnimatedTearOff> lookupOrCreateWrapper(SVGElement* element, SVGAnimatedProperty<AnimatedType>& creator, const QualifiedName& attrName)
-    {
-        SVGAnimatedTypeWrapperKey key(element, attrName.localName());
-        RefPtr<AnimatedTearOff> wrapper = static_cast<AnimatedTearOff*>(AnimatedTearOff::wrapperCache()->get(key));
-
-        if (!wrapper) {
-            wrapper = AnimatedTearOff::create(creator, element);
-            AnimatedTearOff::wrapperCache()->set(key, wrapper.get());
-        }
-
-        return wrapper.release();
-    }
-
-    // Common type definitions, to ease IDL generation.
-    typedef SVGAnimatedTemplate<SVGAngle> SVGAnimatedAngle;
-    typedef SVGAnimatedTemplate<bool> SVGAnimatedBoolean;
-    typedef SVGAnimatedTemplate<int> SVGAnimatedEnumeration;
-    typedef SVGAnimatedTemplate<long> SVGAnimatedInteger;
-    typedef SVGAnimatedTemplate<SVGLength> SVGAnimatedLength;
-    typedef SVGAnimatedTemplate<SVGLengthList*> SVGAnimatedLengthList;
-    typedef SVGAnimatedTemplate<float> SVGAnimatedNumber;
-    typedef SVGAnimatedTemplate<SVGNumberList*> SVGAnimatedNumberList; 
-    typedef SVGAnimatedTemplate<SVGPreserveAspectRatio> SVGAnimatedPreserveAspectRatio;
-    typedef SVGAnimatedTemplate<FloatRect> SVGAnimatedRect;
-    typedef SVGAnimatedTemplate<String> SVGAnimatedString;
-    typedef SVGAnimatedTemplate<SVGTransformList*> SVGAnimatedTransformList;
-
-}
-
-#endif
-#endif
diff --git a/WebCore/svg/SVGElement.h b/WebCore/svg/SVGElement.h
index fb28279..5681284 100644
--- a/WebCore/svg/SVGElement.h
+++ b/WebCore/svg/SVGElement.h
@@ -110,7 +110,7 @@ namespace WebCore {
 }
 
 // This file needs to be included after the SVGElement declaration
-#include "SVGAnimatedProperty.h"
+#include "DeprecatedSVGAnimatedProperty.h" // NOLINT
 
 #endif
 #endif
diff --git a/WebCore/svg/SVGExternalResourcesRequired.h b/WebCore/svg/SVGExternalResourcesRequired.h
index 6322538..5f0d8e9 100644
--- a/WebCore/svg/SVGExternalResourcesRequired.h
+++ b/WebCore/svg/SVGExternalResourcesRequired.h
@@ -42,7 +42,7 @@ namespace WebCore {
         bool isKnownAttribute(const QualifiedName&);
 
     protected:
-        virtual void setExternalResourcesRequiredBaseValue(SVGAnimatedPropertyTraits<bool>::PassType) = 0;
+        virtual void setExternalResourcesRequiredBaseValue(DeprecatedSVGAnimatedPropertyTraits<bool>::PassType) = 0;
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGFitToViewBox.h b/WebCore/svg/SVGFitToViewBox.h
index d6551f5..ecc89bb 100644
--- a/WebCore/svg/SVGFitToViewBox.h
+++ b/WebCore/svg/SVGFitToViewBox.h
@@ -39,8 +39,8 @@ public:
     bool parseMappedAttribute(Document*, Attribute*);
     bool isKnownAttribute(const QualifiedName&);
 
-    virtual void setViewBoxBaseValue(SVGAnimatedPropertyTraits<FloatRect>::PassType) = 0;
-    virtual void setPreserveAspectRatioBaseValue(SVGAnimatedPropertyTraits<SVGPreserveAspectRatio>::PassType) = 0;
+    virtual void setViewBoxBaseValue(DeprecatedSVGAnimatedPropertyTraits<FloatRect>::PassType) = 0;
+    virtual void setPreserveAspectRatioBaseValue(DeprecatedSVGAnimatedPropertyTraits<SVGPreserveAspectRatio>::PassType) = 0;
 
 private:
     bool parseViewBox(Document*, const String&, FloatRect&);
diff --git a/WebCore/svg/SVGURIReference.h b/WebCore/svg/SVGURIReference.h
index 92a93a9..096f5a5 100644
--- a/WebCore/svg/SVGURIReference.h
+++ b/WebCore/svg/SVGURIReference.h
@@ -39,7 +39,7 @@ namespace WebCore {
         static String getTarget(const String& url);
 
     protected:
-        virtual void setHrefBaseValue(SVGAnimatedPropertyTraits<String>::PassType) = 0;
+        virtual void setHrefBaseValue(DeprecatedSVGAnimatedPropertyTraits<String>::PassType) = 0;
     };
 
 } // namespace WebCore
diff --git a/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h b/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h
new file mode 100644
index 0000000..476f1fd
--- /dev/null
+++ b/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) Research In Motion Limited 2010. 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 SVGAnimatedPropertySynchronizer_h
+#define SVGAnimatedPropertySynchronizer_h
+
+#include "DeprecatedSVGAnimatedPropertyTraits.h"
+
+#if ENABLE(SVG)
+namespace WebCore {
+
+class SVGElement;
+
+// GetOwnerElementForType implementation
+template<typename OwnerType, bool isDerivedFromSVGElement>
+struct GetOwnerElementForType;
+
+template<typename OwnerType>
+struct GetOwnerElementForType<OwnerType, true> : public Noncopyable {
+    static SVGElement* ownerElement(OwnerType* type)
+    {
+        return type;
+    }
+};
+
+template<typename OwnerType>
+struct GetOwnerElementForType<OwnerType, false> : public Noncopyable {    
+    static SVGElement* ownerElement(OwnerType* type)
+    {
+        SVGElement* context = type->contextElement();
+        ASSERT(context);
+        return context;
+    }
+};
+
+// IsDerivedFromSVGElement implementation
+template<typename OwnerType>
+struct IsDerivedFromSVGElement : public Noncopyable {
+    static const bool value = true;
+};
+
+class SVGViewSpec;
+template<>
+struct IsDerivedFromSVGElement<SVGViewSpec> : public Noncopyable {
+    static const bool value = false;
+};
+
+// Helper template used for synchronizing SVG <-> XML properties
+template<bool isDerivedFromSVGElement>
+struct SVGAnimatedPropertySynchronizer {
+    static void synchronize(SVGElement*, const QualifiedName&, const AtomicString&);
+};
+
+template<>
+struct SVGAnimatedPropertySynchronizer<true> {
+    static void synchronize(SVGElement* ownerElement, const QualifiedName& attrName, const AtomicString& value)
+    {
+        NamedNodeMap* namedAttrMap = ownerElement->attributes(false); 
+        Attribute* old = namedAttrMap->getAttributeItem(attrName);
+        if (old && value.isNull()) 
+            namedAttrMap->removeAttribute(old->name()); 
+        else if (!old && !value.isNull()) 
+            namedAttrMap->addAttribute(ownerElement->createAttribute(attrName, value));
+        else if (old && !value.isNull()) 
+            old->setValue(value); 
+    }
+};
+
+template<>
+struct SVGAnimatedPropertySynchronizer<false> {
+    static void synchronize(SVGElement*, const QualifiedName&, const AtomicString&)
+    {
+        // no-op, for types not inheriting from Element, thus nothing to synchronize
+    }
+};
+
+};
+
+#endif
+#endif

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list