Chromium Code Reviews| Index: Source/core/animation/KeyframeEffectModel.h |
| diff --git a/Source/core/animation/KeyframeEffectModel.h b/Source/core/animation/KeyframeEffectModel.h |
| index e22831ec109b5b5e11e37b63d43eb17536f4420e..9163c88542ec7fff1611c86d43094d156cbe322b 100644 |
| --- a/Source/core/animation/KeyframeEffectModel.h |
| +++ b/Source/core/animation/KeyframeEffectModel.h |
| @@ -73,14 +73,15 @@ public: |
| PassRefPtrWillBeRawPtr<Keyframe> clone() const { return adoptRefWillBeNoop(new Keyframe(*this)); } |
| PassRefPtrWillBeRawPtr<Keyframe> cloneWithOffset(double offset) const; |
| - void trace(Visitor*) { } |
| + void trace(Visitor*); |
| + |
| private: |
| Keyframe(); |
| Keyframe(const Keyframe&); |
| double m_offset; |
| AnimationEffect::CompositeOperation m_composite; |
| RefPtr<TimingFunction> m_easing; |
| - typedef HashMap<CSSPropertyID, RefPtr<AnimatableValue> > PropertyValueMap; |
| + typedef WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<AnimatableValue> > PropertyValueMap; |
| PropertyValueMap m_propertyValues; |
| }; |
| @@ -88,7 +89,7 @@ class KeyframeEffectModel FINAL : public AnimationEffect { |
| public: |
| class PropertySpecificKeyframe; |
| typedef WillBeHeapVector<RefPtrWillBeMember<Keyframe> > KeyframeVector; |
| - typedef Vector<OwnPtr<PropertySpecificKeyframe> > PropertySpecificKeyframeVector; |
| + typedef WillBeHeapVector<OwnPtrWillBeMember<PropertySpecificKeyframe> > PropertySpecificKeyframeVector; |
| // FIXME: Implement accumulation. |
| static PassRefPtrWillBeRawPtr<KeyframeEffectModel> create(const KeyframeVector& keyframes) |
| { |
| @@ -113,26 +114,32 @@ public: |
| PropertySet properties() const; |
| - class PropertySpecificKeyframe { |
| + class PropertySpecificKeyframe : public NoBaseWillBeGarbageCollected<PropertySpecificKeyframe> { |
| public: |
| PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, const AnimatableValue*, CompositeOperation); |
| double offset() const { return m_offset; } |
| TimingFunction* easing() const { return m_easing.get(); } |
| const AnimatableValue* value() const { return m_value.get(); } |
| AnimationEffect::CompositeOperation composite() const { return m_composite; } |
| - PassOwnPtr<PropertySpecificKeyframe> cloneWithOffset(double offset) const; |
| + PassOwnPtrWillBeRawPtr<PropertySpecificKeyframe> cloneWithOffset(double offset) const; |
| + |
| + void trace(Visitor* visitor) |
| + { |
| + visitor->trace(m_value); |
| + } |
| + |
| private: |
| // Used by cloneWithOffset(). |
| - PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, PassRefPtr<AnimatableValue>, CompositeOperation); |
| + PropertySpecificKeyframe(double offset, PassRefPtr<TimingFunction> easing, PassRefPtrWillBeRawPtr<AnimatableValue>, CompositeOperation); |
| double m_offset; |
| RefPtr<TimingFunction> m_easing; |
| - RefPtr<AnimatableValue> m_value; |
| + RefPtrWillBeMember<AnimatableValue> m_value; |
| AnimationEffect::CompositeOperation m_composite; |
| }; |
| class PropertySpecificKeyframeGroup { |
| public: |
| - void appendKeyframe(PassOwnPtr<PropertySpecificKeyframe>); |
| + void appendKeyframe(PassOwnPtrWillBeRawPtr<PropertySpecificKeyframe>); |
| const PropertySpecificKeyframeVector& keyframes() const { return m_keyframes; } |
| private: |
| PropertySpecificKeyframeVector m_keyframes; |
|
Mads Ager (chromium)
2014/03/21 14:08:06
OK, now it bubbles down here. You have a part obje
|