Index: Source/core/svg/SVGAnimatedType.cpp |
diff --git a/Source/core/svg/SVGAnimatedType.cpp b/Source/core/svg/SVGAnimatedType.cpp |
index 592e7e7e1b3229cbc1b15fc669d30166b6d2ee7d..cdaf271b1dcf2a75020d2b51553babb77f0f2e18 100644 |
--- a/Source/core/svg/SVGAnimatedType.cpp |
+++ b/Source/core/svg/SVGAnimatedType.cpp |
@@ -52,12 +52,6 @@ SVGAnimatedType::~SVGAnimatedType() |
case AnimatedIntegerOptionalInteger: |
delete m_data.integerOptionalInteger; |
break; |
- case AnimatedLength: |
- delete m_data.length; |
- break; |
- case AnimatedLengthList: |
- delete m_data.lengthList; |
- break; |
case AnimatedNumber: |
delete m_data.number; |
break; |
@@ -85,6 +79,10 @@ SVGAnimatedType::~SVGAnimatedType() |
case AnimatedTransformList: |
delete m_data.transformList; |
break; |
+ case AnimatedLength: |
+ case AnimatedLengthList: |
+ // handled by RefPtr |
+ break; |
case AnimatedUnknown: |
ASSERT_NOT_REACHED(); |
break; |
@@ -139,22 +137,6 @@ PassOwnPtr<SVGAnimatedType> SVGAnimatedType::createIntegerOptionalInteger(pair<i |
return animatedType.release(); |
} |
-PassOwnPtr<SVGAnimatedType> SVGAnimatedType::createLength(SVGLength* length) |
-{ |
- ASSERT(length); |
- OwnPtr<SVGAnimatedType> animatedType = adoptPtr(new SVGAnimatedType(AnimatedLength)); |
- animatedType->m_data.length = length; |
- return animatedType.release(); |
-} |
- |
-PassOwnPtr<SVGAnimatedType> SVGAnimatedType::createLengthList(SVGLengthList* lengthList) |
-{ |
- ASSERT(lengthList); |
- OwnPtr<SVGAnimatedType> animatedType = adoptPtr(new SVGAnimatedType(AnimatedLengthList)); |
- animatedType->m_data.lengthList = lengthList; |
- return animatedType.release(); |
-} |
- |
PassOwnPtr<SVGAnimatedType> SVGAnimatedType::createNumber(float* number) |
{ |
ASSERT(number); |
@@ -241,12 +223,6 @@ String SVGAnimatedType::valueAsString() |
case AnimatedColor: |
ASSERT(m_data.color); |
return m_data.color->serializedAsCSSComponentValue(); |
- case AnimatedLength: |
- ASSERT(m_data.length); |
- return m_data.length->valueAsString(); |
- case AnimatedLengthList: |
- ASSERT(m_data.lengthList); |
- return m_data.lengthList->valueAsString(); |
case AnimatedNumber: |
ASSERT(m_data.number); |
return String::number(*m_data.number); |
@@ -258,6 +234,11 @@ String SVGAnimatedType::valueAsString() |
ASSERT(m_data.string); |
return *m_data.string; |
+ // Below properties have migrated to new property implementation. |
+ case AnimatedLength: |
+ case AnimatedLengthList: |
+ return m_newProperty->valueAsString(); |
+ |
// These types don't appear in the table in SVGElement::cssPropertyToTypeMap() and thus don't need valueAsString() support. |
case AnimatedAngle: |
case AnimatedBoolean: |
@@ -286,16 +267,6 @@ bool SVGAnimatedType::setValueAsString(const QualifiedName& attrName, const Stri |
ASSERT(m_data.color); |
*m_data.color = value.isEmpty() ? Color() : SVGColor::colorFromRGBColorString(value); |
break; |
- case AnimatedLength: { |
- ASSERT(m_data.length); |
- TrackExceptionState exceptionState; |
- m_data.length->setValueAsString(value, SVGLength::lengthModeForAnimatedLengthAttribute(attrName), exceptionState); |
- return !exceptionState.hadException(); |
- } |
- case AnimatedLengthList: |
- ASSERT(m_data.lengthList); |
- m_data.lengthList->parse(value, SVGLength::lengthModeForAnimatedLengthAttribute(attrName)); |
- break; |
case AnimatedNumber: |
ASSERT(m_data.number); |
parseNumberFromString(value, *m_data.number); |
@@ -309,6 +280,12 @@ bool SVGAnimatedType::setValueAsString(const QualifiedName& attrName, const Stri |
*m_data.string = value; |
break; |
+ // Below properties have migrated to new property implementation. |
+ case AnimatedLength: |
+ case AnimatedLengthList: |
+ // Always use createForAnimation call path for these implementations. |
+ return false; |
+ |
// These types don't appear in the table in SVGElement::cssPropertyToTypeMap() and thus don't need setValueAsString() support. |
case AnimatedAngle: |
case AnimatedBoolean: |