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

zimmermann at webkit.org zimmermann at webkit.org
Wed Dec 22 17:57:35 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit e50a8b17679e47472a20c5d1bc3997ab5a3d62f7
Author: zimmermann at webkit.org <zimmermann at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Dec 3 09:44:21 2010 +0000

    2010-12-03  Nikolas Zimmermann  <nzimmermann at rim.com>
    
            Reviewed by Dirk Schulze.
    
            Finish splitting DECLARE_ANIMATED_PROPERTY* in DECLARE/DEFINE parts for the remaining SVGAnimated* types
            https://bugs.webkit.org/show_bug.cgi?id=50440
    
            Continuing the work on bug 42025: Introduce (DECLARE|DEFINE)_ANIMATED_(ANGLE|BOOLEAN|INTEGER|PRESERVEASPECTRATIO|RECT).
            The animated property declaration lives in the header, the definition in the cpp file, to avoid the dependency on SVGNames.h in all headers.
    
            No functional changes, thus no new tests.
    
            * svg/SVGAElement.cpp:
            * svg/SVGAElement.h:
            * svg/SVGAnimatedAngle.h:
            * svg/SVGAnimatedBoolean.h:
            * svg/SVGAnimatedInteger.h:
            * svg/SVGAnimatedPreserveAspectRatio.h:
            * svg/SVGAnimatedRect.h:
            * svg/SVGAnimationElement.cpp:
            * svg/SVGAnimationElement.h:
            (WebCore::SVGAnimationElement::calculateDistance):
            (WebCore::SVGAnimationElement::animationPath):
            * svg/SVGCircleElement.cpp:
            * svg/SVGCircleElement.h:
            * svg/SVGClipPathElement.cpp:
            * svg/SVGClipPathElement.h:
            * svg/SVGCursorElement.cpp:
            * svg/SVGCursorElement.h:
            * svg/SVGDefsElement.cpp:
            * svg/SVGDefsElement.h:
            * svg/SVGEllipseElement.cpp:
            * svg/SVGEllipseElement.h:
            * svg/SVGFEConvolveMatrixElement.cpp:
            * svg/SVGFEConvolveMatrixElement.h:
            * svg/SVGFEImageElement.cpp:
            * svg/SVGFEImageElement.h:
            * svg/SVGFETurbulenceElement.cpp:
            * svg/SVGFETurbulenceElement.h:
            * svg/SVGFilterElement.cpp:
            * svg/SVGFilterElement.h:
            * svg/SVGFilterPrimitiveStandardAttributes.h:
            * svg/SVGFontElement.cpp:
            (WebCore::SVGFontElement::firstMissingGlyphElement):
            (WebCore::SVGFontElement::ensureGlyphCache):
            * svg/SVGFontElement.h:
            * svg/SVGForeignObjectElement.cpp:
            * svg/SVGForeignObjectElement.h:
            * svg/SVGGElement.cpp:
            * svg/SVGGElement.h:
            (WebCore::SVGGElement::isShadowTreeContainerElement):
            (WebCore::SVGGElement::isValid):
            * svg/SVGGradientElement.cpp:
            * svg/SVGGradientElement.h:
            * svg/SVGImageElement.cpp:
            * svg/SVGImageElement.h:
            * svg/SVGLineElement.cpp:
            * svg/SVGLineElement.h:
            * svg/SVGLinearGradientElement.h:
            * svg/SVGMPathElement.cpp:
            * svg/SVGMPathElement.h:
            * svg/SVGMarkerElement.cpp:
            * svg/SVGMarkerElement.h:
            * svg/SVGMaskElement.cpp:
            * svg/SVGMaskElement.h:
            * svg/SVGPathElement.cpp:
            * svg/SVGPathElement.h:
            * svg/SVGPatternElement.cpp:
            * svg/SVGPatternElement.h:
            * svg/SVGPolyElement.cpp:
            * svg/SVGPolyElement.h:
            * svg/SVGRadialGradientElement.h:
            * svg/SVGRectElement.cpp:
            * svg/SVGRectElement.h:
            * svg/SVGSVGElement.cpp:
            (WebCore::SVGSVGElement::contentScriptType):
            (WebCore::SVGSVGElement::contentStyleType):
            (WebCore::SVGSVGElement::parseMappedAttribute):
            * svg/SVGSVGElement.h:
            * svg/SVGScriptElement.cpp:
            * svg/SVGScriptElement.h:
            * svg/SVGSwitchElement.cpp:
            * svg/SVGSwitchElement.h:
            (WebCore::SVGSwitchElement::isValid):
            * svg/SVGSymbolElement.cpp:
            * svg/SVGSymbolElement.h:
            (WebCore::SVGSymbolElement::rendererIsNeeded):
            * svg/SVGTextContentElement.cpp:
            * svg/SVGTextContentElement.h:
            * svg/SVGUseElement.cpp:
            * svg/SVGUseElement.h:
            * svg/SVGViewElement.cpp:
            * svg/SVGViewElement.h:
            (WebCore::SVGViewElement::viewTarget):
            (WebCore::SVGViewElement::rendererIsNeeded):
            * svg/SVGViewSpec.cpp:
            * svg/SVGViewSpec.h:
            (WebCore::SVGViewSpec::transform):
            (WebCore::SVGViewSpec::viewTargetString):
            (WebCore::SVGViewSpec::contextElement):
            * svg/properties/SVGAnimatedPropertyMacros.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73254 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 22d5160..084e6a5 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,105 @@
+2010-12-03  Nikolas Zimmermann  <nzimmermann at rim.com>
+
+        Reviewed by Dirk Schulze.
+
+        Finish splitting DECLARE_ANIMATED_PROPERTY* in DECLARE/DEFINE parts for the remaining SVGAnimated* types
+        https://bugs.webkit.org/show_bug.cgi?id=50440
+
+        Continuing the work on bug 42025: Introduce (DECLARE|DEFINE)_ANIMATED_(ANGLE|BOOLEAN|INTEGER|PRESERVEASPECTRATIO|RECT).
+        The animated property declaration lives in the header, the definition in the cpp file, to avoid the dependency on SVGNames.h in all headers.
+
+        No functional changes, thus no new tests.
+
+        * svg/SVGAElement.cpp:
+        * svg/SVGAElement.h:
+        * svg/SVGAnimatedAngle.h:
+        * svg/SVGAnimatedBoolean.h:
+        * svg/SVGAnimatedInteger.h:
+        * svg/SVGAnimatedPreserveAspectRatio.h:
+        * svg/SVGAnimatedRect.h:
+        * svg/SVGAnimationElement.cpp:
+        * svg/SVGAnimationElement.h:
+        (WebCore::SVGAnimationElement::calculateDistance):
+        (WebCore::SVGAnimationElement::animationPath):
+        * svg/SVGCircleElement.cpp:
+        * svg/SVGCircleElement.h:
+        * svg/SVGClipPathElement.cpp:
+        * svg/SVGClipPathElement.h:
+        * svg/SVGCursorElement.cpp:
+        * svg/SVGCursorElement.h:
+        * svg/SVGDefsElement.cpp:
+        * svg/SVGDefsElement.h:
+        * svg/SVGEllipseElement.cpp:
+        * svg/SVGEllipseElement.h:
+        * svg/SVGFEConvolveMatrixElement.cpp:
+        * svg/SVGFEConvolveMatrixElement.h:
+        * svg/SVGFEImageElement.cpp:
+        * svg/SVGFEImageElement.h:
+        * svg/SVGFETurbulenceElement.cpp:
+        * svg/SVGFETurbulenceElement.h:
+        * svg/SVGFilterElement.cpp:
+        * svg/SVGFilterElement.h:
+        * svg/SVGFilterPrimitiveStandardAttributes.h:
+        * svg/SVGFontElement.cpp:
+        (WebCore::SVGFontElement::firstMissingGlyphElement):
+        (WebCore::SVGFontElement::ensureGlyphCache):
+        * svg/SVGFontElement.h:
+        * svg/SVGForeignObjectElement.cpp:
+        * svg/SVGForeignObjectElement.h:
+        * svg/SVGGElement.cpp:
+        * svg/SVGGElement.h:
+        (WebCore::SVGGElement::isShadowTreeContainerElement):
+        (WebCore::SVGGElement::isValid):
+        * svg/SVGGradientElement.cpp:
+        * svg/SVGGradientElement.h:
+        * svg/SVGImageElement.cpp:
+        * svg/SVGImageElement.h:
+        * svg/SVGLineElement.cpp:
+        * svg/SVGLineElement.h:
+        * svg/SVGLinearGradientElement.h:
+        * svg/SVGMPathElement.cpp:
+        * svg/SVGMPathElement.h:
+        * svg/SVGMarkerElement.cpp:
+        * svg/SVGMarkerElement.h:
+        * svg/SVGMaskElement.cpp:
+        * svg/SVGMaskElement.h:
+        * svg/SVGPathElement.cpp:
+        * svg/SVGPathElement.h:
+        * svg/SVGPatternElement.cpp:
+        * svg/SVGPatternElement.h:
+        * svg/SVGPolyElement.cpp:
+        * svg/SVGPolyElement.h:
+        * svg/SVGRadialGradientElement.h:
+        * svg/SVGRectElement.cpp:
+        * svg/SVGRectElement.h:
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::contentScriptType):
+        (WebCore::SVGSVGElement::contentStyleType):
+        (WebCore::SVGSVGElement::parseMappedAttribute):
+        * svg/SVGSVGElement.h:
+        * svg/SVGScriptElement.cpp:
+        * svg/SVGScriptElement.h:
+        * svg/SVGSwitchElement.cpp:
+        * svg/SVGSwitchElement.h:
+        (WebCore::SVGSwitchElement::isValid):
+        * svg/SVGSymbolElement.cpp:
+        * svg/SVGSymbolElement.h:
+        (WebCore::SVGSymbolElement::rendererIsNeeded):
+        * svg/SVGTextContentElement.cpp:
+        * svg/SVGTextContentElement.h:
+        * svg/SVGUseElement.cpp:
+        * svg/SVGUseElement.h:
+        * svg/SVGViewElement.cpp:
+        * svg/SVGViewElement.h:
+        (WebCore::SVGViewElement::viewTarget):
+        (WebCore::SVGViewElement::rendererIsNeeded):
+        * svg/SVGViewSpec.cpp:
+        * svg/SVGViewSpec.h:
+        (WebCore::SVGViewSpec::transform):
+        (WebCore::SVGViewSpec::viewTargetString):
+        (WebCore::SVGViewSpec::contextElement):
+        * svg/properties/SVGAnimatedPropertyMacros.h:
+
 2010-12-03  Noel Gordon  <noel.gordon at gmail.com>
 
         Reviewed by Darin Fisher.
diff --git a/WebCore/svg/SVGAElement.cpp b/WebCore/svg/SVGAElement.cpp
index ecb1fdf..8fbfc01 100644
--- a/WebCore/svg/SVGAElement.cpp
+++ b/WebCore/svg/SVGAElement.cpp
@@ -50,6 +50,7 @@ namespace WebCore {
 // Animated property definitions
 DEFINE_ANIMATED_STRING(SVGAElement, SVGNames::targetAttr, SVGTarget, svgTarget)
 DEFINE_ANIMATED_STRING(SVGAElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGAElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGAElement::SVGAElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGAElement.h b/WebCore/svg/SVGAElement.h
index fcb1047..20a4e07 100644
--- a/WebCore/svg/SVGAElement.h
+++ b/WebCore/svg/SVGAElement.h
@@ -23,6 +23,7 @@
 #define SVGAElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
@@ -72,7 +73,7 @@ private:
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGAElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGAnimatedAngle.h b/WebCore/svg/SVGAnimatedAngle.h
index bda7a36..a4ded8f 100644
--- a/WebCore/svg/SVGAnimatedAngle.h
+++ b/WebCore/svg/SVGAnimatedAngle.h
@@ -28,6 +28,13 @@ namespace WebCore {
 
 typedef SVGAnimatedPropertyTearOff<SVGAngle> SVGAnimatedAngle;
 
+// Helper macros to declare/define a SVGAnimatedAngle object
+#define DECLARE_ANIMATED_ANGLE(UpperProperty, LowerProperty) \
+DECLARE_ANIMATED_PROPERTY(SVGAnimatedAngle, SVGAngle, UpperProperty, LowerProperty)
+
+#define DEFINE_ANIMATED_ANGLE_MULTIPLE_WRAPPERS(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, UpperProperty, LowerProperty) \
+DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, SVGAnimatedAngle, SVGAngle, UpperProperty, LowerProperty)
+
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGAnimatedBoolean.h b/WebCore/svg/SVGAnimatedBoolean.h
index b316e21..93ba9cc 100644
--- a/WebCore/svg/SVGAnimatedBoolean.h
+++ b/WebCore/svg/SVGAnimatedBoolean.h
@@ -27,6 +27,13 @@ namespace WebCore {
 
 typedef SVGAnimatedStaticPropertyTearOff<bool> SVGAnimatedBoolean;
 
+// Helper macros to declare/define a SVGAnimatedBoolean object
+#define DECLARE_ANIMATED_BOOLEAN(UpperProperty, LowerProperty) \
+DECLARE_ANIMATED_PROPERTY(SVGAnimatedBoolean, bool, UpperProperty, LowerProperty)
+
+#define DEFINE_ANIMATED_BOOLEAN(OwnerType, DOMAttribute, UpperProperty, LowerProperty) \
+DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, DOMAttribute.localName(), SVGAnimatedBoolean, bool, UpperProperty, LowerProperty)
+
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGAnimatedInteger.h b/WebCore/svg/SVGAnimatedInteger.h
index 6d1c85d..6f83475 100644
--- a/WebCore/svg/SVGAnimatedInteger.h
+++ b/WebCore/svg/SVGAnimatedInteger.h
@@ -21,12 +21,23 @@
 #define SVGAnimatedInteger_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedPropertyMacros.h"
 #include "SVGAnimatedStaticPropertyTearOff.h"
 
 namespace WebCore {
 
 typedef SVGAnimatedStaticPropertyTearOff<long> SVGAnimatedInteger;
 
+// Helper macros to declare/define a SVGAnimatedInteger object
+#define DECLARE_ANIMATED_INTEGER(UpperProperty, LowerProperty) \
+DECLARE_ANIMATED_PROPERTY(SVGAnimatedInteger, long, UpperProperty, LowerProperty)
+
+#define DEFINE_ANIMATED_INTEGER(OwnerType, DOMAttribute, UpperProperty, LowerProperty) \
+DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, DOMAttribute.localName(), SVGAnimatedInteger, long, UpperProperty, LowerProperty)
+
+#define DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, UpperProperty, LowerProperty) \
+DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, SVGAnimatedInteger, long, UpperProperty, LowerProperty)
+
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGAnimatedPreserveAspectRatio.h b/WebCore/svg/SVGAnimatedPreserveAspectRatio.h
index 57d8621..01afc95 100644
--- a/WebCore/svg/SVGAnimatedPreserveAspectRatio.h
+++ b/WebCore/svg/SVGAnimatedPreserveAspectRatio.h
@@ -28,6 +28,13 @@ namespace WebCore {
 
 typedef SVGAnimatedPropertyTearOff<SVGPreserveAspectRatio> SVGAnimatedPreserveAspectRatio;
 
+// Helper macros to declare/define a SVGAnimatedPreserveAspectRatio object
+#define DECLARE_ANIMATED_PRESERVEASPECTRATIO(UpperProperty, LowerProperty) \
+DECLARE_ANIMATED_PROPERTY(SVGAnimatedPreserveAspectRatio, SVGPreserveAspectRatio, UpperProperty, LowerProperty)
+
+#define DEFINE_ANIMATED_PRESERVEASPECTRATIO(OwnerType, DOMAttribute, UpperProperty, LowerProperty) \
+DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, DOMAttribute.localName(), SVGAnimatedPreserveAspectRatio, SVGPreserveAspectRatio, UpperProperty, LowerProperty)
+
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGAnimatedRect.h b/WebCore/svg/SVGAnimatedRect.h
index ee94352..af9f94b 100644
--- a/WebCore/svg/SVGAnimatedRect.h
+++ b/WebCore/svg/SVGAnimatedRect.h
@@ -21,13 +21,21 @@
 #define SVGAnimatedRect_h
 
 #if ENABLE(SVG)
-#include "FloatRect.h"
+#include "SVGAnimatedPropertyMacros.h"
 #include "SVGAnimatedPropertyTearOff.h"
+#include "SVGRect.h"
 
 namespace WebCore {
 
 typedef SVGAnimatedPropertyTearOff<FloatRect> SVGAnimatedRect;
 
+// Helper macros to declare/define a SVGAnimatedRect object
+#define DECLARE_ANIMATED_RECT(UpperProperty, LowerProperty) \
+DECLARE_ANIMATED_PROPERTY(SVGAnimatedRect, FloatRect, UpperProperty, LowerProperty)
+
+#define DEFINE_ANIMATED_RECT(OwnerType, DOMAttribute, UpperProperty, LowerProperty) \
+DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, DOMAttribute.localName(), SVGAnimatedRect, FloatRect, UpperProperty, LowerProperty)
+
 } // namespace WebCore
 
 #endif // ENABLE(SVG)
diff --git a/WebCore/svg/SVGAnimationElement.cpp b/WebCore/svg/SVGAnimationElement.cpp
index c3b6f0c..cc16536 100644
--- a/WebCore/svg/SVGAnimationElement.cpp
+++ b/WebCore/svg/SVGAnimationElement.cpp
@@ -45,13 +45,15 @@
 #include "SVGURIReference.h"
 #include "SVGUseElement.h"
 #include "XLinkNames.h"
-#include <math.h>
 #include <wtf/StdLibExtras.h>
 
 using namespace std;
 
 namespace WebCore {
-    
+
+// Animated property definitions
+DEFINE_ANIMATED_BOOLEAN(SVGAnimationElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+
 SVGAnimationElement::SVGAnimationElement(const QualifiedName& tagName, Document* document)
     : SVGSMILElement(tagName, document)
     , m_animationValid(false)
diff --git a/WebCore/svg/SVGAnimationElement.h b/WebCore/svg/SVGAnimationElement.h
index 367e63f..59d7f9e 100644
--- a/WebCore/svg/SVGAnimationElement.h
+++ b/WebCore/svg/SVGAnimationElement.h
@@ -23,101 +23,104 @@
 
 #ifndef SVGAnimationElement_h
 #define SVGAnimationElement_h
+
 #if ENABLE(SVG_ANIMATION)
 #include "ElementTimeControl.h"
 #include "Path.h"
 #include "SMILTime.h"
-#include "SVGAnimatedPropertyMacros.h"
-#include "SVGSMILElement.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGExternalResourcesRequired.h"
+#include "SVGSMILElement.h"
 #include "SVGStringList.h"
 #include "SVGTests.h"
 #include "UnitBezier.h"
 
 namespace WebCore {
     
-    class ConditionEventListener;
-    class TimeContainer;
-
-    class SVGAnimationElement : public SVGSMILElement,
-                                public SVGTests,
-                                public SVGExternalResourcesRequired,
-                                public ElementTimeControl {
-    public:
-        // SVGAnimationElement
-        float getStartTime() const;
-        float getCurrentTime() const;
-        float getSimpleDuration(ExceptionCode&) const;
-        
-        // ElementTimeControl
-        virtual void beginElement();
-        virtual void beginElementAt(float offset);
-        virtual void endElement();
-        virtual void endElementAt(float offset);
-        
-        static bool attributeIsCSS(const String& attributeName);
-
-    protected:
-        SVGAnimationElement(const QualifiedName&, Document*);
-
-        virtual void parseMappedAttribute(Attribute*);
-
-        enum CalcMode { CalcModeDiscrete, CalcModeLinear, CalcModePaced, CalcModeSpline };
-        CalcMode calcMode() const;
-        
-        enum AttributeType { AttributeTypeCSS, AttributeTypeXML, AttributeTypeAuto };
-        AttributeType attributeType() const;
-        
-        String toValue() const;
-        String byValue() const;
-        String fromValue() const;
-        
-        enum AnimationMode { NoAnimation, ToAnimation, ByAnimation, ValuesAnimation, FromToAnimation, FromByAnimation, PathAnimation };
-        AnimationMode animationMode() const;
-
-        virtual bool hasValidTarget() const;
-        
-        String targetAttributeBaseValue() const;
-        void setTargetAttributeAnimatedValue(const String&);
-        bool targetAttributeIsCSS() const;
-        
-        bool isAdditive() const;
-        bool isAccumulated() const;
+class ConditionEventListener;
+class TimeContainer;
+
+class SVGAnimationElement : public SVGSMILElement,
+                            public SVGTests,
+                            public SVGExternalResourcesRequired,
+                            public ElementTimeControl {
+public:
+    // SVGAnimationElement
+    float getStartTime() const;
+    float getCurrentTime() const;
+    float getSimpleDuration(ExceptionCode&) const;
+    
+    // ElementTimeControl
+    virtual void beginElement();
+    virtual void beginElementAt(float offset);
+    virtual void endElement();
+    virtual void endElementAt(float offset);
+    
+    static bool attributeIsCSS(const String& attributeName);
+
+protected:
+    SVGAnimationElement(const QualifiedName&, Document*);
+
+    virtual void parseMappedAttribute(Attribute*);
+
+    enum CalcMode { CalcModeDiscrete, CalcModeLinear, CalcModePaced, CalcModeSpline };
+    CalcMode calcMode() const;
+    
+    enum AttributeType { AttributeTypeCSS, AttributeTypeXML, AttributeTypeAuto };
+    AttributeType attributeType() const;
+    
+    String toValue() const;
+    String byValue() const;
+    String fromValue() const;
     
-        // from SVGSMILElement
-        virtual void startedActiveInterval();
-        virtual void updateAnimation(float percent, unsigned repeat, SVGSMILElement* resultElement);
-        virtual void endedActiveInterval();
-        
-    private:
-        virtual void attributeChanged(Attribute*, bool preserveDecls);
-        virtual void synchronizeProperty(const QualifiedName&);
-
-        virtual bool calculateFromAndToValues(const String& fromString, const String& toString) = 0;
-        virtual bool calculateFromAndByValues(const String& fromString, const String& byString) = 0;
-        virtual void calculateAnimatedValue(float percentage, unsigned repeat, SVGSMILElement* resultElement) = 0;
-        virtual float calculateDistance(const String& /*fromString*/, const String& /*toString*/) { return -1.f; }
-        virtual Path animationPath() const { return Path(); }
-        
-        void currentValuesForValuesAnimation(float percent, float& effectivePercent, String& from, String& to) const;
-        void calculateKeyTimesForCalcModePaced();
-        float calculatePercentFromKeyPoints(float percent) const;
-        void currentValuesFromKeyPoints(float percent, float& effectivePercent, String& from, String& to) const;
-        float calculatePercentForSpline(float percent, unsigned splineIndex) const;
-        unsigned calculateKeyTimesIndex(float percent) const;
-        
-        // SVGExternalResourcesRequired
-        DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGAnimationElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
-
-        bool m_animationValid;
-
-        Vector<String> m_values;
-        Vector<float> m_keyTimes;
-        Vector<float> m_keyPoints;
-        Vector<UnitBezier> m_keySplines;
-        String m_lastValuesAnimationFrom;
-        String m_lastValuesAnimationTo;
-    };
+    enum AnimationMode { NoAnimation, ToAnimation, ByAnimation, ValuesAnimation, FromToAnimation, FromByAnimation, PathAnimation };
+    AnimationMode animationMode() const;
+
+    virtual bool hasValidTarget() const;
+    
+    String targetAttributeBaseValue() const;
+    void setTargetAttributeAnimatedValue(const String&);
+    bool targetAttributeIsCSS() const;
+    
+    bool isAdditive() const;
+    bool isAccumulated() const;
+
+    // from SVGSMILElement
+    virtual void startedActiveInterval();
+    virtual void updateAnimation(float percent, unsigned repeat, SVGSMILElement* resultElement);
+    virtual void endedActiveInterval();
+    
+private:
+    virtual void attributeChanged(Attribute*, bool preserveDecls);
+    virtual void synchronizeProperty(const QualifiedName&);
+
+    virtual bool calculateFromAndToValues(const String& fromString, const String& toString) = 0;
+    virtual bool calculateFromAndByValues(const String& fromString, const String& byString) = 0;
+    virtual void calculateAnimatedValue(float percentage, unsigned repeat, SVGSMILElement* resultElement) = 0;
+    virtual float calculateDistance(const String& /*fromString*/, const String& /*toString*/) { return -1.f; }
+    virtual Path animationPath() const { return Path(); }
+    
+    void currentValuesForValuesAnimation(float percent, float& effectivePercent, String& from, String& to) const;
+    void calculateKeyTimesForCalcModePaced();
+    float calculatePercentFromKeyPoints(float percent) const;
+    void currentValuesFromKeyPoints(float percent, float& effectivePercent, String& from, String& to) const;
+    float calculatePercentForSpline(float percent, unsigned splineIndex) const;
+    unsigned calculateKeyTimesIndex(float percent) const;
+
+    // Animated property declarations
+
+    // SVGExternalResourcesRequired
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
+
+    bool m_animationValid;
+
+    Vector<String> m_values;
+    Vector<float> m_keyTimes;
+    Vector<float> m_keyPoints;
+    Vector<UnitBezier> m_keySplines;
+    String m_lastValuesAnimationFrom;
+    String m_lastValuesAnimationTo;
+};
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGCircleElement.cpp b/WebCore/svg/SVGCircleElement.cpp
index 1e6af43..0ac4600 100644
--- a/WebCore/svg/SVGCircleElement.cpp
+++ b/WebCore/svg/SVGCircleElement.cpp
@@ -36,6 +36,7 @@ namespace WebCore {
 DEFINE_ANIMATED_LENGTH(SVGCircleElement, SVGNames::cxAttr, Cx, cx)
 DEFINE_ANIMATED_LENGTH(SVGCircleElement, SVGNames::cyAttr, Cy, cy)
 DEFINE_ANIMATED_LENGTH(SVGCircleElement, SVGNames::rAttr, R, r)
+DEFINE_ANIMATED_BOOLEAN(SVGCircleElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGCircleElement::SVGCircleElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGCircleElement.h b/WebCore/svg/SVGCircleElement.h
index 23d5e79..f6946dd 100644
--- a/WebCore/svg/SVGCircleElement.h
+++ b/WebCore/svg/SVGCircleElement.h
@@ -22,8 +22,8 @@
 #define SVGCircleElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
@@ -57,7 +57,7 @@ private:
     DECLARE_ANIMATED_LENGTH(R, r)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGCircleElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGClipPathElement.cpp b/WebCore/svg/SVGClipPathElement.cpp
index 90d4449..c161e80 100644
--- a/WebCore/svg/SVGClipPathElement.cpp
+++ b/WebCore/svg/SVGClipPathElement.cpp
@@ -36,6 +36,7 @@ namespace WebCore {
 
 // Animated property definitions
 DEFINE_ANIMATED_ENUMERATION(SVGClipPathElement, SVGNames::clipPathUnitsAttr, ClipPathUnits, clipPathUnits)
+DEFINE_ANIMATED_BOOLEAN(SVGClipPathElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGClipPathElement::SVGClipPathElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGClipPathElement.h b/WebCore/svg/SVGClipPathElement.h
index 970bdbd..23242e8 100644
--- a/WebCore/svg/SVGClipPathElement.h
+++ b/WebCore/svg/SVGClipPathElement.h
@@ -22,6 +22,7 @@
 #define SVGClipPathElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedEnumeration.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
@@ -56,7 +57,7 @@ private:
     DECLARE_ANIMATED_ENUMERATION(ClipPathUnits, clipPathUnits)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGClipPathElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 }
diff --git a/WebCore/svg/SVGCursorElement.cpp b/WebCore/svg/SVGCursorElement.cpp
index 5923359..d0a8388 100644
--- a/WebCore/svg/SVGCursorElement.cpp
+++ b/WebCore/svg/SVGCursorElement.cpp
@@ -33,6 +33,7 @@ namespace WebCore {
 DEFINE_ANIMATED_LENGTH(SVGCursorElement, SVGNames::xAttr, X, x)
 DEFINE_ANIMATED_LENGTH(SVGCursorElement, SVGNames::yAttr, Y, y)
 DEFINE_ANIMATED_STRING(SVGCursorElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGCursorElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGCursorElement::SVGCursorElement(const QualifiedName& tagName, Document* document)
     : SVGElement(tagName, document)
diff --git a/WebCore/svg/SVGCursorElement.h b/WebCore/svg/SVGCursorElement.h
index 8350b85..98afa48 100644
--- a/WebCore/svg/SVGCursorElement.h
+++ b/WebCore/svg/SVGCursorElement.h
@@ -22,6 +22,7 @@
 #define SVGCursorElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
 #include "SVGAnimatedString.h"
 #include "SVGElement.h"
@@ -62,7 +63,7 @@ private:
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGCursorElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     HashSet<SVGElement*> m_clients;
 };
diff --git a/WebCore/svg/SVGDefsElement.cpp b/WebCore/svg/SVGDefsElement.cpp
index 8525705..c5061c5 100644
--- a/WebCore/svg/SVGDefsElement.cpp
+++ b/WebCore/svg/SVGDefsElement.cpp
@@ -27,6 +27,9 @@
 
 namespace WebCore {
 
+// Animated property definitions
+DEFINE_ANIMATED_BOOLEAN(SVGDefsElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+
 inline SVGDefsElement::SVGDefsElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
 {
diff --git a/WebCore/svg/SVGDefsElement.h b/WebCore/svg/SVGDefsElement.h
index ecf2d69..70eca95 100644
--- a/WebCore/svg/SVGDefsElement.h
+++ b/WebCore/svg/SVGDefsElement.h
@@ -22,7 +22,7 @@
 #define SVGDefsElement_h
 
 #if ENABLE(SVG)
-#include "SVGAnimatedPropertyMacros.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
@@ -30,24 +30,26 @@
 
 namespace WebCore {
 
-    class SVGDefsElement : public SVGStyledTransformableElement,
-                           public SVGTests,
-                           public SVGLangSpace,
-                           public SVGExternalResourcesRequired {
-    public:
-        static PassRefPtr<SVGDefsElement> create(const QualifiedName&, Document*);
+class SVGDefsElement : public SVGStyledTransformableElement,
+                       public SVGTests,
+                       public SVGLangSpace,
+                       public SVGExternalResourcesRequired {
+public:
+    static PassRefPtr<SVGDefsElement> create(const QualifiedName&, Document*);
 
-    private:
-        SVGDefsElement(const QualifiedName&, Document*);
+private:
+    SVGDefsElement(const QualifiedName&, Document*);
 
-        virtual bool isValid() const;
+    virtual bool isValid() const;
 
-        virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
-        virtual void synchronizeProperty(const QualifiedName&);
+    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
+    virtual void synchronizeProperty(const QualifiedName&);
 
-        // SVGExternalResourcesRequired
-        DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGDefsElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
-    };
+    // Animated property declarations
+
+    // SVGExternalResourcesRequired
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
+};
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGEllipseElement.cpp b/WebCore/svg/SVGEllipseElement.cpp
index b6ee3f2..4a12aa7 100644
--- a/WebCore/svg/SVGEllipseElement.cpp
+++ b/WebCore/svg/SVGEllipseElement.cpp
@@ -37,6 +37,7 @@ DEFINE_ANIMATED_LENGTH(SVGEllipseElement, SVGNames::cxAttr, Cx, cx)
 DEFINE_ANIMATED_LENGTH(SVGEllipseElement, SVGNames::cyAttr, Cy, cy)
 DEFINE_ANIMATED_LENGTH(SVGEllipseElement, SVGNames::rxAttr, Rx, rx)
 DEFINE_ANIMATED_LENGTH(SVGEllipseElement, SVGNames::ryAttr, Ry, ry)
+DEFINE_ANIMATED_BOOLEAN(SVGEllipseElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGEllipseElement::SVGEllipseElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGEllipseElement.h b/WebCore/svg/SVGEllipseElement.h
index 17412af..7ba2085 100644
--- a/WebCore/svg/SVGEllipseElement.h
+++ b/WebCore/svg/SVGEllipseElement.h
@@ -22,8 +22,8 @@
 #define SVGEllipseElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
@@ -58,7 +58,7 @@ private:
     DECLARE_ANIMATED_LENGTH(Ry, ry)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGEllipseElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGFEConvolveMatrixElement.cpp b/WebCore/svg/SVGFEConvolveMatrixElement.cpp
index 11b8c65..373d508 100644
--- a/WebCore/svg/SVGFEConvolveMatrixElement.cpp
+++ b/WebCore/svg/SVGFEConvolveMatrixElement.cpp
@@ -33,12 +33,17 @@ namespace WebCore {
 
 // Animated property definitions
 DEFINE_ANIMATED_STRING(SVGFEConvolveMatrixElement, SVGNames::inAttr, In1, in1)
+DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::orderAttr, orderXIdentifier(), OrderX, orderX)
+DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::orderAttr, orderYIdentifier(), OrderY, orderY) 
 DEFINE_ANIMATED_NUMBER_LIST(SVGFEConvolveMatrixElement, SVGNames::kernelMatrixAttr, KernelMatrix, kernelMatrix)
 DEFINE_ANIMATED_NUMBER(SVGFEConvolveMatrixElement, SVGNames::divisorAttr, Divisor, divisor)
 DEFINE_ANIMATED_NUMBER(SVGFEConvolveMatrixElement, SVGNames::biasAttr, Bias, bias)
+DEFINE_ANIMATED_INTEGER(SVGFEConvolveMatrixElement, SVGNames::targetXAttr, TargetX, targetX)
+DEFINE_ANIMATED_INTEGER(SVGFEConvolveMatrixElement, SVGNames::targetYAttr, TargetY, targetY)
 DEFINE_ANIMATED_ENUMERATION(SVGFEConvolveMatrixElement, SVGNames::operatorAttr, EdgeMode, edgeMode)
 DEFINE_ANIMATED_NUMBER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::kernelUnitLengthAttr, kernelUnitLengthXIdentifier(), KernelUnitLengthX, kernelUnitLengthX)
 DEFINE_ANIMATED_NUMBER_MULTIPLE_WRAPPERS(SVGFEConvolveMatrixElement, SVGNames::kernelUnitLengthAttr, kernelUnitLengthYIdentifier(), KernelUnitLengthY, kernelUnitLengthY)
+DEFINE_ANIMATED_BOOLEAN(SVGFEConvolveMatrixElement, SVGNames::preserveAlphaAttr, PreserveAlpha, preserveAlpha)
 
 inline SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement(const QualifiedName& tagName, Document* document)
     : SVGFilterPrimitiveStandardAttributes(tagName, document)
diff --git a/WebCore/svg/SVGFEConvolveMatrixElement.h b/WebCore/svg/SVGFEConvolveMatrixElement.h
index 413a184..21826ec 100644
--- a/WebCore/svg/SVGFEConvolveMatrixElement.h
+++ b/WebCore/svg/SVGFEConvolveMatrixElement.h
@@ -50,17 +50,17 @@ private:
 
     // Animated property declarations
     DECLARE_ANIMATED_STRING(In1, in1)
-    DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFEConvolveMatrixElement, SVGNames::orderAttr, orderXIdentifier(), long, OrderX, orderX)
-    DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFEConvolveMatrixElement, SVGNames::orderAttr, orderYIdentifier(), long, OrderY, orderY)
+    DECLARE_ANIMATED_INTEGER(OrderX, orderX)
+    DECLARE_ANIMATED_INTEGER(OrderY, orderY)
     DECLARE_ANIMATED_NUMBER_LIST(KernelMatrix, kernelMatrix)
     DECLARE_ANIMATED_NUMBER(Divisor, divisor)
     DECLARE_ANIMATED_NUMBER(Bias, bias)
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEConvolveMatrixElement, SVGNames::targetXAttr, long, TargetX, targetX)
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEConvolveMatrixElement, SVGNames::targetYAttr, long, TargetY, targetY)
+    DECLARE_ANIMATED_INTEGER(TargetX, targetX)
+    DECLARE_ANIMATED_INTEGER(TargetY, targetY)
     DECLARE_ANIMATED_ENUMERATION(EdgeMode, edgeMode)
     DECLARE_ANIMATED_NUMBER(KernelUnitLengthX, kernelUnitLengthX)
     DECLARE_ANIMATED_NUMBER(KernelUnitLengthY, kernelUnitLengthY)
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEConvolveMatrixElement, SVGNames::preserveAlphaAttr, bool, PreserveAlpha, preserveAlpha)
+    DECLARE_ANIMATED_BOOLEAN(PreserveAlpha, preserveAlpha)
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGFEImageElement.cpp b/WebCore/svg/SVGFEImageElement.cpp
index 1c5a6c0..04ea14c 100644
--- a/WebCore/svg/SVGFEImageElement.cpp
+++ b/WebCore/svg/SVGFEImageElement.cpp
@@ -38,7 +38,9 @@
 namespace WebCore {
 
 // Animated property definitions
+DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGFEImageElement, SVGNames::preserveAspectRatioAttr, PreserveAspectRatio, preserveAspectRatio)
 DEFINE_ANIMATED_STRING(SVGFEImageElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGFEImageElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGFEImageElement::SVGFEImageElement(const QualifiedName& tagName, Document* document)
     : SVGFilterPrimitiveStandardAttributes(tagName, document)
diff --git a/WebCore/svg/SVGFEImageElement.h b/WebCore/svg/SVGFEImageElement.h
index 0417d7f..64d95dc 100644
--- a/WebCore/svg/SVGFEImageElement.h
+++ b/WebCore/svg/SVGFEImageElement.h
@@ -25,11 +25,11 @@
 #include "CachedResourceClient.h"
 #include "CachedResourceHandle.h"
 #include "ImageBuffer.h"
+#include "SVGAnimatedPreserveAspectRatio.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGFEImage.h"
 #include "SVGFilterPrimitiveStandardAttributes.h"
 #include "SVGLangSpace.h"
-#include "SVGPreserveAspectRatio.h"
 #include "SVGURIReference.h"
 
 namespace WebCore {
@@ -58,13 +58,13 @@ private:
     void requestImageResource();
 
     // Animated property declarations
-    DECLARE_ANIMATED_PROPERTY_NEW(SVGFEImageElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio)
+    DECLARE_ANIMATED_PRESERVEASPECTRATIO(PreserveAspectRatio, preserveAspectRatio)
 
     // SVGURIReference
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFEImageElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     CachedResourceHandle<CachedImage> m_cachedImage;
     OwnPtr<ImageBuffer> m_targetImage;
diff --git a/WebCore/svg/SVGFETurbulenceElement.cpp b/WebCore/svg/SVGFETurbulenceElement.cpp
index 27aed00..c1c1309 100644
--- a/WebCore/svg/SVGFETurbulenceElement.cpp
+++ b/WebCore/svg/SVGFETurbulenceElement.cpp
@@ -31,6 +31,7 @@ namespace WebCore {
 // Animated property definitions
 DEFINE_ANIMATED_NUMBER_MULTIPLE_WRAPPERS(SVGFETurbulenceElement, SVGNames::baseFrequencyAttr, baseFrequencyXIdentifier(), BaseFrequencyX, baseFrequencyX)
 DEFINE_ANIMATED_NUMBER_MULTIPLE_WRAPPERS(SVGFETurbulenceElement, SVGNames::baseFrequencyAttr, baseFrequencyYIdentifier(), BaseFrequencyY, baseFrequencyY)
+DEFINE_ANIMATED_INTEGER(SVGFETurbulenceElement, SVGNames::numOctavesAttr, NumOctaves, numOctaves)
 DEFINE_ANIMATED_NUMBER(SVGFETurbulenceElement, SVGNames::seedAttr, Seed, seed)
 DEFINE_ANIMATED_ENUMERATION(SVGFETurbulenceElement, SVGNames::stitchTilesAttr, StitchTiles, stitchTiles)
 DEFINE_ANIMATED_ENUMERATION(SVGFETurbulenceElement, SVGNames::typeAttr, Type, type)
diff --git a/WebCore/svg/SVGFETurbulenceElement.h b/WebCore/svg/SVGFETurbulenceElement.h
index 8dc3c87..5e436f4 100644
--- a/WebCore/svg/SVGFETurbulenceElement.h
+++ b/WebCore/svg/SVGFETurbulenceElement.h
@@ -53,7 +53,7 @@ private:
     // Animated property declarations
     DECLARE_ANIMATED_NUMBER(BaseFrequencyX, baseFrequencyX)
     DECLARE_ANIMATED_NUMBER(BaseFrequencyY, baseFrequencyY)
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFETurbulenceElement, SVGNames::numOctavesAttr, long, NumOctaves, numOctaves)
+    DECLARE_ANIMATED_INTEGER(NumOctaves, numOctaves)
     DECLARE_ANIMATED_NUMBER(Seed, seed)
     DECLARE_ANIMATED_ENUMERATION(StitchTiles, stitchTiles)
     DECLARE_ANIMATED_ENUMERATION(Type, type)
diff --git a/WebCore/svg/SVGFilterElement.cpp b/WebCore/svg/SVGFilterElement.cpp
index 0a919a2..03ff7fa 100644
--- a/WebCore/svg/SVGFilterElement.cpp
+++ b/WebCore/svg/SVGFilterElement.cpp
@@ -43,7 +43,10 @@ DEFINE_ANIMATED_LENGTH(SVGFilterElement, SVGNames::xAttr, X, x)
 DEFINE_ANIMATED_LENGTH(SVGFilterElement, SVGNames::yAttr, Y, y)
 DEFINE_ANIMATED_LENGTH(SVGFilterElement, SVGNames::widthAttr, Width, width)
 DEFINE_ANIMATED_LENGTH(SVGFilterElement, SVGNames::heightAttr, Height, height)
+DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(SVGFilterElement, SVGNames::filterResAttr, filterResXIdentifier(), FilterResX, filterResX)
+DEFINE_ANIMATED_INTEGER_MULTIPLE_WRAPPERS(SVGFilterElement, SVGNames::filterResAttr, filterResYIdentifier(), FilterResY, filterResY)
 DEFINE_ANIMATED_STRING(SVGFilterElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGFilterElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGFilterElement::SVGFilterElement(const QualifiedName& tagName, Document* document)
     : SVGStyledElement(tagName, document)
diff --git a/WebCore/svg/SVGFilterElement.h b/WebCore/svg/SVGFilterElement.h
index 14344d5..a438625 100644
--- a/WebCore/svg/SVGFilterElement.h
+++ b/WebCore/svg/SVGFilterElement.h
@@ -24,7 +24,9 @@
 #define SVGFilterElement_h
 
 #if ENABLE(SVG) && ENABLE(FILTERS)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedEnumeration.h"
+#include "SVGAnimatedInteger.h"
 #include "SVGAnimatedLength.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
@@ -67,15 +69,14 @@ private:
     DECLARE_ANIMATED_LENGTH(Y, y)
     DECLARE_ANIMATED_LENGTH(Width, width)
     DECLARE_ANIMATED_LENGTH(Height, height)
-
-    DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFilterElement, SVGNames::filterResAttr, filterResXIdentifier(), long, FilterResX, filterResX)
-    DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGFilterElement, SVGNames::filterResAttr, filterResYIdentifier(), long, FilterResY, filterResY)
+    DECLARE_ANIMATED_INTEGER(FilterResX, filterResX)
+    DECLARE_ANIMATED_INTEGER(FilterResY, filterResY)
 
     // SVGURIReference
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFilterElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 }
diff --git a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
index 03bc474..b13084b 100644
--- a/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
+++ b/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
@@ -27,7 +27,6 @@
 #include "SVGAnimatedLength.h"
 #include "SVGFilterBuilder.h"
 #include "SVGFilterElement.h"
-#include "SVGNames.h"
 #include "SVGStyledElement.h"
 
 #include <wtf/PassRefPtr.h>
diff --git a/WebCore/svg/SVGFontElement.cpp b/WebCore/svg/SVGFontElement.cpp
index ae0cb6e..d70d46a 100644
--- a/WebCore/svg/SVGFontElement.cpp
+++ b/WebCore/svg/SVGFontElement.cpp
@@ -34,11 +34,10 @@
 #include "SVGVKernElement.h"
 #include <wtf/ASCIICType.h>
 
-using namespace WTF;
-
 namespace WebCore {
 
-using namespace SVGNames;
+// Animated property declarations
+DEFINE_ANIMATED_BOOLEAN(SVGFontElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGFontElement::SVGFontElement(const QualifiedName& tagName, Document* document)
     : SVGStyledElement(tagName, document) 
@@ -72,7 +71,7 @@ void SVGFontElement::invalidateGlyphCache()
 SVGMissingGlyphElement* SVGFontElement::firstMissingGlyphElement() const
 {
     for (Node* child = firstChild(); child; child = child->nextSibling()) {
-        if (child->hasTagName(missing_glyphTag))
+        if (child->hasTagName(SVGNames::missing_glyphTag))
             return static_cast<SVGMissingGlyphElement*>(child);
     }
 
@@ -85,15 +84,15 @@ void SVGFontElement::ensureGlyphCache() const
         return;
 
     for (Node* child = firstChild(); child; child = child->nextSibling()) {
-        if (child->hasTagName(glyphTag)) {
+        if (child->hasTagName(SVGNames::glyphTag)) {
             SVGGlyphElement* glyph = static_cast<SVGGlyphElement*>(child);
-            String unicode = glyph->getAttribute(unicodeAttr);
+            String unicode = glyph->getAttribute(SVGNames::unicodeAttr);
             if (unicode.length())
                 m_glyphMap.add(unicode, glyph->buildGlyphIdentifier());
-        } else if (child->hasTagName(hkernTag)) {
+        } else if (child->hasTagName(SVGNames::hkernTag)) {
             SVGHKernElement* hkern = static_cast<SVGHKernElement*>(child);
             hkern->buildHorizontalKerningPair(m_horizontalKerningPairs);
-        } else if (child->hasTagName(vkernTag)) {
+        } else if (child->hasTagName(SVGNames::vkernTag)) {
             SVGVKernElement* vkern = static_cast<SVGVKernElement*>(child);
             vkern->buildVerticalKerningPair(m_verticalKerningPairs);
         }
diff --git a/WebCore/svg/SVGFontElement.h b/WebCore/svg/SVGFontElement.h
index e81ac61..b2de38c 100644
--- a/WebCore/svg/SVGFontElement.h
+++ b/WebCore/svg/SVGFontElement.h
@@ -23,7 +23,7 @@
 #define SVGFontElement_h
 
 #if ENABLE(SVG_FONTS)
-#include "SVGAnimatedPropertyMacros.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGGlyphElement.h"
 #include "SVGGlyphMap.h"
@@ -74,8 +74,10 @@ private:
 
     void ensureGlyphCache() const;
 
+    // Animated property declarations
+
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGFontElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     mutable KerningPairVector m_horizontalKerningPairs;
     mutable KerningPairVector m_verticalKerningPairs;
diff --git a/WebCore/svg/SVGForeignObjectElement.cpp b/WebCore/svg/SVGForeignObjectElement.cpp
index a922337..c2fcecb 100644
--- a/WebCore/svg/SVGForeignObjectElement.cpp
+++ b/WebCore/svg/SVGForeignObjectElement.cpp
@@ -39,6 +39,7 @@ DEFINE_ANIMATED_LENGTH(SVGForeignObjectElement, SVGNames::yAttr, Y, y)
 DEFINE_ANIMATED_LENGTH(SVGForeignObjectElement, SVGNames::widthAttr, Width, width)
 DEFINE_ANIMATED_LENGTH(SVGForeignObjectElement, SVGNames::heightAttr, Height, height)
 DEFINE_ANIMATED_STRING(SVGForeignObjectElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGForeignObjectElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGForeignObjectElement::SVGForeignObjectElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGForeignObjectElement.h b/WebCore/svg/SVGForeignObjectElement.h
index 2dfac0c..5263eeb 100644
--- a/WebCore/svg/SVGForeignObjectElement.h
+++ b/WebCore/svg/SVGForeignObjectElement.h
@@ -21,8 +21,8 @@
 #define SVGForeignObjectElement_h
 
 #if ENABLE(SVG) && ENABLE(SVG_FOREIGN_OBJECT)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
 #include "SVGTests.h"
 #include "SVGLangSpace.h"
 #include "SVGURIReference.h"
@@ -61,7 +61,7 @@ private:
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGForeignObjectElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGGElement.cpp b/WebCore/svg/SVGGElement.cpp
index c58eefa..42069dd 100644
--- a/WebCore/svg/SVGGElement.cpp
+++ b/WebCore/svg/SVGGElement.cpp
@@ -29,6 +29,9 @@
 
 namespace WebCore {
 
+// Animated property declarations
+DEFINE_ANIMATED_BOOLEAN(SVGGElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+
 SVGGElement::SVGGElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
 {
diff --git a/WebCore/svg/SVGGElement.h b/WebCore/svg/SVGGElement.h
index b0003d1..3c00b34 100644
--- a/WebCore/svg/SVGGElement.h
+++ b/WebCore/svg/SVGGElement.h
@@ -22,7 +22,7 @@
 #define SVGGElement_h
 
 #if ENABLE(SVG)
-#include "SVGAnimatedPropertyMacros.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
@@ -30,32 +30,34 @@
 
 namespace WebCore {
 
-    class SVGGElement : public SVGStyledTransformableElement,
-                        public SVGTests,
-                        public SVGLangSpace,
-                        public SVGExternalResourcesRequired {
-    public:
-        static PassRefPtr<SVGGElement> create(const QualifiedName&, Document*);
+class SVGGElement : public SVGStyledTransformableElement,
+                    public SVGTests,
+                    public SVGLangSpace,
+                    public SVGExternalResourcesRequired {
+public:
+    static PassRefPtr<SVGGElement> create(const QualifiedName&, Document*);
 
-        virtual bool isShadowTreeContainerElement() const { return false; }
+    virtual bool isShadowTreeContainerElement() const { return false; }
 
-    protected:
-        SVGGElement(const QualifiedName&, Document*);
+protected:
+    SVGGElement(const QualifiedName&, Document*);
 
-        virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
+    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
 
-    private:
-        virtual bool isValid() const { return SVGTests::isValid(); }
+private:
+    virtual bool isValid() const { return SVGTests::isValid(); }
 
-        virtual void parseMappedAttribute(Attribute*);
-        virtual void svgAttributeChanged(const QualifiedName&);
-        virtual void synchronizeProperty(const QualifiedName&);
+    virtual void parseMappedAttribute(Attribute*);
+    virtual void svgAttributeChanged(const QualifiedName&);
+    virtual void synchronizeProperty(const QualifiedName&);
 
-        virtual bool rendererIsNeeded(RenderStyle*);
+    virtual bool rendererIsNeeded(RenderStyle*);
 
-        // SVGExternalResourcesRequired
-        DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGGElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
-    };
+    // Animated property declarations
+
+    // SVGExternalResourcesRequired
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
+};
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGGradientElement.cpp b/WebCore/svg/SVGGradientElement.cpp
index 40b59d7..4f9bc16 100644
--- a/WebCore/svg/SVGGradientElement.cpp
+++ b/WebCore/svg/SVGGradientElement.cpp
@@ -43,6 +43,7 @@ DEFINE_ANIMATED_ENUMERATION(SVGGradientElement, SVGNames::spreadMethodAttr, Spre
 DEFINE_ANIMATED_ENUMERATION(SVGGradientElement, SVGNames::gradientUnitsAttr, GradientUnits, gradientUnits)
 DEFINE_ANIMATED_TRANSFORM_LIST(SVGGradientElement, SVGNames::gradientTransformAttr, GradientTransform, gradientTransform)
 DEFINE_ANIMATED_STRING(SVGGradientElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGGradientElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 SVGGradientElement::SVGGradientElement(const QualifiedName& tagName, Document* document)
     : SVGStyledElement(tagName, document)
diff --git a/WebCore/svg/SVGGradientElement.h b/WebCore/svg/SVGGradientElement.h
index bd4e321..1fd1f0b 100644
--- a/WebCore/svg/SVGGradientElement.h
+++ b/WebCore/svg/SVGGradientElement.h
@@ -23,6 +23,7 @@
 
 #if ENABLE(SVG)
 #include "Gradient.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedEnumeration.h"
 #include "SVGAnimatedTransformList.h"
 #include "SVGExternalResourcesRequired.h"
@@ -58,7 +59,7 @@ private:
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGGradientElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGImageElement.cpp b/WebCore/svg/SVGImageElement.cpp
index 9437431..4404a6c 100644
--- a/WebCore/svg/SVGImageElement.cpp
+++ b/WebCore/svg/SVGImageElement.cpp
@@ -42,7 +42,9 @@ DEFINE_ANIMATED_LENGTH(SVGImageElement, SVGNames::xAttr, X, x)
 DEFINE_ANIMATED_LENGTH(SVGImageElement, SVGNames::yAttr, Y, y)
 DEFINE_ANIMATED_LENGTH(SVGImageElement, SVGNames::widthAttr, Width, width)
 DEFINE_ANIMATED_LENGTH(SVGImageElement, SVGNames::heightAttr, Height, height)
+DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGImageElement, SVGNames::preserveAspectRatioAttr, PreserveAspectRatio, preserveAspectRatio)
 DEFINE_ANIMATED_STRING(SVGImageElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGImageElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGImageElement::SVGImageElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGImageElement.h b/WebCore/svg/SVGImageElement.h
index 97b6060..6b8bb65 100644
--- a/WebCore/svg/SVGImageElement.h
+++ b/WebCore/svg/SVGImageElement.h
@@ -22,15 +22,15 @@
 #define SVGImageElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
+#include "SVGAnimatedPreserveAspectRatio.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGImageLoader.h"
 #include "SVGStyledTransformableElement.h"
 #include "SVGTests.h"
 #include "SVGURIReference.h"
-#include "SVGPreserveAspectRatio.h"
 
 namespace WebCore {
 
@@ -69,13 +69,13 @@ private:
     DECLARE_ANIMATED_LENGTH(Y, y)
     DECLARE_ANIMATED_LENGTH(Width, width)
     DECLARE_ANIMATED_LENGTH(Height, height)
-    DECLARE_ANIMATED_PROPERTY_NEW(SVGImageElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio)
+    DECLARE_ANIMATED_PRESERVEASPECTRATIO(PreserveAspectRatio, preserveAspectRatio)
 
     // SVGURIReference
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGImageElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     SVGImageLoader m_imageLoader;
 };
diff --git a/WebCore/svg/SVGLineElement.cpp b/WebCore/svg/SVGLineElement.cpp
index 2758b77..cfe43da 100644
--- a/WebCore/svg/SVGLineElement.cpp
+++ b/WebCore/svg/SVGLineElement.cpp
@@ -37,6 +37,7 @@ DEFINE_ANIMATED_LENGTH(SVGLineElement, SVGNames::x1Attr, X1, x1)
 DEFINE_ANIMATED_LENGTH(SVGLineElement, SVGNames::y1Attr, Y1, y1)
 DEFINE_ANIMATED_LENGTH(SVGLineElement, SVGNames::x2Attr, X2, x2)
 DEFINE_ANIMATED_LENGTH(SVGLineElement, SVGNames::y2Attr, Y2, y2)
+DEFINE_ANIMATED_BOOLEAN(SVGLineElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGLineElement::SVGLineElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGLineElement.h b/WebCore/svg/SVGLineElement.h
index 614675f..ad60a95 100644
--- a/WebCore/svg/SVGLineElement.h
+++ b/WebCore/svg/SVGLineElement.h
@@ -22,8 +22,8 @@
 #define SVGLineElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
@@ -60,7 +60,7 @@ private:
     DECLARE_ANIMATED_LENGTH(Y2, y2)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGLineElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGLinearGradientElement.h b/WebCore/svg/SVGLinearGradientElement.h
index 6cf4e0c..198f0ee 100644
--- a/WebCore/svg/SVGLinearGradientElement.h
+++ b/WebCore/svg/SVGLinearGradientElement.h
@@ -23,7 +23,6 @@
 
 #if ENABLE(SVG)
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
 #include "SVGGradientElement.h"
 
 namespace WebCore {
diff --git a/WebCore/svg/SVGMPathElement.cpp b/WebCore/svg/SVGMPathElement.cpp
index 88b0078..eb0b998 100644
--- a/WebCore/svg/SVGMPathElement.cpp
+++ b/WebCore/svg/SVGMPathElement.cpp
@@ -29,6 +29,7 @@ namespace WebCore {
 
 // Animated property definitions
 DEFINE_ANIMATED_STRING(SVGMPathElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGMPathElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGMPathElement::SVGMPathElement(const QualifiedName& tagName, Document* document)
     : SVGElement(tagName, document)
diff --git a/WebCore/svg/SVGMPathElement.h b/WebCore/svg/SVGMPathElement.h
index 9fbd418..2fa7c28 100644
--- a/WebCore/svg/SVGMPathElement.h
+++ b/WebCore/svg/SVGMPathElement.h
@@ -21,6 +21,7 @@
 #define SVGMPathElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedString.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGURIReference.h"
@@ -49,7 +50,7 @@ private:
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGMPathElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGMarkerElement.cpp b/WebCore/svg/SVGMarkerElement.cpp
index 3208bd4..3174711 100644
--- a/WebCore/svg/SVGMarkerElement.cpp
+++ b/WebCore/svg/SVGMarkerElement.cpp
@@ -25,12 +25,9 @@
 #include "SVGMarkerElement.h"
 
 #include "Attribute.h"
-#include "PlatformString.h"
 #include "RenderSVGResourceMarker.h"
 #include "SVGFitToViewBox.h"
-#include "SVGLength.h"
 #include "SVGNames.h"
-#include "SVGPreserveAspectRatio.h"
 #include "SVGSVGElement.h"
 
 namespace WebCore {
@@ -42,7 +39,11 @@ DEFINE_ANIMATED_LENGTH(SVGMarkerElement, SVGNames::markerWidthAttr, MarkerWidth,
 DEFINE_ANIMATED_LENGTH(SVGMarkerElement, SVGNames::markerHeightAttr, MarkerHeight, markerHeight)
 DEFINE_ANIMATED_ENUMERATION(SVGMarkerElement, SVGNames::markerUnitsAttr, MarkerUnits, markerUnits)
 DEFINE_ANIMATED_ENUMERATION_MULTIPLE_WRAPPERS(SVGMarkerElement, SVGNames::orientAttr, orientTypeIdentifier(), OrientType, orientType)
-    
+DEFINE_ANIMATED_ANGLE_MULTIPLE_WRAPPERS(SVGMarkerElement, SVGNames::orientAttr, orientAngleIdentifier(), OrientAngle, orientAngle)
+DEFINE_ANIMATED_BOOLEAN(SVGMarkerElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+DEFINE_ANIMATED_RECT(SVGMarkerElement, SVGNames::viewBoxAttr, ViewBox, viewBox)
+DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGMarkerElement, SVGNames::preserveAspectRatioAttr, PreserveAspectRatio, preserveAspectRatio)
+
 inline SVGMarkerElement::SVGMarkerElement(const QualifiedName& tagName, Document* document)
     : SVGStyledElement(tagName, document)
     , m_refX(LengthModeWidth)
diff --git a/WebCore/svg/SVGMarkerElement.h b/WebCore/svg/SVGMarkerElement.h
index babae5b..472baa6 100644
--- a/WebCore/svg/SVGMarkerElement.h
+++ b/WebCore/svg/SVGMarkerElement.h
@@ -22,21 +22,19 @@
 #define SVGMarkerElement_h
 
 #if ENABLE(SVG)
-#include "RenderObject.h"
-#include "SVGAngle.h"
+#include "SVGAnimatedAngle.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedEnumeration.h"
 #include "SVGAnimatedLength.h"
+#include "SVGAnimatedPreserveAspectRatio.h"
+#include "SVGAnimatedRect.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGFitToViewBox.h"
 #include "SVGLangSpace.h"
-#include "SVGPreserveAspectRatio.h"
-#include "SVGRect.h"
 #include "SVGStyledElement.h"
 
 namespace WebCore {
 
-class Document;
-
 class SVGMarkerElement : public SVGStyledElement,
                          public SVGLangSpace,
                          public SVGExternalResourcesRequired,
@@ -85,14 +83,14 @@ private:
     DECLARE_ANIMATED_LENGTH(MarkerHeight, markerHeight)
     DECLARE_ANIMATED_ENUMERATION(MarkerUnits, markerUnits)
     DECLARE_ANIMATED_ENUMERATION(OrientType, orientType)
-    DECLARE_ANIMATED_PROPERTY_MULTIPLE_WRAPPERS_NEW(SVGMarkerElement, SVGNames::orientAttr, orientAngleIdentifier(), SVGAngle, OrientAngle, orientAngle)
+    DECLARE_ANIMATED_ANGLE(OrientAngle, orientAngle)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGMarkerElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     // SVGFitToViewBox
-    DECLARE_ANIMATED_PROPERTY_NEW(SVGMarkerElement, SVGNames::viewBoxAttr, FloatRect, ViewBox, viewBox)
-    DECLARE_ANIMATED_PROPERTY_NEW(SVGMarkerElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio)
+    DECLARE_ANIMATED_RECT(ViewBox, viewBox)
+    DECLARE_ANIMATED_PRESERVEASPECTRATIO(PreserveAspectRatio, preserveAspectRatio)
 };
 
 }
diff --git a/WebCore/svg/SVGMaskElement.cpp b/WebCore/svg/SVGMaskElement.cpp
index 0004a7a..ec23e29 100644
--- a/WebCore/svg/SVGMaskElement.cpp
+++ b/WebCore/svg/SVGMaskElement.cpp
@@ -42,6 +42,7 @@ DEFINE_ANIMATED_LENGTH(SVGMaskElement, SVGNames::xAttr, X, x)
 DEFINE_ANIMATED_LENGTH(SVGMaskElement, SVGNames::yAttr, Y, y)
 DEFINE_ANIMATED_LENGTH(SVGMaskElement, SVGNames::widthAttr, Width, width)
 DEFINE_ANIMATED_LENGTH(SVGMaskElement, SVGNames::heightAttr, Height, height)
+DEFINE_ANIMATED_BOOLEAN(SVGMaskElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGMaskElement::SVGMaskElement(const QualifiedName& tagName, Document* document)
     : SVGStyledLocatableElement(tagName, document)
diff --git a/WebCore/svg/SVGMaskElement.h b/WebCore/svg/SVGMaskElement.h
index 1ca3036..87e91ff 100644
--- a/WebCore/svg/SVGMaskElement.h
+++ b/WebCore/svg/SVGMaskElement.h
@@ -21,7 +21,7 @@
 #define SVGMaskElement_h
 
 #if ENABLE(SVG)
-#include "RenderObject.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedEnumeration.h"
 #include "SVGAnimatedLength.h"
 #include "SVGExternalResourcesRequired.h"
@@ -64,7 +64,7 @@ private:
     DECLARE_ANIMATED_LENGTH(Height, height)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGMaskElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 }
diff --git a/WebCore/svg/SVGPathElement.cpp b/WebCore/svg/SVGPathElement.cpp
index 7ecd9d1..e976fc1 100644
--- a/WebCore/svg/SVGPathElement.cpp
+++ b/WebCore/svg/SVGPathElement.cpp
@@ -46,6 +46,7 @@ namespace WebCore {
 
 // Animated property definitions
 DEFINE_ANIMATED_NUMBER(SVGPathElement, SVGNames::pathLengthAttr, PathLength, pathLength)
+DEFINE_ANIMATED_BOOLEAN(SVGPathElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGPathElement::SVGPathElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGPathElement.h b/WebCore/svg/SVGPathElement.h
index ffdd32e..6ea7d55 100644
--- a/WebCore/svg/SVGPathElement.h
+++ b/WebCore/svg/SVGPathElement.h
@@ -22,6 +22,7 @@
 #define SVGPathElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedNumber.h"
 #include "SVGAnimatedPathSegListPropertyTearOff.h"
 #include "SVGExternalResourcesRequired.h"
@@ -109,7 +110,7 @@ private:
     DECLARE_ANIMATED_NUMBER(PathLength, pathLength)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGPathElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     void synchronizeD();
 
diff --git a/WebCore/svg/SVGPatternElement.cpp b/WebCore/svg/SVGPatternElement.cpp
index cec92b4..29723e7 100644
--- a/WebCore/svg/SVGPatternElement.cpp
+++ b/WebCore/svg/SVGPatternElement.cpp
@@ -51,6 +51,9 @@ DEFINE_ANIMATED_ENUMERATION(SVGPatternElement, SVGNames::patternUnitsAttr, Patte
 DEFINE_ANIMATED_ENUMERATION(SVGPatternElement, SVGNames::patternContentUnitsAttr, PatternContentUnits, patternContentUnits)
 DEFINE_ANIMATED_TRANSFORM_LIST(SVGPatternElement, SVGNames::patternTransformAttr, PatternTransform, patternTransform) 
 DEFINE_ANIMATED_STRING(SVGPatternElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGPatternElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+DEFINE_ANIMATED_RECT(SVGPatternElement, SVGNames::viewBoxAttr, ViewBox, viewBox)
+DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGPatternElement, SVGNames::preserveAspectRatioAttr, PreserveAspectRatio, preserveAspectRatio) 
 
 inline SVGPatternElement::SVGPatternElement(const QualifiedName& tagName, Document* document)
     : SVGStyledElement(tagName, document)
diff --git a/WebCore/svg/SVGPatternElement.h b/WebCore/svg/SVGPatternElement.h
index 394c70f..e581308 100644
--- a/WebCore/svg/SVGPatternElement.h
+++ b/WebCore/svg/SVGPatternElement.h
@@ -22,14 +22,15 @@
 #define SVGPatternElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedEnumeration.h"
 #include "SVGAnimatedLength.h"
+#include "SVGAnimatedPreserveAspectRatio.h"
+#include "SVGAnimatedRect.h"
 #include "SVGAnimatedTransformList.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGFitToViewBox.h"
 #include "SVGLangSpace.h"
-#include "SVGPreserveAspectRatio.h"
-#include "SVGRect.h"
 #include "SVGStyledElement.h"
 #include "SVGTests.h"
 #include "SVGURIReference.h"
@@ -77,11 +78,11 @@ private:
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGPatternElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     // SVGPatternElement
-    DECLARE_ANIMATED_PROPERTY_NEW(SVGPatternElement, SVGNames::viewBoxAttr, FloatRect, ViewBox, viewBox)
-    DECLARE_ANIMATED_PROPERTY_NEW(SVGPatternElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio) 
+    DECLARE_ANIMATED_RECT(ViewBox, viewBox)
+    DECLARE_ANIMATED_PRESERVEASPECTRATIO(PreserveAspectRatio, preserveAspectRatio) 
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGPolyElement.cpp b/WebCore/svg/SVGPolyElement.cpp
index beef21f..0fb48d7 100644
--- a/WebCore/svg/SVGPolyElement.cpp
+++ b/WebCore/svg/SVGPolyElement.cpp
@@ -34,6 +34,9 @@
 
 namespace WebCore {
 
+// Animated property definitions
+DEFINE_ANIMATED_BOOLEAN(SVGPolyElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+
 SVGPolyElement::SVGPolyElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
 {
diff --git a/WebCore/svg/SVGPolyElement.h b/WebCore/svg/SVGPolyElement.h
index 0855218..3af8a79 100644
--- a/WebCore/svg/SVGPolyElement.h
+++ b/WebCore/svg/SVGPolyElement.h
@@ -22,7 +22,7 @@
 #define SVGPolyElement_h
 
 #if ENABLE(SVG)
-#include "SVGAnimatedPropertyMacros.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGPointList.h"
@@ -54,7 +54,7 @@ private:
     virtual bool supportsMarkers() const { return true; }
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGPolyElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     void synchronizePoints();
 
diff --git a/WebCore/svg/SVGRadialGradientElement.h b/WebCore/svg/SVGRadialGradientElement.h
index 52f5498..199eaba 100644
--- a/WebCore/svg/SVGRadialGradientElement.h
+++ b/WebCore/svg/SVGRadialGradientElement.h
@@ -23,7 +23,6 @@
 
 #if ENABLE(SVG)
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
 #include "SVGGradientElement.h"
 
 namespace WebCore {
diff --git a/WebCore/svg/SVGRectElement.cpp b/WebCore/svg/SVGRectElement.cpp
index 04fba95..d5db5b9 100644
--- a/WebCore/svg/SVGRectElement.cpp
+++ b/WebCore/svg/SVGRectElement.cpp
@@ -38,6 +38,7 @@ DEFINE_ANIMATED_LENGTH(SVGRectElement, SVGNames::widthAttr, Width, width)
 DEFINE_ANIMATED_LENGTH(SVGRectElement, SVGNames::heightAttr, Height, height)
 DEFINE_ANIMATED_LENGTH(SVGRectElement, SVGNames::rxAttr, Rx, rx)
 DEFINE_ANIMATED_LENGTH(SVGRectElement, SVGNames::ryAttr, Ry, ry)
+DEFINE_ANIMATED_BOOLEAN(SVGRectElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGRectElement::SVGRectElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGRectElement.h b/WebCore/svg/SVGRectElement.h
index 706c41c..0c30378 100644
--- a/WebCore/svg/SVGRectElement.h
+++ b/WebCore/svg/SVGRectElement.h
@@ -22,8 +22,8 @@
 #define SVGRectElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
@@ -60,7 +60,7 @@ private:
     DECLARE_ANIMATED_LENGTH(Ry, ry)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGRectElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGSVGElement.cpp b/WebCore/svg/SVGSVGElement.cpp
index f418315..8b33c89 100644
--- a/WebCore/svg/SVGSVGElement.cpp
+++ b/WebCore/svg/SVGSVGElement.cpp
@@ -53,14 +53,14 @@
 
 namespace WebCore {
 
-using namespace HTMLNames;
-using namespace SVGNames;
-
 // Animated property definitions
 DEFINE_ANIMATED_LENGTH(SVGSVGElement, SVGNames::xAttr, X, x)
 DEFINE_ANIMATED_LENGTH(SVGSVGElement, SVGNames::yAttr, Y, y)
 DEFINE_ANIMATED_LENGTH(SVGSVGElement, SVGNames::widthAttr, Width, width)
 DEFINE_ANIMATED_LENGTH(SVGSVGElement, SVGNames::heightAttr, Height, height)
+DEFINE_ANIMATED_BOOLEAN(SVGSVGElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGSVGElement, SVGNames::preserveAspectRatioAttr, PreserveAspectRatio, preserveAspectRatio)
+DEFINE_ANIMATED_RECT(SVGSVGElement, SVGNames::viewBoxAttr, ViewBox, viewBox)
 
 inline SVGSVGElement::SVGSVGElement(const QualifiedName& tagName, Document* doc)
     : SVGStyledLocatableElement(tagName, doc)
@@ -106,7 +106,7 @@ void SVGSVGElement::didMoveToNewOwnerDocument()
 const AtomicString& SVGSVGElement::contentScriptType() const
 {
     DEFINE_STATIC_LOCAL(const AtomicString, defaultValue, ("text/ecmascript"));
-    const AtomicString& n = getAttribute(contentScriptTypeAttr);
+    const AtomicString& n = getAttribute(SVGNames::contentScriptTypeAttr);
     return n.isNull() ? defaultValue : n;
 }
 
@@ -118,7 +118,7 @@ void SVGSVGElement::setContentScriptType(const AtomicString& type)
 const AtomicString& SVGSVGElement::contentStyleType() const
 {
     DEFINE_STATIC_LOCAL(const AtomicString, defaultValue, ("text/css"));
-    const AtomicString& n = getAttribute(contentStyleTypeAttr);
+    const AtomicString& n = getAttribute(SVGNames::contentStyleTypeAttr);
     return n.isNull() ? defaultValue : n;
 }
 
@@ -246,11 +246,11 @@ void SVGSVGElement::parseMappedAttribute(Attribute* attr)
         bool setListener = true;
 
         // Only handle events if we're the outermost <svg> element
-        if (attr->name() == onunloadAttr)
+        if (attr->name() == HTMLNames::onunloadAttr)
             document()->setWindowAttributeEventListener(eventNames().unloadEvent, createAttributeEventListener(document()->frame(), attr));
-        else if (attr->name() == onresizeAttr)
+        else if (attr->name() == HTMLNames::onresizeAttr)
             document()->setWindowAttributeEventListener(eventNames().resizeEvent, createAttributeEventListener(document()->frame(), attr));
-        else if (attr->name() == onscrollAttr)
+        else if (attr->name() == HTMLNames::onscrollAttr)
             document()->setWindowAttributeEventListener(eventNames().scrollEvent, createAttributeEventListener(document()->frame(), attr));
         else if (attr->name() == SVGNames::onzoomAttr)
             document()->setWindowAttributeEventListener(eventNames().zoomEvent, createAttributeEventListener(document()->frame(), attr));
@@ -261,9 +261,9 @@ void SVGSVGElement::parseMappedAttribute(Attribute* attr)
             return;
     }
 
-    if (attr->name() == onabortAttr)
+    if (attr->name() == HTMLNames::onabortAttr)
         document()->setWindowAttributeEventListener(eventNames().abortEvent, createAttributeEventListener(document()->frame(), attr));
-    else if (attr->name() == onerrorAttr)
+    else if (attr->name() == HTMLNames::onerrorAttr)
         document()->setWindowAttributeEventListener(eventNames().errorEvent, createAttributeEventListener(document()->frame(), attr));
     else if (attr->name() == SVGNames::xAttr)
         setXBaseValue(SVGLength(LengthModeWidth, attr->value()));
diff --git a/WebCore/svg/SVGSVGElement.h b/WebCore/svg/SVGSVGElement.h
index 4a0ac58..0995c67 100644
--- a/WebCore/svg/SVGSVGElement.h
+++ b/WebCore/svg/SVGSVGElement.h
@@ -22,14 +22,13 @@
 #define SVGSVGElement_h
 
 #if ENABLE(SVG)
-#include "IntSize.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
+#include "SVGAnimatedPreserveAspectRatio.h"
+#include "SVGAnimatedRect.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGFitToViewBox.h"
 #include "SVGLangSpace.h"
-#include "SVGPreserveAspectRatio.h"
-#include "SVGRect.h"
 #include "SVGStyledLocatableElement.h"
 #include "SVGTests.h"
 #include "SVGZoomAndPan.h"
@@ -155,11 +154,11 @@ private:
     DECLARE_ANIMATED_LENGTH(Height, height)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGSVGElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     // SVGFitToViewBox
-    DECLARE_ANIMATED_PROPERTY_NEW(SVGSVGElement, SVGNames::viewBoxAttr, FloatRect, ViewBox, viewBox)
-    DECLARE_ANIMATED_PROPERTY_NEW(SVGSVGElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio)
+    DECLARE_ANIMATED_RECT(ViewBox, viewBox)
+    DECLARE_ANIMATED_PRESERVEASPECTRATIO(PreserveAspectRatio, preserveAspectRatio)
  
     virtual void documentWillBecomeInactive();
     virtual void documentDidBecomeActive();
diff --git a/WebCore/svg/SVGScriptElement.cpp b/WebCore/svg/SVGScriptElement.cpp
index 7e0ff3f..6452700 100644
--- a/WebCore/svg/SVGScriptElement.cpp
+++ b/WebCore/svg/SVGScriptElement.cpp
@@ -33,6 +33,7 @@ namespace WebCore {
 
 // Animated property definitions
 DEFINE_ANIMATED_STRING(SVGScriptElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGScriptElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGScriptElement::SVGScriptElement(const QualifiedName& tagName, Document* document, bool wasInsertedByParser, bool wasAlreadyStarted)
     : SVGElement(tagName, document)
diff --git a/WebCore/svg/SVGScriptElement.h b/WebCore/svg/SVGScriptElement.h
index 4014e0c..df502e0 100644
--- a/WebCore/svg/SVGScriptElement.h
+++ b/WebCore/svg/SVGScriptElement.h
@@ -22,6 +22,7 @@
 #define SVGScriptElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedString.h"
 #include "SVGElement.h"
 #include "SVGExternalResourcesRequired.h"
@@ -77,7 +78,7 @@ private:
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGScriptElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     String m_type;
 };
diff --git a/WebCore/svg/SVGSwitchElement.cpp b/WebCore/svg/SVGSwitchElement.cpp
index b2588f5..853bf03 100644
--- a/WebCore/svg/SVGSwitchElement.cpp
+++ b/WebCore/svg/SVGSwitchElement.cpp
@@ -19,6 +19,7 @@
  */
 
 #include "config.h"
+
 #if ENABLE(SVG)
 #include "SVGSwitchElement.h"
 
@@ -27,6 +28,9 @@
 
 namespace WebCore {
 
+// Animated property definitions
+DEFINE_ANIMATED_BOOLEAN(SVGSwitchElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+
 inline SVGSwitchElement::SVGSwitchElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
 {
diff --git a/WebCore/svg/SVGSwitchElement.h b/WebCore/svg/SVGSwitchElement.h
index 1b006ec..937a1e4 100644
--- a/WebCore/svg/SVGSwitchElement.h
+++ b/WebCore/svg/SVGSwitchElement.h
@@ -22,33 +22,36 @@
 #define SVGSwitchElement_h
 
 #if ENABLE(SVG)
-#include "SVGAnimatedPropertyMacros.h"
+#include "SVGAnimatedBoolean.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
 #include "SVGTests.h"
 
 namespace WebCore {
-    class SVGSwitchElement : public SVGStyledTransformableElement,
-                             public SVGTests,
-                             public SVGLangSpace,
-                             public SVGExternalResourcesRequired {
-    public:
-        static PassRefPtr<SVGSwitchElement> create(const QualifiedName&, Document*);
-
-    private:
-        SVGSwitchElement(const QualifiedName&, Document*);
-        
-        virtual bool isValid() const { return SVGTests::isValid(); }
-
-        virtual bool childShouldCreateRenderer(Node*) const;
-
-        virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
-        virtual void synchronizeProperty(const QualifiedName&);
-
-        // SVGExternalResourcesRequired
-        DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGSwitchElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
-    };
+
+class SVGSwitchElement : public SVGStyledTransformableElement,
+                         public SVGTests,
+                         public SVGLangSpace,
+                         public SVGExternalResourcesRequired {
+public:
+    static PassRefPtr<SVGSwitchElement> create(const QualifiedName&, Document*);
+
+private:
+    SVGSwitchElement(const QualifiedName&, Document*);
+    
+    virtual bool isValid() const { return SVGTests::isValid(); }
+
+    virtual bool childShouldCreateRenderer(Node*) const;
+
+    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
+    virtual void synchronizeProperty(const QualifiedName&);
+
+    // Animated property declarations
+
+    // SVGExternalResourcesRequired
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
+};
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGSymbolElement.cpp b/WebCore/svg/SVGSymbolElement.cpp
index 7dab3e1..358ea6e 100644
--- a/WebCore/svg/SVGSymbolElement.cpp
+++ b/WebCore/svg/SVGSymbolElement.cpp
@@ -19,14 +19,19 @@
  */
 
 #include "config.h"
+
 #if ENABLE(SVG)
 #include "SVGSymbolElement.h"
 
-#include "PlatformString.h"
 #include "SVGFitToViewBox.h"
 
 namespace WebCore {
 
+// Animated property definitions
+DEFINE_ANIMATED_BOOLEAN(SVGSymbolElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGSymbolElement, SVGNames::preserveAspectRatioAttr, PreserveAspectRatio, preserveAspectRatio) 
+DEFINE_ANIMATED_RECT(SVGSymbolElement, SVGNames::viewBoxAttr, ViewBox, viewBox)
+
 inline SVGSymbolElement::SVGSymbolElement(const QualifiedName& tagName, Document* document)
     : SVGStyledElement(tagName, document)
 {
diff --git a/WebCore/svg/SVGSymbolElement.h b/WebCore/svg/SVGSymbolElement.h
index d416150..e049f0d 100644
--- a/WebCore/svg/SVGSymbolElement.h
+++ b/WebCore/svg/SVGSymbolElement.h
@@ -22,40 +22,42 @@
 #define SVGSymbolElement_h
 
 #if ENABLE(SVG)
-#include "SVGAnimatedPropertyMacros.h"
+#include "SVGAnimatedBoolean.h"
+#include "SVGAnimatedPreserveAspectRatio.h"
+#include "SVGAnimatedRect.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGFitToViewBox.h"
 #include "SVGLangSpace.h"
-#include "SVGPreserveAspectRatio.h"
-#include "SVGRect.h"
 #include "SVGStyledElement.h"
 
 namespace WebCore {
 
-    class SVGSymbolElement : public SVGStyledElement,
-                             public SVGLangSpace,
-                             public SVGExternalResourcesRequired,
-                             public SVGFitToViewBox {
-    public:
-        static PassRefPtr<SVGSymbolElement> create(const QualifiedName&, Document*);
+class SVGSymbolElement : public SVGStyledElement,
+                         public SVGLangSpace,
+                         public SVGExternalResourcesRequired,
+                         public SVGFitToViewBox {
+public:
+    static PassRefPtr<SVGSymbolElement> create(const QualifiedName&, Document*);
 
-    private:
-        SVGSymbolElement(const QualifiedName&, Document*);
+private:
+    SVGSymbolElement(const QualifiedName&, Document*);
 
-        virtual void parseMappedAttribute(Attribute*);
-        virtual void svgAttributeChanged(const QualifiedName&);
-        virtual void synchronizeProperty(const QualifiedName&);
-        virtual bool rendererIsNeeded(RenderStyle*) { return false; }
+    virtual void parseMappedAttribute(Attribute*);
+    virtual void svgAttributeChanged(const QualifiedName&);
+    virtual void synchronizeProperty(const QualifiedName&);
+    virtual bool rendererIsNeeded(RenderStyle*) { return false; }
 
-        virtual bool selfHasRelativeLengths() const;
+    virtual bool selfHasRelativeLengths() const;
 
-        // SVGExternalResourcesRequired
-        DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGSymbolElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    // Animated property declarations
+
+    // SVGExternalResourcesRequired
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
  
-        // SVGFitToViewBox
-        DECLARE_ANIMATED_PROPERTY_NEW(SVGSymbolElement, SVGNames::viewBoxAttr, FloatRect, ViewBox, viewBox)
-        DECLARE_ANIMATED_PROPERTY_NEW(SVGSymbolElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio) 
-    };
+    // SVGFitToViewBox
+    DECLARE_ANIMATED_RECT(ViewBox, viewBox)
+    DECLARE_ANIMATED_PRESERVEASPECTRATIO(PreserveAspectRatio, preserveAspectRatio) 
+};
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGTextContentElement.cpp b/WebCore/svg/SVGTextContentElement.cpp
index 1d68c13..e1a5140 100644
--- a/WebCore/svg/SVGTextContentElement.cpp
+++ b/WebCore/svg/SVGTextContentElement.cpp
@@ -36,6 +36,7 @@ namespace WebCore {
 // Animated property definitions
 DEFINE_ANIMATED_LENGTH(SVGTextContentElement, SVGNames::textLengthAttr, TextLength, textLength)
 DEFINE_ANIMATED_ENUMERATION(SVGTextContentElement, SVGNames::lengthAdjustAttr, LengthAdjust, lengthAdjust)
+DEFINE_ANIMATED_BOOLEAN(SVGTextContentElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 SVGTextContentElement::SVGTextContentElement(const QualifiedName& tagName, Document* document)
     : SVGStyledElement(tagName, document)
diff --git a/WebCore/svg/SVGTextContentElement.h b/WebCore/svg/SVGTextContentElement.h
index d8a7a77..60b023b 100644
--- a/WebCore/svg/SVGTextContentElement.h
+++ b/WebCore/svg/SVGTextContentElement.h
@@ -22,6 +22,7 @@
 #define SVGTextContentElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedEnumeration.h"
 #include "SVGAnimatedLength.h"
 #include "SVGExternalResourcesRequired.h"
@@ -75,7 +76,7 @@ private:
     DECLARE_ANIMATED_ENUMERATION(LengthAdjust, lengthAdjust)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGTextContentElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired) 
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired) 
 };
 
 } // namespace WebCore
diff --git a/WebCore/svg/SVGUseElement.cpp b/WebCore/svg/SVGUseElement.cpp
index 74df0f9..b5cd8aa 100644
--- a/WebCore/svg/SVGUseElement.cpp
+++ b/WebCore/svg/SVGUseElement.cpp
@@ -63,6 +63,7 @@ DEFINE_ANIMATED_LENGTH(SVGUseElement, SVGNames::yAttr, Y, y)
 DEFINE_ANIMATED_LENGTH(SVGUseElement, SVGNames::widthAttr, Width, width)
 DEFINE_ANIMATED_LENGTH(SVGUseElement, SVGNames::heightAttr, Height, height)
 DEFINE_ANIMATED_STRING(SVGUseElement, XLinkNames::hrefAttr, Href, href)
+DEFINE_ANIMATED_BOOLEAN(SVGUseElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
 
 inline SVGUseElement::SVGUseElement(const QualifiedName& tagName, Document* document)
     : SVGStyledTransformableElement(tagName, document)
diff --git a/WebCore/svg/SVGUseElement.h b/WebCore/svg/SVGUseElement.h
index fa61d09..a8f2b82 100644
--- a/WebCore/svg/SVGUseElement.h
+++ b/WebCore/svg/SVGUseElement.h
@@ -22,8 +22,8 @@
 #define SVGUseElement_h
 
 #if ENABLE(SVG)
+#include "SVGAnimatedBoolean.h"
 #include "SVGAnimatedLength.h"
-#include "SVGAnimatedPropertyMacros.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGLangSpace.h"
 #include "SVGStyledTransformableElement.h"
@@ -112,7 +112,7 @@ private:
     DECLARE_ANIMATED_STRING(Href, href)
 
     // SVGExternalResourcesRequired
-    DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGUseElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
 
     bool m_updatesBlocked;
     bool m_isPendingResource;
diff --git a/WebCore/svg/SVGViewElement.cpp b/WebCore/svg/SVGViewElement.cpp
index c59a080..ee3c8d1 100644
--- a/WebCore/svg/SVGViewElement.cpp
+++ b/WebCore/svg/SVGViewElement.cpp
@@ -23,8 +23,7 @@
 #if ENABLE(SVG)
 #include "SVGViewElement.h"
 
-#include "Attr.h"
-#include "PlatformString.h"
+#include "Attribute.h"
 #include "SVGFitToViewBox.h"
 #include "SVGNames.h"
 #include "SVGStringList.h"
@@ -32,6 +31,11 @@
 
 namespace WebCore {
 
+// Animated property definitions
+DEFINE_ANIMATED_BOOLEAN(SVGViewElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
+DEFINE_ANIMATED_RECT(SVGViewElement, SVGNames::viewBoxAttr, ViewBox, viewBox)
+DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGViewElement, SVGNames::preserveAspectRatioAttr, PreserveAspectRatio, preserveAspectRatio)
+
 inline SVGViewElement::SVGViewElement(const QualifiedName& tagName, Document* document)
     : SVGStyledElement(tagName, document)
     , m_viewTarget(SVGNames::viewTargetAttr)
diff --git a/WebCore/svg/SVGViewElement.h b/WebCore/svg/SVGViewElement.h
index b3a0f39..0e2e4fd 100644
--- a/WebCore/svg/SVGViewElement.h
+++ b/WebCore/svg/SVGViewElement.h
@@ -22,43 +22,45 @@
 #define SVGViewElement_h
 
 #if ENABLE(SVG)
-#include "SVGAnimatedPropertyMacros.h"
+#include "SVGAnimatedBoolean.h"
+#include "SVGAnimatedPreserveAspectRatio.h"
+#include "SVGAnimatedRect.h"
 #include "SVGExternalResourcesRequired.h"
 #include "SVGFitToViewBox.h"
-#include "SVGPreserveAspectRatio.h"
-#include "SVGRect.h"
 #include "SVGStringList.h"
 #include "SVGStyledElement.h"
 #include "SVGZoomAndPan.h"
 
 namespace WebCore {
 
-    class SVGViewElement : public SVGStyledElement,
-                           public SVGExternalResourcesRequired,
-                           public SVGFitToViewBox,
-                           public SVGZoomAndPan {
-    public:
-        static PassRefPtr<SVGViewElement> create(const QualifiedName&, Document*);
+class SVGViewElement : public SVGStyledElement,
+                       public SVGExternalResourcesRequired,
+                       public SVGFitToViewBox,
+                       public SVGZoomAndPan {
+public:
+    static PassRefPtr<SVGViewElement> create(const QualifiedName&, Document*);
 
-        SVGStringList& viewTarget() { return m_viewTarget; }
+    SVGStringList& viewTarget() { return m_viewTarget; }
 
-    private:
-        SVGViewElement(const QualifiedName&, Document*);
+private:
+    SVGViewElement(const QualifiedName&, Document*);
 
-        virtual void parseMappedAttribute(Attribute*);
-        virtual void synchronizeProperty(const QualifiedName&);
+    virtual void parseMappedAttribute(Attribute*);
+    virtual void synchronizeProperty(const QualifiedName&);
 
-        virtual bool rendererIsNeeded(RenderStyle*) { return false; }
+    virtual bool rendererIsNeeded(RenderStyle*) { return false; }
 
-        // SVGExternalResourcesRequired
-        DECLARE_ANIMATED_STATIC_PROPERTY_NEW(SVGViewElement, SVGNames::externalResourcesRequiredAttr, bool, ExternalResourcesRequired, externalResourcesRequired)
+    // Animated property declarations
+
+    // SVGExternalResourcesRequired
+    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
  
-        // SVGFitToViewBox
-        DECLARE_ANIMATED_PROPERTY_NEW(SVGViewElement, SVGNames::viewBoxAttr, FloatRect, ViewBox, viewBox)
-        DECLARE_ANIMATED_PROPERTY_NEW(SVGViewElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio)
+    // SVGFitToViewBox
+    DECLARE_ANIMATED_RECT(ViewBox, viewBox)
+    DECLARE_ANIMATED_PRESERVEASPECTRATIO(PreserveAspectRatio, preserveAspectRatio)
 
-        SVGStringList m_viewTarget;
-    };
+    SVGStringList m_viewTarget;
+};
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/SVGViewSpec.cpp b/WebCore/svg/SVGViewSpec.cpp
index a0a683b..8cd656d 100644
--- a/WebCore/svg/SVGViewSpec.cpp
+++ b/WebCore/svg/SVGViewSpec.cpp
@@ -18,19 +18,22 @@
  */
 
 #include "config.h"
+
 #if ENABLE(SVG)
 #include "SVGViewSpec.h"
 
 #include "Document.h"
-#include "PlatformString.h"
 #include "SVGParserUtilities.h"
 #include "SVGPreserveAspectRatio.h"
 #include "SVGSVGElement.h"
-#include "SVGTransformList.h"
 #include "SVGTransformable.h"
 
 namespace WebCore {
 
+// Animated property definitions
+DEFINE_ANIMATED_RECT(SVGViewSpec, SVGNames::viewBoxAttr, ViewBox, viewBox)
+DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGViewSpec, SVGNames::preserveAspectRatioAttr, PreserveAspectRatio, preserveAspectRatio)
+
 SVGViewSpec::SVGViewSpec(SVGElement* contextElement)
     : m_contextElement(contextElement)
 {
diff --git a/WebCore/svg/SVGViewSpec.h b/WebCore/svg/SVGViewSpec.h
index 7427f4b..686cec3 100644
--- a/WebCore/svg/SVGViewSpec.h
+++ b/WebCore/svg/SVGViewSpec.h
@@ -21,51 +21,49 @@
 #define SVGViewSpec_h
 
 #if ENABLE(SVG)
-#include "SVGAnimatedPropertyMacros.h"
-#include "SVGElement.h"
+#include "SVGAnimatedPreserveAspectRatio.h"
+#include "SVGAnimatedRect.h"
 #include "SVGFitToViewBox.h"
-#include "SVGPreserveAspectRatio.h"
-#include "SVGRect.h"
+#include "SVGTransformList.h"
 #include "SVGZoomAndPan.h"
 
-#include <wtf/RefPtr.h>
-
 namespace WebCore {
 
-    class SVGElement;
-    class SVGTransformList;
+class SVGElement;
+
+class SVGViewSpec : public SVGFitToViewBox,
+                    public SVGZoomAndPan,
+                    public Noncopyable {
+public:
+    SVGViewSpec(SVGElement*);
 
-    class SVGViewSpec : public SVGFitToViewBox,
-                        public SVGZoomAndPan,
-                        public Noncopyable {
-    public:
-        SVGViewSpec(SVGElement*);
+    bool parseViewSpec(const String&);
 
-        bool parseViewSpec(const String&);
+    void setTransform(const String&);
+    SVGTransformList transform() const { return m_transform; }
 
-        void setTransform(const String&);
-        SVGTransformList transform() const { return m_transform; }
+    void setViewBoxString(const String&);
 
-        void setViewBoxString(const String&);
+    void setPreserveAspectRatioString(const String&);
 
-        void setPreserveAspectRatioString(const String&);
+    void setViewTargetString(const String&);
+    String viewTargetString() const { return m_viewTargetString; }
+    SVGElement* viewTarget() const;
 
-        void setViewTargetString(const String&);
-        String viewTargetString() const { return m_viewTargetString; }
-        SVGElement* viewTarget() const;
+    SVGElement* contextElement() const { return const_cast<SVGElement*>(m_contextElement); }
 
-        SVGElement* contextElement() const { return const_cast<SVGElement*>(m_contextElement); }
+private:
+    SVGElement* m_contextElement;
 
-    private:
-        SVGElement* m_contextElement;
+    // Animated property declarations
 
-        // SVGFitToViewBox
-        DECLARE_ANIMATED_PROPERTY_NEW(SVGViewSpec, SVGNames::viewBoxAttr, FloatRect, ViewBox, viewBox)
-        DECLARE_ANIMATED_PROPERTY_NEW(SVGViewSpec, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio, PreserveAspectRatio, preserveAspectRatio)
+    // SVGFitToViewBox
+    DECLARE_ANIMATED_RECT(ViewBox, viewBox)
+    DECLARE_ANIMATED_PRESERVEASPECTRATIO(PreserveAspectRatio, preserveAspectRatio)
 
-        SVGTransformList m_transform;
-        String m_viewTargetString;
-    };
+    SVGTransformList m_transform;
+    String m_viewTargetString;
+};
 
 } // namespace WebCore
 
diff --git a/WebCore/svg/properties/SVGAnimatedPropertyMacros.h b/WebCore/svg/properties/SVGAnimatedPropertyMacros.h
index a24a25d..defbc6e 100644
--- a/WebCore/svg/properties/SVGAnimatedPropertyMacros.h
+++ b/WebCore/svg/properties/SVGAnimatedPropertyMacros.h
@@ -23,18 +23,12 @@
 #define SVGAnimatedPropertyMacros_h
 
 #if ENABLE(SVG)
-#include "SVGAnimatedListPropertyTearOff.h"
-#include "SVGAnimatedStaticPropertyTearOff.h"
 #include "SVGAnimatedPropertySynchronizer.h"
-#include "SVGAnimatedPropertyTearOff.h"
-#include "SVGAnimatedTransformListPropertyTearOff.h"
 #include "SVGNames.h" // FIXME: Temporary hack, until we expand the macros in all files, so we don't need a global SVGNames.h include
 #include "SVGPropertyTraits.h"
 
 namespace WebCore {
 
-class SVGElement;
-
 // GetOwnerElementForType implementation
 template<typename OwnerType, bool isDerivedFromSVGElement>
 struct GetOwnerElementForType;
@@ -69,6 +63,7 @@ struct IsDerivedFromSVGElement<SVGViewSpec> {
     static const bool value = false;
 };
 
+// SVGSynchronizableAnimatedProperty implementation
 template<typename PropertyType>
 struct SVGSynchronizableAnimatedProperty {
     SVGSynchronizableAnimatedProperty()
@@ -95,56 +90,6 @@ struct SVGSynchronizableAnimatedProperty {
     bool shouldSynchronize : 1;
 };
 
-// FIXME: These macros should be removed, after the transition to the new SVGAnimatedProperty concept is finished.
-#define DECLARE_ANIMATED_PROPERTY_NEW_SHARED(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, TearOffType, PropertyType, UpperProperty, LowerProperty) \
-public: \
-PropertyType& LowerProperty() const \
-{ \
-    return m_##LowerProperty.value; \
-} \
-\
-PropertyType& LowerProperty##BaseValue() const \
-{ \
-    return m_##LowerProperty.value; \
-} \
-\
-void set##UpperProperty##BaseValue(const PropertyType& type) \
-{ \
-    m_##LowerProperty.value = type; \
-} \
-\
-void synchronize##UpperProperty() \
-{ \
-    if (!m_##LowerProperty.shouldSynchronize) \
-         return; \
-    AtomicString value(SVGPropertyTraits<PropertyType>::toString(LowerProperty##BaseValue())); \
-    SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
-    SVGAnimatedPropertySynchronizer<IsDerivedFromSVGElement<OwnerType>::value>::synchronize(contextElement, DOMAttribute, value); \
-} \
-\
-PassRefPtr<TearOffType> LowerProperty##Animated() \
-{ \
-    m_##LowerProperty.shouldSynchronize = true; \
-    SVGElement* contextElement = GetOwnerElementForType<OwnerType, IsDerivedFromSVGElement<OwnerType>::value>::ownerElement(this); \
-    return SVGAnimatedProperty::lookupOrCreateWrapper<TearOffType, PropertyType>(contextElement, DOMAttribute, SVGDOMAttributeIdentifier, m_##LowerProperty.value); \
-} \
-private: \
-    mutable SVGSynchronizableAnimatedProperty<PropertyType> m_##LowerProperty;
-
-#define DECLARE_ANIMATED_PROPERTY_NEW(OwnerType, DOMAttribute, PropertyType, UpperProperty, LowerProperty) \
-DECLARE_ANIMATED_PROPERTY_NEW_SHARED(OwnerType, DOMAttribute, DOMAttribute.localName(), SVGAnimatedPropertyTearOff<PropertyType>, PropertyType, UpperProperty, LowerProperty)
-
-#define DECLARE_ANIMATED_PROPERTY_MULTIPLE_WRAPPERS_NEW(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, PropertyType, UpperProperty, LowerProperty) \
-DECLARE_ANIMATED_PROPERTY_NEW_SHARED(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, SVGAnimatedPropertyTearOff<PropertyType>, PropertyType, UpperProperty, LowerProperty)
-
-#define DECLARE_ANIMATED_STATIC_PROPERTY_MULTIPLE_WRAPPERS_NEW(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, PropertyType, UpperProperty, LowerProperty) \
-DECLARE_ANIMATED_PROPERTY_NEW_SHARED(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, SVGAnimatedStaticPropertyTearOff<PropertyType>, PropertyType, UpperProperty, LowerProperty)
-
-#define DECLARE_ANIMATED_STATIC_PROPERTY_NEW(OwnerType, DOMAttribute, PropertyType, UpperProperty, LowerProperty) \
-DECLARE_ANIMATED_PROPERTY_NEW_SHARED(OwnerType, DOMAttribute, DOMAttribute.localName(), SVGAnimatedStaticPropertyTearOff<PropertyType>, PropertyType, UpperProperty, LowerProperty)
-
-// FIXME: Remove all macros above, once these two below are deployed everywhere.
-
 #define DEFINE_ANIMATED_PROPERTY(OwnerType, DOMAttribute, SVGDOMAttributeIdentifier, TearOffType, PropertyType, UpperProperty, LowerProperty) \
 void OwnerType::synchronize##UpperProperty() \
 { \
diff --git a/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h b/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h
index b97073d..bb52442 100644
--- a/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h
+++ b/WebCore/svg/properties/SVGAnimatedPropertySynchronizer.h
@@ -21,6 +21,8 @@
 #define SVGAnimatedPropertySynchronizer_h
 
 #if ENABLE(SVG)
+#include "SVGElement.h"
+
 namespace WebCore {
 
 // Helper template used for synchronizing SVG <-> XML properties

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list