OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CSSAnimationUpdate_h | 5 #ifndef CSSAnimationUpdate_h |
6 #define CSSAnimationUpdate_h | 6 #define CSSAnimationUpdate_h |
7 | 7 |
8 #include "core/animation/AnimationStack.h" | 8 #include "core/animation/AnimationStack.h" |
9 #include "core/animation/InertEffect.h" | 9 #include "core/animation/InertEffect.h" |
10 #include "core/animation/Interpolation.h" | 10 #include "core/animation/Interpolation.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 WTF_MAKE_NONCOPYABLE(CSSAnimationUpdate); | 29 WTF_MAKE_NONCOPYABLE(CSSAnimationUpdate); |
30 public: | 30 public: |
31 class NewAnimation { | 31 class NewAnimation { |
32 ALLOW_ONLY_INLINE_ALLOCATION(); | 32 ALLOW_ONLY_INLINE_ALLOCATION(); |
33 public: | 33 public: |
34 NewAnimation() | 34 NewAnimation() |
35 : styleRuleVersion(0) | 35 : styleRuleVersion(0) |
36 { | 36 { |
37 } | 37 } |
38 | 38 |
39 NewAnimation(AtomicString name, PassRefPtrWillBeRawPtr<InertEffect> effe
ct, Timing timing, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule) | 39 NewAnimation(AtomicString name, InertEffect* effect, Timing timing, Pass
RefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule) |
40 : name(name) | 40 : name(name) |
41 , effect(effect) | 41 , effect(effect) |
42 , timing(timing) | 42 , timing(timing) |
43 , styleRule(styleRule) | 43 , styleRule(styleRule) |
44 , styleRuleVersion(this->styleRule->version()) | 44 , styleRuleVersion(this->styleRule->version()) |
45 { | 45 { |
46 } | 46 } |
47 | 47 |
48 DEFINE_INLINE_TRACE() | 48 DEFINE_INLINE_TRACE() |
49 { | 49 { |
50 visitor->trace(effect); | 50 visitor->trace(effect); |
51 visitor->trace(styleRule); | 51 visitor->trace(styleRule); |
52 } | 52 } |
53 | 53 |
54 AtomicString name; | 54 AtomicString name; |
55 RefPtrWillBeMember<InertEffect> effect; | 55 Member<InertEffect> effect; |
56 Timing timing; | 56 Timing timing; |
57 RefPtrWillBeMember<StyleRuleKeyframes> styleRule; | 57 RefPtrWillBeMember<StyleRuleKeyframes> styleRule; |
58 unsigned styleRuleVersion; | 58 unsigned styleRuleVersion; |
59 }; | 59 }; |
60 | 60 |
61 class UpdatedAnimation { | 61 class UpdatedAnimation { |
62 ALLOW_ONLY_INLINE_ALLOCATION(); | 62 ALLOW_ONLY_INLINE_ALLOCATION(); |
63 public: | 63 public: |
64 UpdatedAnimation() | 64 UpdatedAnimation() |
65 : styleRuleVersion(0) | 65 : styleRuleVersion(0) |
66 { | 66 { |
67 } | 67 } |
68 | 68 |
69 UpdatedAnimation(AtomicString name, Animation* animation, PassRefPtrWill
BeRawPtr<InertEffect> effect, Timing specifiedTiming, PassRefPtrWillBeRawPtr<Sty
leRuleKeyframes> styleRule) | 69 UpdatedAnimation(AtomicString name, Animation* animation, InertEffect* e
ffect, Timing specifiedTiming, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleR
ule) |
70 : name(name) | 70 : name(name) |
71 , animation(animation) | 71 , animation(animation) |
72 , effect(effect) | 72 , effect(effect) |
73 , specifiedTiming(specifiedTiming) | 73 , specifiedTiming(specifiedTiming) |
74 , styleRule(styleRule) | 74 , styleRule(styleRule) |
75 , styleRuleVersion(this->styleRule->version()) | 75 , styleRuleVersion(this->styleRule->version()) |
76 { | 76 { |
77 } | 77 } |
78 | 78 |
79 DEFINE_INLINE_TRACE() | 79 DEFINE_INLINE_TRACE() |
80 { | 80 { |
81 visitor->trace(animation); | 81 visitor->trace(animation); |
82 visitor->trace(effect); | 82 visitor->trace(effect); |
83 visitor->trace(styleRule); | 83 visitor->trace(styleRule); |
84 } | 84 } |
85 | 85 |
86 AtomicString name; | 86 AtomicString name; |
87 RawPtrWillBeMember<Animation> animation; | 87 Member<Animation> animation; |
88 RefPtrWillBeMember<InertEffect> effect; | 88 Member<InertEffect> effect; |
89 Timing specifiedTiming; | 89 Timing specifiedTiming; |
90 RefPtrWillBeMember<StyleRuleKeyframes> styleRule; | 90 RefPtrWillBeMember<StyleRuleKeyframes> styleRule; |
91 unsigned styleRuleVersion; | 91 unsigned styleRuleVersion; |
92 }; | 92 }; |
93 | 93 |
94 class UpdatedAnimationStyle { | 94 class UpdatedAnimationStyle { |
95 ALLOW_ONLY_INLINE_ALLOCATION(); | 95 ALLOW_ONLY_INLINE_ALLOCATION(); |
96 public: | 96 public: |
97 struct CompositableStyleSnapshot { | 97 struct CompositableStyleSnapshot { |
98 DISALLOW_ALLOCATION(); | 98 DISALLOW_ALLOCATION(); |
(...skipping 22 matching lines...) Expand all Loading... |
121 { | 121 { |
122 } | 122 } |
123 | 123 |
124 DEFINE_INLINE_TRACE() | 124 DEFINE_INLINE_TRACE() |
125 { | 125 { |
126 visitor->trace(animation); | 126 visitor->trace(animation); |
127 visitor->trace(model); | 127 visitor->trace(model); |
128 visitor->trace(snapshot); | 128 visitor->trace(snapshot); |
129 } | 129 } |
130 | 130 |
131 RawPtrWillBeMember<Animation> animation; | 131 Member<Animation> animation; |
132 RawPtrWillBeMember<KeyframeEffectModelBase> model; | 132 Member<KeyframeEffectModelBase> model; |
133 CompositableStyleSnapshot snapshot; | 133 CompositableStyleSnapshot snapshot; |
134 }; | 134 }; |
135 | 135 |
136 CSSAnimationUpdate() | 136 CSSAnimationUpdate() |
137 { | 137 { |
138 } | 138 } |
139 | 139 |
140 ~CSSAnimationUpdate() | 140 ~CSSAnimationUpdate() |
141 { | 141 { |
142 #if ENABLE(OILPAN) | |
143 // For performance reasons, explicitly clear HeapVectors and | 142 // For performance reasons, explicitly clear HeapVectors and |
144 // HeapHashMaps to avoid giving a pressure on Oilpan's GC. | 143 // HeapHashMaps to avoid giving a pressure on Oilpan's GC. |
145 clear(); | 144 clear(); |
146 #endif | |
147 } | 145 } |
148 | 146 |
149 void copy(const CSSAnimationUpdate& update) | 147 void copy(const CSSAnimationUpdate& update) |
150 { | 148 { |
151 ASSERT(isEmpty()); | 149 ASSERT(isEmpty()); |
152 m_newAnimations = update.newAnimations(); | 150 m_newAnimations = update.newAnimations(); |
153 m_animationsWithUpdates = update.animationsWithUpdates(); | 151 m_animationsWithUpdates = update.animationsWithUpdates(); |
154 m_animationsWithStyleUpdates = update.animationsWithStyleUpdates(); | 152 m_animationsWithStyleUpdates = update.animationsWithStyleUpdates(); |
155 m_newTransitions = update.newTransitions(); | 153 m_newTransitions = update.newTransitions(); |
156 m_activeInterpolationsForAnimations = update.activeInterpolationsForAnim
ations(); | 154 m_activeInterpolationsForAnimations = update.activeInterpolationsForAnim
ations(); |
(...skipping 11 matching lines...) Expand all Loading... |
168 m_animationsWithStyleUpdates.clear(); | 166 m_animationsWithStyleUpdates.clear(); |
169 m_newTransitions.clear(); | 167 m_newTransitions.clear(); |
170 m_activeInterpolationsForAnimations.clear(); | 168 m_activeInterpolationsForAnimations.clear(); |
171 m_activeInterpolationsForTransitions.clear(); | 169 m_activeInterpolationsForTransitions.clear(); |
172 m_cancelledAnimationNames.clear(); | 170 m_cancelledAnimationNames.clear(); |
173 m_animationsWithPauseToggled.clear(); | 171 m_animationsWithPauseToggled.clear(); |
174 m_cancelledTransitions.clear(); | 172 m_cancelledTransitions.clear(); |
175 m_finishedTransitions.clear(); | 173 m_finishedTransitions.clear(); |
176 } | 174 } |
177 | 175 |
178 void startAnimation(const AtomicString& animationName, PassRefPtrWillBeRawPt
r<InertEffect> effect, const Timing& timing, PassRefPtrWillBeRawPtr<StyleRuleKey
frames> styleRule) | 176 void startAnimation(const AtomicString& animationName, InertEffect* effect,
const Timing& timing, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule) |
179 { | 177 { |
180 effect->setName(animationName); | 178 effect->setName(animationName); |
181 m_newAnimations.append(NewAnimation(animationName, effect, timing, style
Rule)); | 179 m_newAnimations.append(NewAnimation(animationName, effect, timing, style
Rule)); |
182 } | 180 } |
183 // Returns whether animation has been suppressed and should be filtered duri
ng style application. | 181 // Returns whether animation has been suppressed and should be filtered duri
ng style application. |
184 bool isSuppressedAnimation(const Animation* animation) const { return m_supp
ressedAnimations.contains(animation); } | 182 bool isSuppressedAnimation(const Animation* animation) const { return m_supp
ressedAnimations.contains(animation); } |
185 void cancelAnimation(const AtomicString& name, Animation& animation) | 183 void cancelAnimation(const AtomicString& name, Animation& animation) |
186 { | 184 { |
187 m_cancelledAnimationNames.append(name); | 185 m_cancelledAnimationNames.append(name); |
188 m_suppressedAnimations.add(&animation); | 186 m_suppressedAnimations.add(&animation); |
189 } | 187 } |
190 void toggleAnimationPaused(const AtomicString& name) | 188 void toggleAnimationPaused(const AtomicString& name) |
191 { | 189 { |
192 m_animationsWithPauseToggled.append(name); | 190 m_animationsWithPauseToggled.append(name); |
193 } | 191 } |
194 void updateAnimation(const AtomicString& name, Animation* animation, PassRef
PtrWillBeRawPtr<InertEffect> effect, const Timing& specifiedTiming, | 192 void updateAnimation(const AtomicString& name, Animation* animation, InertEf
fect* effect, const Timing& specifiedTiming, |
195 PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule) | 193 PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule) |
196 { | 194 { |
197 m_animationsWithUpdates.append(UpdatedAnimation(name, animation, effect,
specifiedTiming, styleRule)); | 195 m_animationsWithUpdates.append(UpdatedAnimation(name, animation, effect,
specifiedTiming, styleRule)); |
198 m_suppressedAnimations.add(animation); | 196 m_suppressedAnimations.add(animation); |
199 } | 197 } |
200 void updateAnimationStyle(Animation* animation, KeyframeEffectModelBase* mod
el, LayoutObject* layoutObject, const ComputedStyle& newStyle) | 198 void updateAnimationStyle(Animation* animation, KeyframeEffectModelBase* mod
el, LayoutObject* layoutObject, const ComputedStyle& newStyle) |
201 { | 199 { |
202 UpdatedAnimationStyle::CompositableStyleSnapshot snapshot; | 200 UpdatedAnimationStyle::CompositableStyleSnapshot snapshot; |
203 if (layoutObject) { | 201 if (layoutObject) { |
204 const ComputedStyle& oldStyle = layoutObject->styleRef(); | 202 const ComputedStyle& oldStyle = layoutObject->styleRef(); |
205 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyOpacity, oldSty
le, newStyle) && model->affects(PropertyHandle(CSSPropertyOpacity))) | 203 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyOpacity, oldSty
le, newStyle) && model->affects(PropertyHandle(CSSPropertyOpacity))) |
206 snapshot.opacity = CSSAnimatableValueFactory::create(CSSProperty
Opacity, newStyle); | 204 snapshot.opacity = CSSAnimatableValueFactory::create(CSSProperty
Opacity, newStyle); |
207 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyTransform, oldS
tyle, newStyle) && model->affects(PropertyHandle(CSSPropertyTransform))) | 205 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyTransform, oldS
tyle, newStyle) && model->affects(PropertyHandle(CSSPropertyTransform))) |
208 snapshot.transform = CSSAnimatableValueFactory::create(CSSProper
tyTransform, newStyle); | 206 snapshot.transform = CSSAnimatableValueFactory::create(CSSProper
tyTransform, newStyle); |
209 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyWebkitFilter, o
ldStyle, newStyle) && model->affects(PropertyHandle(CSSPropertyWebkitFilter))) | 207 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyWebkitFilter, o
ldStyle, newStyle) && model->affects(PropertyHandle(CSSPropertyWebkitFilter))) |
210 snapshot.webkitFilter = CSSAnimatableValueFactory::create(CSSPro
pertyWebkitFilter, newStyle); | 208 snapshot.webkitFilter = CSSAnimatableValueFactory::create(CSSPro
pertyWebkitFilter, newStyle); |
211 } | 209 } |
212 | 210 |
213 m_animationsWithStyleUpdates.append(UpdatedAnimationStyle(animation, mod
el, snapshot)); | 211 m_animationsWithStyleUpdates.append(UpdatedAnimationStyle(animation, mod
el, snapshot)); |
214 } | 212 } |
215 | 213 |
216 void startTransition(CSSPropertyID id, const AnimatableValue* from, const An
imatableValue* to, PassRefPtrWillBeRawPtr<InertEffect> effect) | 214 void startTransition(CSSPropertyID id, const AnimatableValue* from, const An
imatableValue* to, InertEffect* effect) |
217 { | 215 { |
218 effect->setName(getPropertyName(id)); | 216 effect->setName(getPropertyName(id)); |
219 NewTransition newTransition; | 217 NewTransition newTransition; |
220 newTransition.id = id; | 218 newTransition.id = id; |
221 newTransition.from = from; | 219 newTransition.from = from; |
222 newTransition.to = to; | 220 newTransition.to = to; |
223 newTransition.effect = effect; | 221 newTransition.effect = effect; |
224 m_newTransitions.set(id, newTransition); | 222 m_newTransitions.set(id, newTransition); |
225 } | 223 } |
226 bool isCancelledTransition(CSSPropertyID id) const { return m_cancelledTrans
itions.contains(id); } | 224 bool isCancelledTransition(CSSPropertyID id) const { return m_cancelledTrans
itions.contains(id); } |
227 void cancelTransition(CSSPropertyID id) { m_cancelledTransitions.add(id); } | 225 void cancelTransition(CSSPropertyID id) { m_cancelledTransitions.add(id); } |
228 void finishTransition(CSSPropertyID id) { m_finishedTransitions.add(id); } | 226 void finishTransition(CSSPropertyID id) { m_finishedTransitions.add(id); } |
229 | 227 |
230 const WillBeHeapVector<NewAnimation>& newAnimations() const { return m_newAn
imations; } | 228 const HeapVector<NewAnimation>& newAnimations() const { return m_newAnimatio
ns; } |
231 const Vector<AtomicString>& cancelledAnimationNames() const { return m_cance
lledAnimationNames; } | 229 const Vector<AtomicString>& cancelledAnimationNames() const { return m_cance
lledAnimationNames; } |
232 const WillBeHeapHashSet<RawPtrWillBeMember<const Animation>>& suppressedAnim
ations() const { return m_suppressedAnimations; } | 230 const HeapHashSet<Member<const Animation>>& suppressedAnimations() const { r
eturn m_suppressedAnimations; } |
233 const Vector<AtomicString>& animationsWithPauseToggled() const { return m_an
imationsWithPauseToggled; } | 231 const Vector<AtomicString>& animationsWithPauseToggled() const { return m_an
imationsWithPauseToggled; } |
234 const WillBeHeapVector<UpdatedAnimation>& animationsWithUpdates() const { re
turn m_animationsWithUpdates; } | 232 const HeapVector<UpdatedAnimation>& animationsWithUpdates() const { return m
_animationsWithUpdates; } |
235 const WillBeHeapVector<UpdatedAnimationStyle>& animationsWithStyleUpdates()
const { return m_animationsWithStyleUpdates; } | 233 const HeapVector<UpdatedAnimationStyle>& animationsWithStyleUpdates() const
{ return m_animationsWithStyleUpdates; } |
236 | 234 |
237 struct NewTransition { | 235 struct NewTransition { |
238 ALLOW_ONLY_INLINE_ALLOCATION(); | 236 ALLOW_ONLY_INLINE_ALLOCATION(); |
239 public: | 237 public: |
240 DEFINE_INLINE_TRACE() | 238 DEFINE_INLINE_TRACE() |
241 { | 239 { |
242 visitor->trace(from); | 240 visitor->trace(from); |
243 visitor->trace(to); | 241 visitor->trace(to); |
244 visitor->trace(effect); | 242 visitor->trace(effect); |
245 } | 243 } |
246 | 244 |
247 CSSPropertyID id; | 245 CSSPropertyID id; |
248 RawPtrWillBeMember<const AnimatableValue> from; | 246 RawPtrWillBeMember<const AnimatableValue> from; |
249 RawPtrWillBeMember<const AnimatableValue> to; | 247 RawPtrWillBeMember<const AnimatableValue> to; |
250 RefPtrWillBeMember<InertEffect> effect; | 248 Member<InertEffect> effect; |
251 }; | 249 }; |
252 using NewTransitionMap = WillBeHeapHashMap<CSSPropertyID, NewTransition>; | 250 using NewTransitionMap = HeapHashMap<CSSPropertyID, NewTransition>; |
253 const NewTransitionMap& newTransitions() const { return m_newTransitions; } | 251 const NewTransitionMap& newTransitions() const { return m_newTransitions; } |
254 const HashSet<CSSPropertyID>& cancelledTransitions() const { return m_cancel
ledTransitions; } | 252 const HashSet<CSSPropertyID>& cancelledTransitions() const { return m_cancel
ledTransitions; } |
255 const HashSet<CSSPropertyID>& finishedTransitions() const { return m_finishe
dTransitions; } | 253 const HashSet<CSSPropertyID>& finishedTransitions() const { return m_finishe
dTransitions; } |
256 | 254 |
257 void adoptActiveInterpolationsForAnimations(ActiveInterpolationMap& newMap)
{ newMap.swap(m_activeInterpolationsForAnimations); } | 255 void adoptActiveInterpolationsForAnimations(ActiveInterpolationMap& newMap)
{ newMap.swap(m_activeInterpolationsForAnimations); } |
258 void adoptActiveInterpolationsForTransitions(ActiveInterpolationMap& newMap)
{ newMap.swap(m_activeInterpolationsForTransitions); } | 256 void adoptActiveInterpolationsForTransitions(ActiveInterpolationMap& newMap)
{ newMap.swap(m_activeInterpolationsForTransitions); } |
259 const ActiveInterpolationMap& activeInterpolationsForAnimations() const { re
turn m_activeInterpolationsForAnimations; } | 257 const ActiveInterpolationMap& activeInterpolationsForAnimations() const { re
turn m_activeInterpolationsForAnimations; } |
260 const ActiveInterpolationMap& activeInterpolationsForTransitions() const { r
eturn m_activeInterpolationsForTransitions; } | 258 const ActiveInterpolationMap& activeInterpolationsForTransitions() const { r
eturn m_activeInterpolationsForTransitions; } |
261 ActiveInterpolationMap& activeInterpolationsForAnimations() { return m_activ
eInterpolationsForAnimations; } | 259 ActiveInterpolationMap& activeInterpolationsForAnimations() { return m_activ
eInterpolationsForAnimations; } |
262 | 260 |
263 bool isEmpty() const | 261 bool isEmpty() const |
264 { | 262 { |
265 return m_newAnimations.isEmpty() | 263 return m_newAnimations.isEmpty() |
266 && m_cancelledAnimationNames.isEmpty() | 264 && m_cancelledAnimationNames.isEmpty() |
267 && m_suppressedAnimations.isEmpty() | 265 && m_suppressedAnimations.isEmpty() |
268 && m_animationsWithPauseToggled.isEmpty() | 266 && m_animationsWithPauseToggled.isEmpty() |
269 && m_animationsWithUpdates.isEmpty() | 267 && m_animationsWithUpdates.isEmpty() |
270 && m_animationsWithStyleUpdates.isEmpty() | 268 && m_animationsWithStyleUpdates.isEmpty() |
271 && m_newTransitions.isEmpty() | 269 && m_newTransitions.isEmpty() |
272 && m_cancelledTransitions.isEmpty() | 270 && m_cancelledTransitions.isEmpty() |
273 && m_finishedTransitions.isEmpty() | 271 && m_finishedTransitions.isEmpty() |
274 && m_activeInterpolationsForAnimations.isEmpty() | 272 && m_activeInterpolationsForAnimations.isEmpty() |
275 && m_activeInterpolationsForTransitions.isEmpty(); | 273 && m_activeInterpolationsForTransitions.isEmpty(); |
276 } | 274 } |
277 | 275 |
278 DEFINE_INLINE_TRACE() | 276 DEFINE_INLINE_TRACE() |
279 { | 277 { |
| 278 visitor->trace(m_newTransitions); |
280 #if ENABLE(OILPAN) | 279 #if ENABLE(OILPAN) |
281 visitor->trace(m_newTransitions); | |
282 visitor->trace(m_activeInterpolationsForAnimations); | 280 visitor->trace(m_activeInterpolationsForAnimations); |
283 visitor->trace(m_activeInterpolationsForTransitions); | 281 visitor->trace(m_activeInterpolationsForTransitions); |
| 282 #endif |
284 visitor->trace(m_newAnimations); | 283 visitor->trace(m_newAnimations); |
285 visitor->trace(m_suppressedAnimations); | 284 visitor->trace(m_suppressedAnimations); |
286 visitor->trace(m_animationsWithUpdates); | 285 visitor->trace(m_animationsWithUpdates); |
287 visitor->trace(m_animationsWithStyleUpdates); | 286 visitor->trace(m_animationsWithStyleUpdates); |
288 #endif | |
289 } | 287 } |
290 | 288 |
291 private: | 289 private: |
292 // Order is significant since it defines the order in which new animations | 290 // Order is significant since it defines the order in which new animations |
293 // will be started. Note that there may be multiple animations present | 291 // will be started. Note that there may be multiple animations present |
294 // with the same name, due to the way in which we split up animations with | 292 // with the same name, due to the way in which we split up animations with |
295 // incomplete keyframes. | 293 // incomplete keyframes. |
296 WillBeHeapVector<NewAnimation> m_newAnimations; | 294 HeapVector<NewAnimation> m_newAnimations; |
297 Vector<AtomicString> m_cancelledAnimationNames; | 295 Vector<AtomicString> m_cancelledAnimationNames; |
298 WillBeHeapHashSet<RawPtrWillBeMember<const Animation>> m_suppressedAnimation
s; | 296 HeapHashSet<Member<const Animation>> m_suppressedAnimations; |
299 Vector<AtomicString> m_animationsWithPauseToggled; | 297 Vector<AtomicString> m_animationsWithPauseToggled; |
300 WillBeHeapVector<UpdatedAnimation> m_animationsWithUpdates; | 298 HeapVector<UpdatedAnimation> m_animationsWithUpdates; |
301 WillBeHeapVector<UpdatedAnimationStyle> m_animationsWithStyleUpdates; | 299 HeapVector<UpdatedAnimationStyle> m_animationsWithStyleUpdates; |
302 | 300 |
303 NewTransitionMap m_newTransitions; | 301 NewTransitionMap m_newTransitions; |
304 HashSet<CSSPropertyID> m_cancelledTransitions; | 302 HashSet<CSSPropertyID> m_cancelledTransitions; |
305 HashSet<CSSPropertyID> m_finishedTransitions; | 303 HashSet<CSSPropertyID> m_finishedTransitions; |
306 | 304 |
307 ActiveInterpolationMap m_activeInterpolationsForAnimations; | 305 ActiveInterpolationMap m_activeInterpolationsForAnimations; |
308 ActiveInterpolationMap m_activeInterpolationsForTransitions; | 306 ActiveInterpolationMap m_activeInterpolationsForTransitions; |
309 }; | 307 }; |
310 | 308 |
311 } // namespace blink | 309 } // namespace blink |
312 | 310 |
313 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::NewAnimation); | 311 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::NewAnimation); |
314 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::UpdatedAnimation); | 312 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::UpdatedAnimation); |
315 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::UpdatedAnimationSty
le); | 313 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::UpdatedAnimationSty
le); |
316 | 314 |
317 #endif | 315 #endif |
OLD | NEW |