2011-07-09  Nikolas Zimmermann  <nzimmermann@rim.com>

        Add a possibility to retrieve the associated SVGAnimatedProperty object for a certain XML attribute
        https://bugs.webkit.org/show_bug.cgi?id=63797

        Reviewed by Dirk Schulze.

        In order to prepare animVal support we need a way to map a given SVG DOM attribute to a SVGAnimatedProperty.
        eg. SVGNames::xAttr -> SVGRectElement::xAnimated(), etc. This will be needed to update the animVal of the
        SVGAnimatedProperty, if an animation is running. It would required adding a new method to all SVG* classes
        that define animated properties. Unfortunately we already have lots of repeated code in methods like
        synchronizeProperty / fillAttributeToPropertyTypeMap. Look at SVGRectElement for example:

        void SVGRectElement::synchronizeProperty(const QualifiedName& attrName)
        {
            if (attrName == anyQName()) {
                synchronizeX();
                synchronizeY();
                 ...
              }

            if (attrName == SVGNames::xAttr) {
                synchronizeX();
                return;
            }

            if (attrName == SVGNames::yAttr) {
                synchronizeY();
                return;
            }
            ...
        }

        or

        void SVGRectElement::fillAttributeToPropertyTypeMap()
        {
            AttributeToPropertyTypeMap& attributeToPropertyTypeMap = this->attributeToPropertyTypeMap();
        
            SVGStyledTransformableElement::fillPassedAttributeToPropertyTypeMap(attributeToPropertyTypeMap);
            attributeToPropertyTypeMap.set(SVGNames::xAttr, AnimatedLength);
            attributeToPropertyTypeMap.set(SVGNames::yAttr, AnimatedLength);
            ...
        }

        These lookups are all performed dynamically. Each synchronizeProperty() call does a lot of comparisons.
        fillAttributeToPropertyTypeMap() isn't that bad as the result is cached in a static HashMap per-SVGRectElement.
        There's no reason to do these things dynamically!

        Inspired by JSC, I'm adding a "static const SVGPropertyInfo s_fooPropertyInfo" object for each animated SVG property.
        For example, for SVGRectElements SVGAnimatedLength x property we're storing:
        - "AnimatedPropertyType type" (AnimatedLength -- note the enum was named AnimatedAttributeType, I renamed it to AnimatedPropertyType for clarity)
        - "const QualifiedName& attributeName" (SVGNames::xAttr)
        - "const AtomicString& propertyIdentifier" (SVGNames::xAttr.localName() -- only different if N-wrappers map to a single XML DOM attribute, eg. orientAttr)
        - "SynchronizeProperty synchronizeProperty" (callback to SVGRectElement::synchronizeX)
        - "LookupOrCreateWrapperForAnimatedProperty lookupOrCreateWrapperForAnimatedProperty" (callback to SVGRectElement::xAnimated)

        Using this information, we can replace all the various synchronizeProperty/fillAttributeToPropertyMap implementations, with a single one in SVGElement.
        All these are auto-generated, using the standard macros used to define/declare SVG animated properties. This required several changes to the macros.
        Here's a summary:
    
        #1) In all headers, wrap DECLARE_ANIMATED_* calls, in BEGIN_DECLARE_ANIMATED_PROPERTIES(ClassName) / END_DECLARE_ANIMATED_PROPERTIES blocks.
        
            Sample change for SVGRectElement:
            -    DECLARE_ANIMATED_LENGTH(X, x)
            -    DECLARE_ANIMATED_LENGTH(Y, y)
            -    ...

            +    BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGRectElement)
            +        DECLARE_ANIMATED_LENGTH(X, x)
            +        DECLARE_ANIMATED_LENGTH(Y, y)
            +         ...
            +    END_DECLARE_ANIMATED_PROPERTIES

        #2) In all cpp files, add a new section wrapped in BEGIN_REGISTER_ANIMATED_PROPERTIES(ClassName / END_REGISTER_ANIMATED_PROPERTIES blocks:

            Sample change for SVGRectElement:
            +BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGRectElement)
            +    REGISTER_LOCAL_ANIMATED_PROPERTY(x)
            +    REGISTER_LOCAL_ANIMATED_PROPERTY(y)
            +    ...
            +    REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledTransformableElement)
            +    REGISTER_PARENT_ANIMATED_PROPERTIES(SVGTests)
            +END_REGISTER_ANIMATED_PROPERTIES

            This is the main piece of the logic that replaces the manual synchronizeProperty/fillAttributeToPropertyMap implementation. It expands to following:

            SVGAttributeToPropertyMap& SVGRectElement::attributeToPropertyMap()
            {
                DEFINE_STATIC_LOCAL(SVGAttributeToPropertyMap, s_attributeToPropertyMap, ());
            }

            static void registerAnimatedPropertiesForSVGRectElement()
            {
                SVGAttributeToPropertyMap& map = SVGRectElement::attributeToPropertyMap();
                if (!map.isEmpty())
                    return;
                map.addProperty(SVGRectElement::xPropertyInfo());
                map.addProperty(SVGRectElement::yPropertyInfo());
                ...
                map.addProperties(SVGStyledTransformableElement::attributeToPropertyMap());
                map.addProperties(SVGTests::attributeToPropertyMap());
            }

            A single-instance of SVGAttributeToPropertyMap is created for each SVG*Element. The constructor of SVGRectElement is supposed to call
            registerAnimatedPropertiesForSVGRectElement(), which collects all properties of SVGRectElement and all its parent classes and stores them
            in a Vector<const SVGPropertyInfo*>. This Vector is stored in a HashMap<QualifiedName, Vector<const SVGPropertyInfo*> > where the key
            is the attribute name (eg. SVGNames::xAttr -> SVGRectElement::xPropertyInfo). This is only done _once_ per SVGRectElement.

            SVGElement contains a "virtual SVGAttributeToPropertyMap& localAttributeToPropertyMap()" method, and SVGRectElement overrides it
            and returns SVGRectElement::attributeToPropertyMap() (which is static!) -- this is hidden again in the macros, no need to write any code.

            SVGAttributeToPropertyMap provides following API:
            - bool synchronizeProperty(SVGElement* contextElement, const QualifiedName& attributeName)
            - void synchronizeProperties(SVGElement* contextElement)
            
                A generic way to synchronize a SVGAnimatedProperty with its XML DOM attribute. Any SVG DOM change to eg. <rect>s x property will now trigger
                contextElement->localAttributeToPropertyMap().synchronizeProperty(this, SVGNames::xAttr)
                The SVGAttributeToPropertyMap will ask its HashMap for the Vector containing the properties for SVGNames::xAttr (in that case, just one xAnimated()).

            - void animatedPropertyTypeForAttribute(const QualifiedName& attributeName, Vector<AnimatedPropertyType>& propertyTypes)

                This method replaces the fillAttributeToPropertyMap implementations everywhere.
        
            - void animatedPropertiesForAttribute(SVGElement* contextElement, const QualifiedName& attributeName, Vector<RefPtr<SVGAnimatedProperty> >& properties);

                This method is not used yet, but allows us to collect all SVGAnimatedProperties for a QualifiedName -- the initial goal for this patch.

        #3) In all cpp files, add a call to "registerAnimatedPropertiesForClassName()" in the constructor. Forgetting this will result in a compile error.

        Doesn't affect any tests.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * WebCore.gypi:
        * WebCore.pro:
        * WebCore.vcproj/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/scripts/CodeGeneratorJS.pm:
        (NativeToJSValue):
        * bindings/scripts/CodeGeneratorObjC.pm:
        (GenerateImplementation):
        * bindings/scripts/CodeGeneratorV8.pm:
        (GenerateNormalAttrGetter):
        * svg/SVGAElement.cpp:
        (WebCore::SVGAElement::SVGAElement):
        * svg/SVGAElement.h:
        (WebCore::SVGAElement::synchronizeRequiredFeatures):
        (WebCore::SVGAElement::synchronizeRequiredExtensions):
        (WebCore::SVGAElement::synchronizeSystemLanguage):
        * svg/SVGAltGlyphElement.cpp:
        (WebCore::SVGAltGlyphElement::SVGAltGlyphElement):
        * svg/SVGAltGlyphElement.h:
        * svg/SVGAnimateElement.cpp:
        (WebCore::SVGAnimateElement::SVGAnimateElement):
        (WebCore::SVGAnimateElement::hasValidAttributeType):
        (WebCore::SVGAnimateElement::determineAnimatedPropertyType):
        (WebCore::SVGAnimateElement::determinePropertyValueTypes):
        (WebCore::SVGAnimateElement::calculateAnimatedValue):
        (WebCore::SVGAnimateElement::calculateFromAndToValues):
        (WebCore::SVGAnimateElement::calculateFromAndByValues):
        (WebCore::SVGAnimateElement::resetToBaseValue):
        (WebCore::SVGAnimateElement::applyResultsToTarget):
        (WebCore::SVGAnimateElement::calculateDistance):
        (WebCore::SVGAnimateElement::ensureAnimator):
        * svg/SVGAnimateElement.h:
        * svg/SVGAnimateTransformElement.cpp:
        (WebCore::SVGAnimateTransformElement::hasValidAttributeType):
        (WebCore::SVGAnimateTransformElement::determineAnimatedPropertyType):
        (WebCore::SVGAnimateTransformElement::resetToBaseValue):
        (WebCore::SVGAnimateTransformElement::calculateAnimatedValue):
        (WebCore::SVGAnimateTransformElement::applyResultsToTarget):
        * svg/SVGAnimateTransformElement.h:
        * svg/SVGAnimatedAngle.h:
        * svg/SVGAnimatedBoolean.h:
        * svg/SVGAnimatedEnumeration.h:
        * svg/SVGAnimatedInteger.h:
        * svg/SVGAnimatedLength.h:
        * svg/SVGAnimatedLengthList.h:
        * svg/SVGAnimatedNumber.h:
        * svg/SVGAnimatedNumberList.h:
        * svg/SVGAnimatedPreserveAspectRatio.h:
        * svg/SVGAnimatedRect.h:
        * svg/SVGAnimatedString.h:
        * svg/SVGAnimatedTransformList.h:
        * svg/SVGAnimatedType.cpp:
        (WebCore::SVGAnimatedType::SVGAnimatedType):
        * svg/SVGAnimatedType.h:
        (WebCore::SVGAnimatedType::type):
        * svg/SVGAnimatedTypeAnimator.h:
        (WebCore::SVGAnimatedTypeAnimator::SVGAnimatedTypeAnimator):
        * svg/SVGAnimationElement.cpp:
        (WebCore::SVGAnimationElement::SVGAnimationElement):
        (WebCore::SVGAnimationElement::currentValuesForValuesAnimation):
        * svg/SVGAnimationElement.h:
        (WebCore::SVGAnimationElement::synchronizeRequiredFeatures):
        (WebCore::SVGAnimationElement::synchronizeRequiredExtensions):
        (WebCore::SVGAnimationElement::synchronizeSystemLanguage):
        * svg/SVGAnimatorFactory.h:
        (WebCore::SVGAnimatorFactory::create):
        * svg/SVGCircleElement.cpp:
        (WebCore::SVGCircleElement::SVGCircleElement):
        * svg/SVGCircleElement.h:
        (WebCore::SVGCircleElement::synchronizeRequiredFeatures):
        (WebCore::SVGCircleElement::synchronizeRequiredExtensions):
        (WebCore::SVGCircleElement::synchronizeSystemLanguage):
        * svg/SVGClipPathElement.cpp:
        (WebCore::SVGClipPathElement::SVGClipPathElement):
        * svg/SVGClipPathElement.h:
        (WebCore::SVGClipPathElement::synchronizeRequiredFeatures):
        (WebCore::SVGClipPathElement::synchronizeRequiredExtensions):
        (WebCore::SVGClipPathElement::synchronizeSystemLanguage):
        * svg/SVGComponentTransferFunctionElement.cpp:
        (WebCore::SVGComponentTransferFunctionElement::SVGComponentTransferFunctionElement):
        * svg/SVGComponentTransferFunctionElement.h:
        * svg/SVGCursorElement.cpp:
        (WebCore::SVGCursorElement::SVGCursorElement):
        * svg/SVGCursorElement.h:
        (WebCore::SVGCursorElement::synchronizeRequiredFeatures):
        (WebCore::SVGCursorElement::synchronizeRequiredExtensions):
        (WebCore::SVGCursorElement::synchronizeSystemLanguage):
        * svg/SVGDefsElement.cpp:
        (WebCore::SVGDefsElement::SVGDefsElement):
        * svg/SVGDefsElement.h:
        (WebCore::SVGDefsElement::synchronizeRequiredFeatures):
        (WebCore::SVGDefsElement::synchronizeRequiredExtensions):
        (WebCore::SVGDefsElement::synchronizeSystemLanguage):
        * svg/SVGElement.cpp:
        (WebCore::SVGElement::animatedPropertyTypeForAttribute):
        (WebCore::SVGElement::updateAnimatedSVGAttribute):
        (WebCore::SVGElement::localAttributeToPropertyMap):
        (WebCore::SVGElement::synchronizeRequiredFeatures):
        (WebCore::SVGElement::synchronizeRequiredExtensions):
        (WebCore::SVGElement::synchronizeSystemLanguage):
        * svg/SVGElement.h:
        (WebCore::SVGElement::svgAttributeChanged):
        (WebCore::SVGElement::synchronizeRequiredFeatures):
        (WebCore::SVGElement::synchronizeRequiredExtensions):
        (WebCore::SVGElement::synchronizeSystemLanguage):
        * svg/SVGEllipseElement.cpp:
        (WebCore::SVGEllipseElement::SVGEllipseElement):
        * svg/SVGEllipseElement.h:
        (WebCore::SVGEllipseElement::synchronizeRequiredFeatures):
        (WebCore::SVGEllipseElement::synchronizeRequiredExtensions):
        (WebCore::SVGEllipseElement::synchronizeSystemLanguage):
        * svg/SVGFEBlendElement.cpp:
        (WebCore::SVGFEBlendElement::SVGFEBlendElement):
        * svg/SVGFEBlendElement.h:
        * svg/SVGFEColorMatrixElement.cpp:
        (WebCore::SVGFEColorMatrixElement::SVGFEColorMatrixElement):
        * svg/SVGFEColorMatrixElement.h:
        * svg/SVGFEComponentTransferElement.cpp:
        (WebCore::SVGFEComponentTransferElement::SVGFEComponentTransferElement):
        * svg/SVGFEComponentTransferElement.h:
        * svg/SVGFECompositeElement.cpp:
        (WebCore::SVGFECompositeElement::SVGFECompositeElement):
        * svg/SVGFECompositeElement.h:
        * svg/SVGFEConvolveMatrixElement.cpp:
        (WebCore::SVGFEConvolveMatrixElement::SVGFEConvolveMatrixElement):
        * svg/SVGFEConvolveMatrixElement.h:
        * svg/SVGFEDiffuseLightingElement.cpp:
        (WebCore::SVGFEDiffuseLightingElement::SVGFEDiffuseLightingElement):
        * svg/SVGFEDiffuseLightingElement.h:
        * svg/SVGFEDisplacementMapElement.cpp:
        (WebCore::SVGFEDisplacementMapElement::SVGFEDisplacementMapElement):
        * svg/SVGFEDisplacementMapElement.h:
        * svg/SVGFEDropShadowElement.cpp:
        (WebCore::SVGFEDropShadowElement::SVGFEDropShadowElement):
        * svg/SVGFEDropShadowElement.h:
        * svg/SVGFEFloodElement.cpp:
        * svg/SVGFEFloodElement.h:
        * svg/SVGFEGaussianBlurElement.cpp:
        (WebCore::SVGFEGaussianBlurElement::SVGFEGaussianBlurElement):
        * svg/SVGFEGaussianBlurElement.h:
        * svg/SVGFEImageElement.cpp:
        (WebCore::SVGFEImageElement::SVGFEImageElement):
        * svg/SVGFEImageElement.h:
        * svg/SVGFELightElement.cpp:
        (WebCore::SVGFELightElement::SVGFELightElement):
        * svg/SVGFELightElement.h:
        * svg/SVGFEMergeElement.cpp:
        * svg/SVGFEMergeElement.h:
        * svg/SVGFEMergeNodeElement.cpp:
        (WebCore::SVGFEMergeNodeElement::SVGFEMergeNodeElement):
        * svg/SVGFEMergeNodeElement.h:
        * svg/SVGFEMorphologyElement.cpp:
        (WebCore::SVGFEMorphologyElement::SVGFEMorphologyElement):
        * svg/SVGFEMorphologyElement.h:
        * svg/SVGFEOffsetElement.cpp:
        (WebCore::SVGFEOffsetElement::SVGFEOffsetElement):
        * svg/SVGFEOffsetElement.h:
        * svg/SVGFESpecularLightingElement.cpp:
        (WebCore::SVGFESpecularLightingElement::SVGFESpecularLightingElement):
        * svg/SVGFESpecularLightingElement.h:
        * svg/SVGFETileElement.cpp:
        (WebCore::SVGFETileElement::SVGFETileElement):
        * svg/SVGFETileElement.h:
        * svg/SVGFETurbulenceElement.cpp:
        (WebCore::SVGFETurbulenceElement::SVGFETurbulenceElement):
        * svg/SVGFETurbulenceElement.h:
        * svg/SVGFilterElement.cpp:
        (WebCore::SVGFilterElement::SVGFilterElement):
        * svg/SVGFilterElement.h:
        * svg/SVGFilterPrimitiveStandardAttributes.cpp:
        (WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes):
        * svg/SVGFilterPrimitiveStandardAttributes.h:
        * svg/SVGFitToViewBox.cpp:
        * svg/SVGFitToViewBox.h:
        * svg/SVGFontElement.cpp:
        (WebCore::SVGFontElement::SVGFontElement):
        * svg/SVGFontElement.h:
        (WebCore::SVGFontElement::rendererIsNeeded):
        * svg/SVGForeignObjectElement.cpp:
        (WebCore::SVGForeignObjectElement::SVGForeignObjectElement):
        * svg/SVGForeignObjectElement.h:
        (WebCore::SVGForeignObjectElement::synchronizeRequiredFeatures):
        (WebCore::SVGForeignObjectElement::synchronizeRequiredExtensions):
        (WebCore::SVGForeignObjectElement::synchronizeSystemLanguage):
        * svg/SVGGElement.cpp:
        (WebCore::SVGGElement::SVGGElement):
        * svg/SVGGElement.h:
        (WebCore::SVGGElement::synchronizeRequiredFeatures):
        (WebCore::SVGGElement::synchronizeRequiredExtensions):
        (WebCore::SVGGElement::synchronizeSystemLanguage):
        * svg/SVGGlyphElement.cpp:
        * svg/SVGGlyphElement.h:
        * svg/SVGGradientElement.cpp:
        (WebCore::SVGGradientElement::SVGGradientElement):
        (WebCore::SVGGradientElement::svgAttributeChanged):
        * svg/SVGGradientElement.h:
        * svg/SVGImageElement.cpp:
        (WebCore::SVGImageElement::SVGImageElement):
        * svg/SVGImageElement.h:
        (WebCore::SVGImageElement::synchronizeRequiredFeatures):
        (WebCore::SVGImageElement::synchronizeRequiredExtensions):
        (WebCore::SVGImageElement::synchronizeSystemLanguage):
        * svg/SVGLineElement.cpp:
        (WebCore::SVGLineElement::SVGLineElement):
        * svg/SVGLineElement.h:
        (WebCore::SVGLineElement::synchronizeRequiredFeatures):
        (WebCore::SVGLineElement::synchronizeRequiredExtensions):
        (WebCore::SVGLineElement::synchronizeSystemLanguage):
        * svg/SVGLinearGradientElement.cpp:
        (WebCore::SVGLinearGradientElement::SVGLinearGradientElement):
        * svg/SVGLinearGradientElement.h:
        * svg/SVGMPathElement.cpp:
        (WebCore::SVGMPathElement::SVGMPathElement):
        * svg/SVGMPathElement.h:
        * svg/SVGMarkerElement.cpp:
        (WebCore::SVGMarkerElement::orientTypePropertyInfo):
        (WebCore::SVGMarkerElement::SVGMarkerElement):
        (WebCore::SVGMarkerElement::setOrientToAuto):
        (WebCore::SVGMarkerElement::setOrientToAngle):
        (WebCore::SVGMarkerElement::synchronizeOrientType):
        (WebCore::SVGMarkerElement::lookupOrCreateOrientTypeWrapper):
        (WebCore::SVGMarkerElement::orientTypeAnimated):
        * svg/SVGMarkerElement.h:
        * svg/SVGMaskElement.cpp:
        (WebCore::SVGMaskElement::SVGMaskElement):
        * svg/SVGMaskElement.h:
        (WebCore::SVGMaskElement::synchronizeRequiredFeatures):
        (WebCore::SVGMaskElement::synchronizeRequiredExtensions):
        (WebCore::SVGMaskElement::synchronizeSystemLanguage):
        * svg/SVGMissingGlyphElement.cpp:
        * svg/SVGMissingGlyphElement.h:
        * svg/SVGPathElement.cpp:
        (WebCore::SVGPathElement::dPropertyInfo):
        (WebCore::SVGPathElement::SVGPathElement):
        (WebCore::SVGPathElement::svgAttributeChanged):
        (WebCore::SVGPathElement::lookupOrCreateDWrapper):
        (WebCore::SVGPathElement::synchronizeD):
        (WebCore::SVGPathElement::pathSegList):
        (WebCore::SVGPathElement::animatedPathSegList):
        * svg/SVGPathElement.h:
        (WebCore::SVGPathElement::pathByteStream):
        (WebCore::SVGPathElement::synchronizeRequiredFeatures):
        (WebCore::SVGPathElement::synchronizeRequiredExtensions):
        (WebCore::SVGPathElement::synchronizeSystemLanguage):
        * svg/SVGPathSegWithContext.h:
        (WebCore::SVGPathSegWithContext::animatedProperty):
        * svg/SVGPatternElement.cpp:
        (WebCore::SVGPatternElement::SVGPatternElement):
        * svg/SVGPatternElement.h:
        (WebCore::SVGPatternElement::synchronizeRequiredFeatures):
        (WebCore::SVGPatternElement::synchronizeRequiredExtensions):
        (WebCore::SVGPatternElement::synchronizeSystemLanguage):
        * svg/SVGPolyElement.cpp:
        (WebCore::SVGPolyElement::pointsPropertyInfo):
        (WebCore::SVGPolyElement::SVGPolyElement):
        (WebCore::SVGPolyElement::parseMappedAttribute):
        (WebCore::SVGPolyElement::synchronizePoints):
        (WebCore::SVGPolyElement::lookupOrCreatePointsWrapper):
        (WebCore::SVGPolyElement::points):
        (WebCore::SVGPolyElement::animatedPoints):
        * svg/SVGPolyElement.h:
        (WebCore::SVGPolyElement::synchronizeRequiredFeatures):
        (WebCore::SVGPolyElement::synchronizeRequiredExtensions):
        (WebCore::SVGPolyElement::synchronizeSystemLanguage):
        * svg/SVGRadialGradientElement.cpp:
        (WebCore::SVGRadialGradientElement::SVGRadialGradientElement):
        * svg/SVGRadialGradientElement.h:
        * svg/SVGRectElement.cpp:
        (WebCore::SVGRectElement::SVGRectElement):
        * svg/SVGRectElement.h:
        (WebCore::SVGRectElement::synchronizeRequiredFeatures):
        (WebCore::SVGRectElement::synchronizeRequiredExtensions):
        (WebCore::SVGRectElement::synchronizeSystemLanguage):
        * svg/SVGSVGElement.cpp:
        (WebCore::SVGSVGElement::SVGSVGElement):
        * svg/SVGSVGElement.h:
        (WebCore::SVGSVGElement::synchronizeRequiredFeatures):
        (WebCore::SVGSVGElement::synchronizeRequiredExtensions):
        (WebCore::SVGSVGElement::synchronizeSystemLanguage):
        * svg/SVGScriptElement.cpp:
        (WebCore::SVGScriptElement::SVGScriptElement):
        * svg/SVGScriptElement.h:
        * svg/SVGStopElement.cpp:
        (WebCore::SVGStopElement::SVGStopElement):
        * svg/SVGStopElement.h:
        * svg/SVGStyledElement.cpp:
        (WebCore::SVGStyledElement::SVGStyledElement):
        (WebCore::cssPropertyToTypeMap):
        (WebCore::SVGStyledElement::animatedPropertyTypeForAttribute):
        * svg/SVGStyledElement.h:
        * svg/SVGStyledTransformableElement.cpp:
        (WebCore::SVGStyledTransformableElement::SVGStyledTransformableElement):
        * svg/SVGStyledTransformableElement.h:
        * svg/SVGSwitchElement.cpp:
        (WebCore::SVGSwitchElement::SVGSwitchElement):
        * svg/SVGSwitchElement.h:
        (WebCore::SVGSwitchElement::synchronizeRequiredFeatures):
        (WebCore::SVGSwitchElement::synchronizeRequiredExtensions):
        (WebCore::SVGSwitchElement::synchronizeSystemLanguage):
        * svg/SVGSymbolElement.cpp:
        (WebCore::SVGSymbolElement::SVGSymbolElement):
        * svg/SVGSymbolElement.h:
        * svg/SVGTRefElement.cpp:
        (WebCore::SVGTRefElement::SVGTRefElement):
        * svg/SVGTRefElement.h:
        * svg/SVGTSpanElement.cpp:
        * svg/SVGTSpanElement.h:
        * svg/SVGTests.cpp:
        (WebCore::SVGTests::requiredFeaturesPropertyInfo):
        (WebCore::SVGTests::requiredExtensionsPropertyInfo):
        (WebCore::SVGTests::systemLanguagePropertyInfo):
        (WebCore::SVGTests::attributeToPropertyMap):
        (WebCore::SVGTests::synchronizeRequiredFeatures):
        (WebCore::SVGTests::synchronizeRequiredExtensions):
        (WebCore::SVGTests::synchronizeSystemLanguage):
        * svg/SVGTests.h:
        * svg/SVGTextContentElement.cpp:
        (WebCore::SVGTextContentElement::textLengthPropertyInfo):
        (WebCore::SVGTextContentElement::SVGTextContentElement):
        (WebCore::SVGTextContentElement::synchronizeTextLength):
        (WebCore::SVGTextContentElement::lookupOrCreateTextLengthWrapper):
        (WebCore::SVGTextContentElement::textLengthAnimated):
        * svg/SVGTextContentElement.h:
        (WebCore::SVGTextContentElement::synchronizeRequiredFeatures):
        (WebCore::SVGTextContentElement::synchronizeRequiredExtensions):
        (WebCore::SVGTextContentElement::synchronizeSystemLanguage):
        * svg/SVGTextElement.cpp:
        (WebCore::SVGTextElement::SVGTextElement):
        * svg/SVGTextElement.h:
        * svg/SVGTextPathElement.cpp:
        (WebCore::SVGTextPathElement::SVGTextPathElement):
        * svg/SVGTextPathElement.h:
        * svg/SVGTextPositioningElement.cpp:
        (WebCore::SVGTextPositioningElement::SVGTextPositioningElement):
        * svg/SVGTextPositioningElement.h:
        * svg/SVGTitleElement.cpp:
        * svg/SVGTitleElement.h:
        (WebCore::SVGTitleElement::rendererIsNeeded):
        * svg/SVGUseElement.cpp:
        (WebCore::SVGUseElement::SVGUseElement):
        * svg/SVGUseElement.h:
        (WebCore::SVGUseElement::synchronizeRequiredFeatures):
        (WebCore::SVGUseElement::synchronizeRequiredExtensions):
        (WebCore::SVGUseElement::synchronizeSystemLanguage):
        * svg/SVGViewElement.cpp:
        (WebCore::SVGViewElement::SVGViewElement):
        * svg/SVGViewElement.h:
        * svg/SVGViewSpec.cpp:
        (WebCore::SVGViewSpec::SVGViewSpec):
        * svg/SVGViewSpec.h:
        * svg/properties/SVGAnimatedProperty.h:
        (WebCore::SVGAnimatedProperty::lookupOrCreateWrapper):
        (WebCore::SVGAnimatedProperty::lookupWrapper):
        * svg/properties/SVGAnimatedPropertyMacros.h:
        * svg/properties/SVGAnimatedPropertySynchronizer.h:
        * svg/properties/SVGAttributeToPropertyMap.cpp: Added.
        (WebCore::SVGAttributeToPropertyMap::addProperties):
        (WebCore::SVGAttributeToPropertyMap::addProperty):
        (WebCore::SVGAttributeToPropertyMap::animatedPropertiesForAttribute):
        (WebCore::SVGAttributeToPropertyMap::animatedPropertyTypeForAttribute):
        (WebCore::SVGAttributeToPropertyMap::synchronizeProperties):
        (WebCore::SVGAttributeToPropertyMap::synchronizeProperty):
        (WebCore::SVGAttributeToPropertyMap::animatedProperty):
        * svg/properties/SVGAttributeToPropertyMap.h: Added.
        (WebCore::SVGAttributeToPropertyMap::SVGAttributeToPropertyMap):
        (WebCore::SVGAttributeToPropertyMap::~SVGAttributeToPropertyMap):
        (WebCore::SVGAttributeToPropertyMap::isEmpty):
        * svg/properties/SVGPropertyInfo.h: Added.
        (WebCore::SVGPropertyInfo::SVGPropertyInfo):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@90680 268f45cc-cd09-0410-ab3c-d52691b4dbfc
171 files changed