| Index: Source/core/animation/KeyframeEffectModel.h
|
| diff --git a/Source/core/animation/KeyframeEffectModel.h b/Source/core/animation/KeyframeEffectModel.h
|
| index e22831ec109b5b5e11e37b63d43eb17536f4420e..1f9e1eccfc2459c8a462747093216aa1d43bddf7 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,27 +114,33 @@ public:
|
|
|
| PropertySet properties() const;
|
|
|
| - class PropertySpecificKeyframe {
|
| + class PropertySpecificKeyframe : public NoBaseWillBeGarbageCollectedFinalized<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*);
|
| +
|
| 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 {
|
| + class PropertySpecificKeyframeGroup : public NoBaseWillBeGarbageCollectedFinalized<PropertySpecificKeyframeGroup> {
|
| public:
|
| - void appendKeyframe(PassOwnPtr<PropertySpecificKeyframe>);
|
| + void appendKeyframe(PassOwnPtrWillBeRawPtr<PropertySpecificKeyframe>);
|
| const PropertySpecificKeyframeVector& keyframes() const { return m_keyframes; }
|
| +
|
| + void trace(Visitor*);
|
| +
|
| private:
|
| PropertySpecificKeyframeVector m_keyframes;
|
| void removeRedundantKeyframes();
|
| @@ -163,8 +170,8 @@ private:
|
| // The spec describes filtering the normalized keyframes at sampling time
|
| // to get the 'property-specific keyframes'. For efficiency, we cache the
|
| // property-specific lists.
|
| - typedef HashMap<CSSPropertyID, OwnPtr<PropertySpecificKeyframeGroup> > KeyframeGroupMap;
|
| - mutable OwnPtr<KeyframeGroupMap> m_keyframeGroups;
|
| + typedef WillBeHeapHashMap<CSSPropertyID, OwnPtrWillBeMember<PropertySpecificKeyframeGroup> > KeyframeGroupMap;
|
| + mutable OwnPtrWillBeMember<KeyframeGroupMap> m_keyframeGroups;
|
|
|
| mutable RefPtr<InterpolationEffect> m_interpolationEffect;
|
|
|
|
|