| Index: Source/core/svg/SVGAnimatedTypeAnimator.cpp
|
| diff --git a/Source/core/svg/SVGAnimatedTypeAnimator.cpp b/Source/core/svg/SVGAnimatedTypeAnimator.cpp
|
| index 087699a8abf35b7df0b1d441e61eae70e6252768..9e9091040956f655a0e73de3c8138ed7d0307caa 100644
|
| --- a/Source/core/svg/SVGAnimatedTypeAnimator.cpp
|
| +++ b/Source/core/svg/SVGAnimatedTypeAnimator.cpp
|
| @@ -25,7 +25,6 @@
|
| #include "core/svg/SVGAnimateTransformElement.h"
|
| #include "core/svg/SVGAnimatedColor.h"
|
| #include "core/svg/SVGAnimationElement.h"
|
| -#include "core/svg/SVGElement.h"
|
| #include "core/svg/SVGLength.h"
|
| #include "core/svg/SVGLengthList.h"
|
| #include "core/svg/SVGNumber.h"
|
| @@ -61,7 +60,7 @@ SVGAnimatedTypeAnimator::~SVGAnimatedTypeAnimator()
|
| {
|
| }
|
|
|
| -PassRefPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::createPropertyForAnimation(const String& value)
|
| +PassRefPtrWillBeRawPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::createPropertyForAnimation(const String& value)
|
| {
|
| if (isAnimatingSVGDom()) {
|
| // SVG DOM animVal animation code-path.
|
| @@ -89,22 +88,22 @@ PassRefPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::createPropertyForAnimation(
|
| case AnimatedColor:
|
| return SVGColorProperty::create(value.isEmpty() ? StyleColor::currentColor() : CSSParser::colorFromRGBColorString(value));
|
| case AnimatedNumber: {
|
| - RefPtr<SVGNumber> property = SVGNumber::create();
|
| + RefPtrWillBeRawPtr<SVGNumber> property = SVGNumber::create();
|
| property->setValueAsString(value, IGNORE_EXCEPTION);
|
| return property.release();
|
| }
|
| case AnimatedLength: {
|
| - RefPtr<SVGLength> property = SVGLength::create(LengthModeOther);
|
| + RefPtrWillBeRawPtr<SVGLength> property = SVGLength::create(LengthModeOther);
|
| property->setValueAsString(value, IGNORE_EXCEPTION);
|
| return property.release();
|
| }
|
| case AnimatedLengthList: {
|
| - RefPtr<SVGLengthList> property = SVGLengthList::create(LengthModeOther);
|
| + RefPtrWillBeRawPtr<SVGLengthList> property = SVGLengthList::create(LengthModeOther);
|
| property->setValueAsString(value, IGNORE_EXCEPTION);
|
| return property.release();
|
| }
|
| case AnimatedString: {
|
| - RefPtr<SVGString> property = SVGString::create();
|
| + RefPtrWillBeRawPtr<SVGString> property = SVGString::create();
|
| property->setValueAsString(value, IGNORE_EXCEPTION);
|
| return property.release();
|
| }
|
| @@ -135,18 +134,18 @@ PassRefPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::createPropertyForAnimation(
|
| return nullptr;
|
| }
|
|
|
| -PassRefPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::constructFromString(const String& value)
|
| +PassRefPtrWillBeRawPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::constructFromString(const String& value)
|
| {
|
| return createPropertyForAnimation(value);
|
| }
|
|
|
| -void SVGAnimatedTypeAnimator::calculateFromAndToValues(RefPtr<SVGPropertyBase>& from, RefPtr<SVGPropertyBase>& to, const String& fromString, const String& toString)
|
| +void SVGAnimatedTypeAnimator::calculateFromAndToValues(RefPtrWillBeMember<SVGPropertyBase>& from, RefPtrWillBeMember<SVGPropertyBase>& to, const String& fromString, const String& toString)
|
| {
|
| from = constructFromString(fromString);
|
| to = constructFromString(toString);
|
| }
|
|
|
| -void SVGAnimatedTypeAnimator::calculateFromAndByValues(RefPtr<SVGPropertyBase>& from, RefPtr<SVGPropertyBase>& to, const String& fromString, const String& byString)
|
| +void SVGAnimatedTypeAnimator::calculateFromAndByValues(RefPtrWillBeMember<SVGPropertyBase>& from, RefPtrWillBeMember<SVGPropertyBase>& to, const String& fromString, const String& byString)
|
| {
|
| from = constructFromString(fromString);
|
| to = constructFromString(byString);
|
| @@ -156,14 +155,14 @@ void SVGAnimatedTypeAnimator::calculateFromAndByValues(RefPtr<SVGPropertyBase>&
|
|
|
| namespace {
|
|
|
| -void setAnimatedValueOnAllTargetProperties(const WillBeHeapVector<RawPtrWillBeMember<SVGElement> >& list, const QualifiedName& attributeName, PassRefPtr<SVGPropertyBase> passValue)
|
| +void setAnimatedValueOnAllTargetProperties(const WillBeHeapVector<RawPtrWillBeMember<SVGElement> >& list, const QualifiedName& attributeName, PassRefPtrWillBeRawPtr<SVGPropertyBase> passValue)
|
| {
|
| - RefPtr<SVGPropertyBase> value = passValue;
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> value = passValue;
|
|
|
| WillBeHeapVector<RawPtrWillBeMember<SVGElement> >::const_iterator it = list.begin();
|
| WillBeHeapVector<RawPtrWillBeMember<SVGElement> >::const_iterator itEnd = list.end();
|
| for (; it != itEnd; ++it) {
|
| - RefPtr<SVGAnimatedPropertyBase> animatedProperty = (*it)->propertyFromAttribute(attributeName);
|
| + RefPtrWillBeRawPtr<SVGAnimatedPropertyBase> animatedProperty = (*it)->propertyFromAttribute(attributeName);
|
| if (animatedProperty)
|
| animatedProperty->setAnimatedValue(value);
|
| }
|
| @@ -171,17 +170,17 @@ void setAnimatedValueOnAllTargetProperties(const WillBeHeapVector<RawPtrWillBeMe
|
|
|
| }
|
|
|
| -PassRefPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::resetAnimation(const WillBeHeapVector<RawPtrWillBeMember<SVGElement> >& list)
|
| +PassRefPtrWillBeRawPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::resetAnimation(const WillBeHeapVector<RawPtrWillBeMember<SVGElement> >& list)
|
| {
|
| ASSERT(isAnimatingSVGDom());
|
| - RefPtr<SVGPropertyBase> animatedValue = m_animatedProperty->createAnimatedValue();
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> animatedValue = m_animatedProperty->createAnimatedValue();
|
| ASSERT(animatedValue->type() == m_type);
|
| setAnimatedValueOnAllTargetProperties(list, m_animatedProperty->attributeName(), animatedValue);
|
|
|
| return animatedValue.release();
|
| }
|
|
|
| -PassRefPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::startAnimValAnimation(const WillBeHeapVector<RawPtrWillBeMember<SVGElement> >& list)
|
| +PassRefPtrWillBeRawPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::startAnimValAnimation(const WillBeHeapVector<RawPtrWillBeMember<SVGElement> >& list)
|
| {
|
| ASSERT(isAnimatingSVGDom());
|
| SVGElement::InstanceUpdateBlocker blocker(m_contextElement);
|
| @@ -197,13 +196,13 @@ void SVGAnimatedTypeAnimator::stopAnimValAnimation(const WillBeHeapVector<RawPtr
|
| WillBeHeapVector<RawPtrWillBeMember<SVGElement> >::const_iterator it = list.begin();
|
| WillBeHeapVector<RawPtrWillBeMember<SVGElement> >::const_iterator itEnd = list.end();
|
| for (; it != itEnd; ++it) {
|
| - RefPtr<SVGAnimatedPropertyBase> animatedProperty = (*it)->propertyFromAttribute(m_animatedProperty->attributeName());
|
| + RefPtrWillBeRawPtr<SVGAnimatedPropertyBase> animatedProperty = (*it)->propertyFromAttribute(m_animatedProperty->attributeName());
|
| if (animatedProperty)
|
| animatedProperty->animationEnded();
|
| }
|
| }
|
|
|
| -PassRefPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::resetAnimValToBaseVal(const WillBeHeapVector<RawPtrWillBeMember<SVGElement> >& list)
|
| +PassRefPtrWillBeRawPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::resetAnimValToBaseVal(const WillBeHeapVector<RawPtrWillBeMember<SVGElement> >& list)
|
| {
|
| SVGElement::InstanceUpdateBlocker blocker(m_contextElement);
|
|
|
| @@ -211,19 +210,20 @@ PassRefPtr<SVGPropertyBase> SVGAnimatedTypeAnimator::resetAnimValToBaseVal(const
|
| }
|
|
|
| class ParsePropertyFromString {
|
| + STACK_ALLOCATED();
|
| public:
|
| explicit ParsePropertyFromString(SVGAnimatedTypeAnimator* animator)
|
| : m_animator(animator)
|
| {
|
| }
|
|
|
| - PassRefPtr<SVGPropertyBase> operator()(SVGAnimationElement*, const String& value)
|
| + PassRefPtrWillBeRawPtr<SVGPropertyBase> operator()(SVGAnimationElement*, const String& value)
|
| {
|
| return m_animator->createPropertyForAnimation(value);
|
| }
|
|
|
| private:
|
| - SVGAnimatedTypeAnimator* m_animator;
|
| + RawPtrWillBeMember<SVGAnimatedTypeAnimator> m_animator;
|
| };
|
|
|
| void SVGAnimatedTypeAnimator::calculateAnimatedValue(float percentage, unsigned repeatCount, SVGPropertyBase* from, SVGPropertyBase* to, SVGPropertyBase* toAtEndOfDuration, SVGPropertyBase* animated)
|
| @@ -231,15 +231,15 @@ void SVGAnimatedTypeAnimator::calculateAnimatedValue(float percentage, unsigned
|
| ASSERT(m_animationElement);
|
| ASSERT(m_contextElement);
|
|
|
| - RefPtr<SVGPropertyBase> fromValue = m_animationElement->animationMode() == ToAnimation ? animated : from;
|
| - RefPtr<SVGPropertyBase> toValue = to;
|
| - RefPtr<SVGPropertyBase> toAtEndOfDurationValue = toAtEndOfDuration;
|
| - RefPtr<SVGPropertyBase> animatedValue = animated;
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> fromValue = m_animationElement->animationMode() == ToAnimation ? animated : from;
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> toValue = to;
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> toAtEndOfDurationValue = toAtEndOfDuration;
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> animatedValue = animated;
|
|
|
| // Apply CSS inheritance rules.
|
| ParsePropertyFromString parsePropertyFromString(this);
|
| - m_animationElement->adjustForInheritance<RefPtr<SVGPropertyBase>, ParsePropertyFromString>(parsePropertyFromString, m_animationElement->fromPropertyValueType(), fromValue, m_contextElement);
|
| - m_animationElement->adjustForInheritance<RefPtr<SVGPropertyBase>, ParsePropertyFromString>(parsePropertyFromString, m_animationElement->toPropertyValueType(), toValue, m_contextElement);
|
| + m_animationElement->adjustForInheritance<RefPtrWillBeRawPtr<SVGPropertyBase>, ParsePropertyFromString>(parsePropertyFromString, m_animationElement->fromPropertyValueType(), fromValue, m_contextElement);
|
| + m_animationElement->adjustForInheritance<RefPtrWillBeRawPtr<SVGPropertyBase>, ParsePropertyFromString>(parsePropertyFromString, m_animationElement->toPropertyValueType(), toValue, m_contextElement);
|
|
|
| animatedValue->calculateAnimatedValue(m_animationElement, percentage, repeatCount, fromValue, toValue, toAtEndOfDurationValue, m_contextElement);
|
| }
|
| @@ -248,8 +248,8 @@ float SVGAnimatedTypeAnimator::calculateDistance(const String& fromString, const
|
| {
|
| ASSERT(m_animationElement);
|
| ASSERT(m_contextElement);
|
| - RefPtr<SVGPropertyBase> fromValue = createPropertyForAnimation(fromString);
|
| - RefPtr<SVGPropertyBase> toValue = createPropertyForAnimation(toString);
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> fromValue = createPropertyForAnimation(fromString);
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> toValue = createPropertyForAnimation(toString);
|
| return fromValue->calculateDistance(toValue, m_contextElement);
|
| }
|
|
|
| @@ -257,6 +257,7 @@ void SVGAnimatedTypeAnimator::trace(Visitor* visitor)
|
| {
|
| visitor->trace(m_animationElement);
|
| visitor->trace(m_contextElement);
|
| + visitor->trace(m_animatedProperty);
|
| }
|
|
|
| }
|
|
|