Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1718)

Unified Diff: Source/core/svg/SVGAnimatedTypeAnimator.cpp

Issue 678163002: Oilpan: move SVG property hierarchy to the heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased upto r185213 Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/svg/SVGAnimatedTypeAnimator.h ('k') | Source/core/svg/SVGBoolean.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
}
« no previous file with comments | « Source/core/svg/SVGAnimatedTypeAnimator.h ('k') | Source/core/svg/SVGBoolean.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698