| Index: Source/core/svg/properties/SVGAnimatedProperty.h
|
| diff --git a/Source/core/svg/properties/SVGAnimatedProperty.h b/Source/core/svg/properties/SVGAnimatedProperty.h
|
| index 93e6438f98cedda611bcf20057b71a6905b15241..4e75c3b543946c3b9d49dee2a5bba7aaaa561155 100644
|
| --- a/Source/core/svg/properties/SVGAnimatedProperty.h
|
| +++ b/Source/core/svg/properties/SVGAnimatedProperty.h
|
| @@ -37,6 +37,7 @@ G* * Redistributions in binary form must reproduce the above
|
| #include "core/svg/SVGParsingError.h"
|
| #include "core/svg/properties/SVGPropertyInfo.h"
|
| #include "core/svg/properties/SVGPropertyTearOff.h"
|
| +#include "platform/heap/Handle.h"
|
| #include "wtf/Noncopyable.h"
|
| #include "wtf/PassRefPtr.h"
|
| #include "wtf/RefCounted.h"
|
| @@ -45,15 +46,16 @@ namespace blink {
|
|
|
| class SVGElement;
|
|
|
| -class SVGAnimatedPropertyBase : public RefCounted<SVGAnimatedPropertyBase>, public ScriptWrappableBase {
|
| +class SVGAnimatedPropertyBase : public RefCountedWillBeGarbageCollectedFinalized<SVGAnimatedPropertyBase>, public ScriptWrappableBase {
|
| + WTF_MAKE_NONCOPYABLE(SVGAnimatedPropertyBase);
|
| public:
|
| virtual ~SVGAnimatedPropertyBase();
|
|
|
| virtual SVGPropertyBase* currentValueBase() = 0;
|
| virtual bool isAnimating() const = 0;
|
|
|
| - virtual PassRefPtr<SVGPropertyBase> createAnimatedValue() = 0;
|
| - virtual void setAnimatedValue(PassRefPtr<SVGPropertyBase>) = 0;
|
| + virtual PassRefPtrWillBeRawPtr<SVGPropertyBase> createAnimatedValue() = 0;
|
| + virtual void setAnimatedValue(PassRefPtrWillBeRawPtr<SVGPropertyBase>) = 0;
|
| virtual void animationEnded();
|
|
|
| virtual void setBaseValueAsString(const String& value, SVGParsingError& parseError) = 0;
|
| @@ -87,6 +89,11 @@ public:
|
|
|
| bool isSpecified() const;
|
|
|
| + virtual void trace(Visitor* visitor)
|
| + {
|
| + visitor->trace(m_contextElement);
|
| + }
|
| +
|
| protected:
|
| SVGAnimatedPropertyBase(AnimatedPropertyType, SVGElement*, const QualifiedName& attributeName);
|
|
|
| @@ -95,11 +102,9 @@ private:
|
| bool m_isReadOnly;
|
|
|
| // This reference is kept alive from V8 wrapper
|
| - SVGElement* m_contextElement;
|
| + RawPtrWillBeMember<SVGElement> m_contextElement;
|
|
|
| const QualifiedName& m_attributeName;
|
| -
|
| - WTF_MAKE_NONCOPYABLE(SVGAnimatedPropertyBase);
|
| };
|
|
|
| template <typename Property>
|
| @@ -140,14 +145,14 @@ public:
|
| parseError = ParsingAttributeFailedError;
|
| }
|
|
|
| - virtual PassRefPtr<SVGPropertyBase> createAnimatedValue() override
|
| + virtual PassRefPtrWillBeRawPtr<SVGPropertyBase> createAnimatedValue() override
|
| {
|
| return m_baseValue->clone();
|
| }
|
|
|
| - virtual void setAnimatedValue(PassRefPtr<SVGPropertyBase> passValue) override
|
| + virtual void setAnimatedValue(PassRefPtrWillBeRawPtr<SVGPropertyBase> passValue) override
|
| {
|
| - RefPtr<SVGPropertyBase> value = passValue;
|
| + RefPtrWillBeRawPtr<SVGPropertyBase> value = passValue;
|
| ASSERT(value->type() == Property::classType());
|
| m_currentValue = static_pointer_cast<Property>(value.release());
|
| }
|
| @@ -159,16 +164,23 @@ public:
|
| SVGAnimatedPropertyBase::animationEnded();
|
| }
|
|
|
| + virtual void trace(Visitor* visitor) override
|
| + {
|
| + visitor->trace(m_baseValue);
|
| + visitor->trace(m_currentValue);
|
| + SVGAnimatedPropertyBase::trace(visitor);
|
| + }
|
| +
|
| protected:
|
| - SVGAnimatedPropertyCommon(SVGElement* contextElement, const QualifiedName& attributeName, PassRefPtr<Property> initialValue)
|
| + SVGAnimatedPropertyCommon(SVGElement* contextElement, const QualifiedName& attributeName, PassRefPtrWillBeRawPtr<Property> initialValue)
|
| : SVGAnimatedPropertyBase(Property::classType(), contextElement, attributeName)
|
| , m_baseValue(initialValue)
|
| {
|
| }
|
|
|
| private:
|
| - RefPtr<Property> m_baseValue;
|
| - RefPtr<Property> m_currentValue;
|
| + RefPtrWillBeMember<Property> m_baseValue;
|
| + RefPtrWillBeMember<Property> m_currentValue;
|
| };
|
|
|
| // Implementation of SVGAnimatedProperty which uses primitive types.
|
| @@ -220,7 +232,7 @@ public:
|
| }
|
|
|
| protected:
|
| - SVGAnimatedProperty(SVGElement* contextElement, const QualifiedName& attributeName, PassRefPtr<Property> initialValue)
|
| + SVGAnimatedProperty(SVGElement* contextElement, const QualifiedName& attributeName, PassRefPtrWillBeRawPtr<Property> initialValue)
|
| : SVGAnimatedPropertyCommon<Property>(contextElement, attributeName, initialValue)
|
| , m_baseValueUpdated(false)
|
| {
|
| @@ -236,12 +248,12 @@ protected:
|
| template <typename Property, typename TearOffType>
|
| class SVGAnimatedProperty<Property, TearOffType, void> : public SVGAnimatedPropertyCommon<Property> {
|
| public:
|
| - static PassRefPtr<SVGAnimatedProperty<Property> > create(SVGElement* contextElement, const QualifiedName& attributeName, PassRefPtr<Property> initialValue)
|
| + static PassRefPtrWillBeRawPtr<SVGAnimatedProperty<Property> > create(SVGElement* contextElement, const QualifiedName& attributeName, PassRefPtrWillBeRawPtr<Property> initialValue)
|
| {
|
| - return adoptRef(new SVGAnimatedProperty<Property>(contextElement, attributeName, initialValue));
|
| + return adoptRefWillBeNoop(new SVGAnimatedProperty<Property>(contextElement, attributeName, initialValue));
|
| }
|
|
|
| - virtual void setAnimatedValue(PassRefPtr<SVGPropertyBase> value) override
|
| + virtual void setAnimatedValue(PassRefPtrWillBeRawPtr<SVGPropertyBase> value) override
|
| {
|
| SVGAnimatedPropertyCommon<Property>::setAnimatedValue(value);
|
| updateAnimValTearOffIfNeeded();
|
| @@ -283,8 +295,15 @@ public:
|
| return m_animValTearOff.get();
|
| }
|
|
|
| + virtual void trace(Visitor* visitor) override
|
| + {
|
| + visitor->trace(m_baseValTearOff);
|
| + visitor->trace(m_animValTearOff);
|
| + SVGAnimatedPropertyCommon<Property>::trace(visitor);
|
| + }
|
| +
|
| protected:
|
| - SVGAnimatedProperty(SVGElement* contextElement, const QualifiedName& attributeName, PassRefPtr<Property> initialValue)
|
| + SVGAnimatedProperty(SVGElement* contextElement, const QualifiedName& attributeName, PassRefPtrWillBeRawPtr<Property> initialValue)
|
| : SVGAnimatedPropertyCommon<Property>(contextElement, attributeName, initialValue)
|
| {
|
| }
|
| @@ -301,10 +320,10 @@ private:
|
| // When animated:
|
| // m_animValTearOff targets m_currentValue.
|
| // m_baseValTearOff targets m_baseValue.
|
| - RefPtr<TearOffType> m_baseValTearOff;
|
| - RefPtr<TearOffType> m_animValTearOff;
|
| + RefPtrWillBeMember<TearOffType> m_baseValTearOff;
|
| + RefPtrWillBeMember<TearOffType> m_animValTearOff;
|
| };
|
|
|
| -}
|
| +} // namespace blink
|
|
|
| #endif // SVGAnimatedProperty_h
|
|
|