| Index: Source/core/svg/SVGElement.cpp
|
| diff --git a/Source/core/svg/SVGElement.cpp b/Source/core/svg/SVGElement.cpp
|
| index d00a6f5a99d673d3b6bf8f15f584e9b296fdc163..f7bd5fe0178a32f9008f21f40e47890501c0b4ac 100644
|
| --- a/Source/core/svg/SVGElement.cpp
|
| +++ b/Source/core/svg/SVGElement.cpp
|
| @@ -662,84 +662,74 @@ void SVGElement::parseAttribute(const QualifiedName& name, const AtomicString& v
|
| }
|
|
|
| typedef HashMap<QualifiedName, AnimatedPropertyType> AttributeToPropertyTypeMap;
|
| -static inline AttributeToPropertyTypeMap& cssPropertyToTypeMap()
|
| -{
|
| - DEFINE_STATIC_LOCAL(AttributeToPropertyTypeMap, s_cssPropertyMap, ());
|
| -
|
| - if (!s_cssPropertyMap.isEmpty())
|
| - return s_cssPropertyMap;
|
| -
|
| - // Fill the map for the first use.
|
| - s_cssPropertyMap.set(alignment_baselineAttr, AnimatedString);
|
| - s_cssPropertyMap.set(baseline_shiftAttr, AnimatedString);
|
| - s_cssPropertyMap.set(buffered_renderingAttr, AnimatedString);
|
| - s_cssPropertyMap.set(clipAttr, AnimatedRect);
|
| - s_cssPropertyMap.set(clip_pathAttr, AnimatedString);
|
| - s_cssPropertyMap.set(clip_ruleAttr, AnimatedString);
|
| - s_cssPropertyMap.set(SVGNames::colorAttr, AnimatedColor);
|
| - s_cssPropertyMap.set(color_interpolationAttr, AnimatedString);
|
| - s_cssPropertyMap.set(color_interpolation_filtersAttr, AnimatedString);
|
| - s_cssPropertyMap.set(color_profileAttr, AnimatedString);
|
| - s_cssPropertyMap.set(color_renderingAttr, AnimatedString);
|
| - s_cssPropertyMap.set(cursorAttr, AnimatedString);
|
| - s_cssPropertyMap.set(displayAttr, AnimatedString);
|
| - s_cssPropertyMap.set(dominant_baselineAttr, AnimatedString);
|
| - s_cssPropertyMap.set(fillAttr, AnimatedColor);
|
| - s_cssPropertyMap.set(fill_opacityAttr, AnimatedNumber);
|
| - s_cssPropertyMap.set(fill_ruleAttr, AnimatedString);
|
| - s_cssPropertyMap.set(filterAttr, AnimatedString);
|
| - s_cssPropertyMap.set(flood_colorAttr, AnimatedColor);
|
| - s_cssPropertyMap.set(flood_opacityAttr, AnimatedNumber);
|
| - s_cssPropertyMap.set(font_familyAttr, AnimatedString);
|
| - s_cssPropertyMap.set(font_sizeAttr, AnimatedLength);
|
| - s_cssPropertyMap.set(font_stretchAttr, AnimatedString);
|
| - s_cssPropertyMap.set(font_styleAttr, AnimatedString);
|
| - s_cssPropertyMap.set(font_variantAttr, AnimatedString);
|
| - s_cssPropertyMap.set(font_weightAttr, AnimatedString);
|
| - s_cssPropertyMap.set(image_renderingAttr, AnimatedString);
|
| - s_cssPropertyMap.set(kerningAttr, AnimatedLength);
|
| - s_cssPropertyMap.set(letter_spacingAttr, AnimatedLength);
|
| - s_cssPropertyMap.set(lighting_colorAttr, AnimatedColor);
|
| - s_cssPropertyMap.set(marker_endAttr, AnimatedString);
|
| - s_cssPropertyMap.set(marker_midAttr, AnimatedString);
|
| - s_cssPropertyMap.set(marker_startAttr, AnimatedString);
|
| - s_cssPropertyMap.set(maskAttr, AnimatedString);
|
| - s_cssPropertyMap.set(mask_typeAttr, AnimatedString);
|
| - s_cssPropertyMap.set(opacityAttr, AnimatedNumber);
|
| - s_cssPropertyMap.set(overflowAttr, AnimatedString);
|
| - s_cssPropertyMap.set(paint_orderAttr, AnimatedString);
|
| - s_cssPropertyMap.set(pointer_eventsAttr, AnimatedString);
|
| - s_cssPropertyMap.set(shape_renderingAttr, AnimatedString);
|
| - s_cssPropertyMap.set(stop_colorAttr, AnimatedColor);
|
| - s_cssPropertyMap.set(stop_opacityAttr, AnimatedNumber);
|
| - s_cssPropertyMap.set(strokeAttr, AnimatedColor);
|
| - s_cssPropertyMap.set(stroke_dasharrayAttr, AnimatedLengthList);
|
| - s_cssPropertyMap.set(stroke_dashoffsetAttr, AnimatedLength);
|
| - s_cssPropertyMap.set(stroke_linecapAttr, AnimatedString);
|
| - s_cssPropertyMap.set(stroke_linejoinAttr, AnimatedString);
|
| - s_cssPropertyMap.set(stroke_miterlimitAttr, AnimatedNumber);
|
| - s_cssPropertyMap.set(stroke_opacityAttr, AnimatedNumber);
|
| - s_cssPropertyMap.set(stroke_widthAttr, AnimatedLength);
|
| - s_cssPropertyMap.set(text_anchorAttr, AnimatedString);
|
| - s_cssPropertyMap.set(text_decorationAttr, AnimatedString);
|
| - s_cssPropertyMap.set(text_renderingAttr, AnimatedString);
|
| - s_cssPropertyMap.set(vector_effectAttr, AnimatedString);
|
| - s_cssPropertyMap.set(visibilityAttr, AnimatedString);
|
| - s_cssPropertyMap.set(word_spacingAttr, AnimatedLength);
|
| - return s_cssPropertyMap;
|
| -}
|
| -
|
| -void SVGElement::animatedPropertyTypeForAttribute(const QualifiedName& attributeName, Vector<AnimatedPropertyType>& propertyTypes)
|
| -{
|
| - RefPtr<NewSVGAnimatedPropertyBase> animatedProperty = m_newAttributeToPropertyMap.get(attributeName);
|
| - if (animatedProperty) {
|
| - propertyTypes.append(animatedProperty->type());
|
| - return;
|
| +AnimatedPropertyType SVGElement::animatedPropertyTypeForCSSAttribute(const QualifiedName& attributeName)
|
| +{
|
| + DEFINE_STATIC_LOCAL(AttributeToPropertyTypeMap, cssPropertyMap, ());
|
| +
|
| + if (cssPropertyMap.isEmpty()) {
|
| + // Fill the map for the first use.
|
| + cssPropertyMap.set(alignment_baselineAttr, AnimatedString);
|
| + cssPropertyMap.set(baseline_shiftAttr, AnimatedString);
|
| + cssPropertyMap.set(buffered_renderingAttr, AnimatedString);
|
| + cssPropertyMap.set(clipAttr, AnimatedRect);
|
| + cssPropertyMap.set(clip_pathAttr, AnimatedString);
|
| + cssPropertyMap.set(clip_ruleAttr, AnimatedString);
|
| + cssPropertyMap.set(SVGNames::colorAttr, AnimatedColor);
|
| + cssPropertyMap.set(color_interpolationAttr, AnimatedString);
|
| + cssPropertyMap.set(color_interpolation_filtersAttr, AnimatedString);
|
| + cssPropertyMap.set(color_profileAttr, AnimatedString);
|
| + cssPropertyMap.set(color_renderingAttr, AnimatedString);
|
| + cssPropertyMap.set(cursorAttr, AnimatedString);
|
| + cssPropertyMap.set(displayAttr, AnimatedString);
|
| + cssPropertyMap.set(dominant_baselineAttr, AnimatedString);
|
| + cssPropertyMap.set(fillAttr, AnimatedColor);
|
| + cssPropertyMap.set(fill_opacityAttr, AnimatedNumber);
|
| + cssPropertyMap.set(fill_ruleAttr, AnimatedString);
|
| + cssPropertyMap.set(filterAttr, AnimatedString);
|
| + cssPropertyMap.set(flood_colorAttr, AnimatedColor);
|
| + cssPropertyMap.set(flood_opacityAttr, AnimatedNumber);
|
| + cssPropertyMap.set(font_familyAttr, AnimatedString);
|
| + cssPropertyMap.set(font_sizeAttr, AnimatedLength);
|
| + cssPropertyMap.set(font_stretchAttr, AnimatedString);
|
| + cssPropertyMap.set(font_styleAttr, AnimatedString);
|
| + cssPropertyMap.set(font_variantAttr, AnimatedString);
|
| + cssPropertyMap.set(font_weightAttr, AnimatedString);
|
| + cssPropertyMap.set(image_renderingAttr, AnimatedString);
|
| + cssPropertyMap.set(kerningAttr, AnimatedLength);
|
| + cssPropertyMap.set(letter_spacingAttr, AnimatedLength);
|
| + cssPropertyMap.set(lighting_colorAttr, AnimatedColor);
|
| + cssPropertyMap.set(marker_endAttr, AnimatedString);
|
| + cssPropertyMap.set(marker_midAttr, AnimatedString);
|
| + cssPropertyMap.set(marker_startAttr, AnimatedString);
|
| + cssPropertyMap.set(maskAttr, AnimatedString);
|
| + cssPropertyMap.set(mask_typeAttr, AnimatedString);
|
| + cssPropertyMap.set(opacityAttr, AnimatedNumber);
|
| + cssPropertyMap.set(overflowAttr, AnimatedString);
|
| + cssPropertyMap.set(paint_orderAttr, AnimatedString);
|
| + cssPropertyMap.set(pointer_eventsAttr, AnimatedString);
|
| + cssPropertyMap.set(shape_renderingAttr, AnimatedString);
|
| + cssPropertyMap.set(stop_colorAttr, AnimatedColor);
|
| + cssPropertyMap.set(stop_opacityAttr, AnimatedNumber);
|
| + cssPropertyMap.set(strokeAttr, AnimatedColor);
|
| + cssPropertyMap.set(stroke_dasharrayAttr, AnimatedLengthList);
|
| + cssPropertyMap.set(stroke_dashoffsetAttr, AnimatedLength);
|
| + cssPropertyMap.set(stroke_linecapAttr, AnimatedString);
|
| + cssPropertyMap.set(stroke_linejoinAttr, AnimatedString);
|
| + cssPropertyMap.set(stroke_miterlimitAttr, AnimatedNumber);
|
| + cssPropertyMap.set(stroke_opacityAttr, AnimatedNumber);
|
| + cssPropertyMap.set(stroke_widthAttr, AnimatedLength);
|
| + cssPropertyMap.set(text_anchorAttr, AnimatedString);
|
| + cssPropertyMap.set(text_decorationAttr, AnimatedString);
|
| + cssPropertyMap.set(text_renderingAttr, AnimatedString);
|
| + cssPropertyMap.set(vector_effectAttr, AnimatedString);
|
| + cssPropertyMap.set(visibilityAttr, AnimatedString);
|
| + cssPropertyMap.set(word_spacingAttr, AnimatedLength);
|
| }
|
|
|
| - AttributeToPropertyTypeMap& cssPropertyTypeMap = cssPropertyToTypeMap();
|
| - if (cssPropertyTypeMap.contains(attributeName))
|
| - propertyTypes.append(cssPropertyTypeMap.get(attributeName));
|
| + if (cssPropertyMap.contains(attributeName))
|
| + return cssPropertyMap.get(attributeName);
|
| +
|
| + return AnimatedUnknown;
|
| }
|
|
|
| void SVGElement::addToPropertyMap(PassRefPtr<NewSVGAnimatedPropertyBase> passProperty)
|
| @@ -756,7 +746,7 @@ PassRefPtr<NewSVGAnimatedPropertyBase> SVGElement::propertyFromAttribute(const Q
|
|
|
| bool SVGElement::isAnimatableCSSProperty(const QualifiedName& attrName)
|
| {
|
| - return cssPropertyToTypeMap().contains(attrName);
|
| + return animatedPropertyTypeForCSSAttribute(attrName) != AnimatedUnknown;
|
| }
|
|
|
| bool SVGElement::isPresentationAttribute(const QualifiedName& name) const
|
|
|