Index: Source/core/svg/SVGAnimationElement.cpp |
diff --git a/Source/core/svg/SVGAnimationElement.cpp b/Source/core/svg/SVGAnimationElement.cpp |
index e920868f82869963ad5f904f1140e6b728d4c0fd..02cf8923f6fce1f1ff5bcc317bbfa333302d292f 100644 |
--- a/Source/core/svg/SVGAnimationElement.cpp |
+++ b/Source/core/svg/SVGAnimationElement.cpp |
@@ -336,7 +336,7 @@ String SVGAnimationElement::fromValue() const |
return fastGetAttribute(SVGNames::fromAttr); |
} |
-bool SVGAnimationElement::isAdditive() const |
+bool SVGAnimationElement::isAdditive() |
{ |
DEFINE_STATIC_LOCAL(const AtomicString, sum, ("sum", AtomicString::ConstructFromLiteral)); |
const AtomicString& value = fastGetAttribute(SVGNames::additiveAttr); |
@@ -486,26 +486,6 @@ void SVGAnimationElement::currentValuesFromKeyPoints(float percent, float& effec |
to = m_values[index + 1]; |
} |
-AnimatedPropertyType SVGAnimationElement::determineAnimatedPropertyType() const |
-{ |
- if (!targetElement()) |
- return AnimatedString; |
- |
- RefPtr<SVGAnimatedPropertyBase> property = targetElement()->propertyFromAttribute(attributeName()); |
- if (property) { |
- AnimatedPropertyType propertyType = property->type(); |
- |
- // Only <animatedTransform> is allowed to animate AnimatedTransformList. |
- // http://www.w3.org/TR/SVG/animate.html#AnimationAttributesAndProperties |
- if (propertyType == AnimatedTransformList && !isSVGAnimateTransformElement(*this)) |
- return AnimatedUnknown; |
- |
- return propertyType; |
- } |
- |
- return SVGElement::animatedPropertyTypeForCSSAttribute(attributeName()); |
-} |
- |
void SVGAnimationElement::currentValuesForValuesAnimation(float percent, float& effectivePercent, String& from, String& to) |
{ |
unsigned valuesCount = m_values.size(); |
@@ -520,14 +500,13 @@ void SVGAnimationElement::currentValuesForValuesAnimation(float percent, float& |
} |
CalcMode calcMode = this->calcMode(); |
- if (hasTagName(SVGNames::animateTag)) { |
- AnimatedPropertyType attributeType = determineAnimatedPropertyType(); |
- // Fall back to discrete animations for Strings. |
- if (attributeType == AnimatedBoolean |
- || attributeType == AnimatedEnumeration |
- || attributeType == AnimatedPreserveAspectRatio |
- || attributeType == AnimatedString) |
+ if (isSVGAnimateElement(*this)) { |
+ SVGAnimateElement& animateElement = toSVGAnimateElement(*this); |
+ if (!animateElement.animatedPropertyTypeSupportsAddition()) { |
+ ASSERT(animateElement.animatedPropertyType() != AnimatedTransformList || isSVGAnimateTransformElement(*this)); |
+ ASSERT(animateElement.animatedPropertyType() != AnimatedUnknown); |
calcMode = CalcModeDiscrete; |
+ } |
} |
if (!m_keyPoints.isEmpty() && calcMode != CalcModePaced) |
return currentValuesFromKeyPoints(percent, effectivePercent, from, to); |