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

Side by Side Diff: Source/core/animation/css/CSSAnimations.h

Issue 225073004: Oilpan: Completely move core/animations/ to oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/animation/Timing.idl ('k') | Source/core/animation/css/CSSAnimations.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 class CSSTransitionData; 47 class CSSTransitionData;
48 class Element; 48 class Element;
49 class StylePropertyShorthand; 49 class StylePropertyShorthand;
50 class StyleResolver; 50 class StyleResolver;
51 class StyleRuleKeyframes; 51 class StyleRuleKeyframes;
52 52
53 // This class stores the CSS Animations/Transitions information we use during a style recalc. 53 // This class stores the CSS Animations/Transitions information we use during a style recalc.
54 // This includes updates to animations/transitions as well as the Interpolations to be applied. 54 // This includes updates to animations/transitions as well as the Interpolations to be applied.
55 class CSSAnimationUpdate FINAL : public NoBaseWillBeGarbageCollectedFinalized<CS SAnimationUpdate> { 55 class CSSAnimationUpdate FINAL : public NoBaseWillBeGarbageCollectedFinalized<CS SAnimationUpdate> {
56 public: 56 public:
57 void startAnimation(AtomicString& animationName, PassRefPtr<InertAnimation> animation) 57 void startAnimation(AtomicString& animationName, PassRefPtrWillBeRawPtr<Iner tAnimation> animation)
58 { 58 {
59 NewAnimation newAnimation; 59 NewAnimation newAnimation;
60 newAnimation.name = animationName; 60 newAnimation.name = animationName;
61 newAnimation.animation = animation; 61 newAnimation.animation = animation;
62 m_newAnimations.append(newAnimation); 62 m_newAnimations.append(newAnimation);
63 } 63 }
64 // Returns whether player has been cancelled and should be filtered during s tyle application. 64 // Returns whether player has been cancelled and should be filtered during s tyle application.
65 bool isCancelledAnimation(const AnimationPlayer* player) const { return m_ca ncelledAnimationPlayers.contains(player); } 65 bool isCancelledAnimation(const AnimationPlayer* player) const { return m_ca ncelledAnimationPlayers.contains(player); }
66 void cancelAnimation(const AtomicString& name, AnimationPlayer& player) 66 void cancelAnimation(const AtomicString& name, AnimationPlayer& player)
67 { 67 {
68 m_cancelledAnimationNames.append(name); 68 m_cancelledAnimationNames.append(name);
69 m_cancelledAnimationPlayers.add(&player); 69 m_cancelledAnimationPlayers.add(&player);
70 } 70 }
71 void toggleAnimationPaused(const AtomicString& name) 71 void toggleAnimationPaused(const AtomicString& name)
72 { 72 {
73 m_animationsWithPauseToggled.append(name); 73 m_animationsWithPauseToggled.append(name);
74 } 74 }
75 75
76 void startTransition(CSSPropertyID id, CSSPropertyID eventId, const Animatab leValue* from, const AnimatableValue* to, PassRefPtr<InertAnimation> animation) 76 void startTransition(CSSPropertyID id, CSSPropertyID eventId, const Animatab leValue* from, const AnimatableValue* to, PassRefPtrWillBeRawPtr<InertAnimation> animation)
77 { 77 {
78 NewTransition newTransition; 78 NewTransition newTransition;
79 newTransition.id = id; 79 newTransition.id = id;
80 newTransition.eventId = eventId; 80 newTransition.eventId = eventId;
81 newTransition.from = from; 81 newTransition.from = from;
82 newTransition.to = to; 82 newTransition.to = to;
83 newTransition.animation = animation; 83 newTransition.animation = animation;
84 m_newTransitions.set(id, newTransition); 84 m_newTransitions.set(id, newTransition);
85 } 85 }
86 bool isCancelledTransition(CSSPropertyID id) const { return m_cancelledTrans itions.contains(id); } 86 bool isCancelledTransition(CSSPropertyID id) const { return m_cancelledTrans itions.contains(id); }
87 void cancelTransition(CSSPropertyID id) { m_cancelledTransitions.add(id); } 87 void cancelTransition(CSSPropertyID id) { m_cancelledTransitions.add(id); }
88 88
89 struct NewAnimation { 89 struct NewAnimation {
90 ALLOW_ONLY_INLINE_ALLOCATION();
91 public:
92 void trace(Visitor* visitor)
93 {
94 visitor->trace(animation);
95 }
96
90 AtomicString name; 97 AtomicString name;
91 RefPtr<InertAnimation> animation; 98 RefPtrWillBeMember<InertAnimation> animation;
92 }; 99 };
93 const Vector<NewAnimation>& newAnimations() const { return m_newAnimations; } 100 const WillBeHeapVector<NewAnimation>& newAnimations() const { return m_newAn imations; }
94 const Vector<AtomicString>& cancelledAnimationNames() const { return m_cance lledAnimationNames; } 101 const Vector<AtomicString>& cancelledAnimationNames() const { return m_cance lledAnimationNames; }
95 const HashSet<const AnimationPlayer*>& cancelledAnimationAnimationPlayers() const { return m_cancelledAnimationPlayers; } 102 const WillBeHeapHashSet<RawPtrWillBeMember<const AnimationPlayer> >& cancell edAnimationAnimationPlayers() const { return m_cancelledAnimationPlayers; }
96 const Vector<AtomicString>& animationsWithPauseToggled() const { return m_an imationsWithPauseToggled; } 103 const Vector<AtomicString>& animationsWithPauseToggled() const { return m_an imationsWithPauseToggled; }
97 104
98 struct NewTransition { 105 struct NewTransition {
99 ALLOW_ONLY_INLINE_ALLOCATION(); 106 ALLOW_ONLY_INLINE_ALLOCATION();
100 public: 107 public:
101 void trace(Visitor* visitor) 108 void trace(Visitor* visitor)
102 { 109 {
103 visitor->trace(from); 110 visitor->trace(from);
104 visitor->trace(to); 111 visitor->trace(to);
112 visitor->trace(animation);
105 } 113 }
106 114
107 CSSPropertyID id; 115 CSSPropertyID id;
108 CSSPropertyID eventId; 116 CSSPropertyID eventId;
109 RawPtrWillBeMember<const AnimatableValue> from; 117 RawPtrWillBeMember<const AnimatableValue> from;
110 RawPtrWillBeMember<const AnimatableValue> to; 118 RawPtrWillBeMember<const AnimatableValue> to;
111 RefPtr<InertAnimation> animation; 119 RefPtrWillBeMember<InertAnimation> animation;
112 }; 120 };
113 typedef WillBeHeapHashMap<CSSPropertyID, NewTransition> NewTransitionMap; 121 typedef WillBeHeapHashMap<CSSPropertyID, NewTransition> NewTransitionMap;
114 const NewTransitionMap& newTransitions() const { return m_newTransitions; } 122 const NewTransitionMap& newTransitions() const { return m_newTransitions; }
115 const HashSet<CSSPropertyID>& cancelledTransitions() const { return m_cancel ledTransitions; } 123 const HashSet<CSSPropertyID>& cancelledTransitions() const { return m_cancel ledTransitions; }
116 124
117 void adoptActiveInterpolationsForAnimations(WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> >& newMap) { newMap.swap(m_activeInterpolatio nsForAnimations); } 125 void adoptActiveInterpolationsForAnimations(WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> >& newMap) { newMap.swap(m_activeInterpolatio nsForAnimations); }
118 void adoptActiveInterpolationsForTransitions(WillBeHeapHashMap<CSSPropertyID , RefPtrWillBeMember<Interpolation> >& newMap) { newMap.swap(m_activeInterpolati onsForTransitions); } 126 void adoptActiveInterpolationsForTransitions(WillBeHeapHashMap<CSSPropertyID , RefPtrWillBeMember<Interpolation> >& newMap) { newMap.swap(m_activeInterpolati onsForTransitions); }
119 const WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> >& activeInterpolationsForAnimations() const { return m_activeInterpolationsForAnim ations; } 127 const WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> >& activeInterpolationsForAnimations() const { return m_activeInterpolationsForAnim ations; }
120 const WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> >& activeInterpolationsForTransitions() const { return m_activeInterpolationsForTra nsitions; } 128 const WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> >& activeInterpolationsForTransitions() const { return m_activeInterpolationsForTra nsitions; }
121 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> >& active InterpolationsForAnimations() { return m_activeInterpolationsForAnimations; } 129 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> >& active InterpolationsForAnimations() { return m_activeInterpolationsForAnimations; }
(...skipping 10 matching lines...) Expand all
132 && m_activeInterpolationsForTransitions.isEmpty(); 140 && m_activeInterpolationsForTransitions.isEmpty();
133 } 141 }
134 142
135 void trace(Visitor*); 143 void trace(Visitor*);
136 144
137 private: 145 private:
138 // Order is significant since it defines the order in which new animations 146 // Order is significant since it defines the order in which new animations
139 // will be started. Note that there may be multiple animations present 147 // will be started. Note that there may be multiple animations present
140 // with the same name, due to the way in which we split up animations with 148 // with the same name, due to the way in which we split up animations with
141 // incomplete keyframes. 149 // incomplete keyframes.
142 Vector<NewAnimation> m_newAnimations; 150 WillBeHeapVector<NewAnimation> m_newAnimations;
143 Vector<AtomicString> m_cancelledAnimationNames; 151 Vector<AtomicString> m_cancelledAnimationNames;
144 HashSet<const AnimationPlayer*> m_cancelledAnimationPlayers; 152 WillBeHeapHashSet<RawPtrWillBeMember<const AnimationPlayer> > m_cancelledAni mationPlayers;
145 Vector<AtomicString> m_animationsWithPauseToggled; 153 Vector<AtomicString> m_animationsWithPauseToggled;
146 154
147 NewTransitionMap m_newTransitions; 155 NewTransitionMap m_newTransitions;
148 HashSet<CSSPropertyID> m_cancelledTransitions; 156 HashSet<CSSPropertyID> m_cancelledTransitions;
149 157
150 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> > m_activ eInterpolationsForAnimations; 158 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> > m_activ eInterpolationsForAnimations;
151 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> > m_activ eInterpolationsForTransitions; 159 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> > m_activ eInterpolationsForTransitions;
152 }; 160 };
153 161
154 class CSSAnimations FINAL : public NoBaseWillBeGarbageCollectedFinalized<CSSAnim ations> { 162 class CSSAnimations FINAL : public NoBaseWillBeGarbageCollectedFinalized<CSSAnim ations> {
(...skipping 21 matching lines...) Expand all
176 void trace(Visitor*); 184 void trace(Visitor*);
177 185
178 private: 186 private:
179 struct RunningTransition { 187 struct RunningTransition {
180 ALLOW_ONLY_INLINE_ALLOCATION(); 188 ALLOW_ONLY_INLINE_ALLOCATION();
181 public: 189 public:
182 void trace(Visitor* visitor) 190 void trace(Visitor* visitor)
183 { 191 {
184 visitor->trace(from); 192 visitor->trace(from);
185 visitor->trace(to); 193 visitor->trace(to);
194 visitor->trace(player);
186 } 195 }
187 196
188 RefPtr<AnimationPlayer> player; 197 RefPtrWillBeMember<AnimationPlayer> player;
189 RawPtrWillBeMember<const AnimatableValue> from; 198 RawPtrWillBeMember<const AnimatableValue> from;
190 RawPtrWillBeMember<const AnimatableValue> to; 199 RawPtrWillBeMember<const AnimatableValue> to;
191 }; 200 };
192 201
193 typedef HashMap<AtomicString, RefPtr<AnimationPlayer> > AnimationMap; 202 typedef WillBeHeapHashMap<AtomicString, RefPtrWillBeMember<AnimationPlayer> > AnimationMap;
194 AnimationMap m_animations; 203 AnimationMap m_animations;
195 204
196 typedef WillBeHeapHashMap<CSSPropertyID, RunningTransition> TransitionMap; 205 typedef WillBeHeapHashMap<CSSPropertyID, RunningTransition> TransitionMap;
197 TransitionMap m_transitions; 206 TransitionMap m_transitions;
198 207
199 OwnPtrWillBeMember<CSSAnimationUpdate> m_pendingUpdate; 208 OwnPtrWillBeMember<CSSAnimationUpdate> m_pendingUpdate;
200 209
201 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> > m_previ ousActiveInterpolationsForAnimations; 210 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> > m_previ ousActiveInterpolationsForAnimations;
202 211
203 static void calculateAnimationUpdate(CSSAnimationUpdate*, Element*, const El ement& parentElement, const RenderStyle&, RenderStyle* parentStyle, StyleResolve r*); 212 static void calculateAnimationUpdate(CSSAnimationUpdate*, Element*, const El ement& parentElement, const RenderStyle&, RenderStyle* parentStyle, StyleResolve r*);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 virtual void onEventCondition(const TimedItem*) OVERRIDE; 245 virtual void onEventCondition(const TimedItem*) OVERRIDE;
237 private: 246 private:
238 Element* m_target; 247 Element* m_target;
239 const CSSPropertyID m_property; 248 const CSSPropertyID m_property;
240 TimedItem::Phase m_previousPhase; 249 TimedItem::Phase m_previousPhase;
241 }; 250 };
242 }; 251 };
243 252
244 } // namespace WebCore 253 } // namespace WebCore
245 254
255 namespace WTF {
256 template<> struct VectorTraits<WebCore::CSSAnimationUpdate::NewAnimation> : Vect orTraitsBase<WebCore::CSSAnimationUpdate::NewAnimation> {
257 static const bool canInitializeWithMemset = true;
258 };
259 }
260
246 #endif 261 #endif
OLDNEW
« no previous file with comments | « Source/core/animation/Timing.idl ('k') | Source/core/animation/css/CSSAnimations.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698