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/Interpolation.h" | 9 #include "core/animation/Interpolation.h" |
10 #include "core/animation/KeyframeEffectModel.h" | 10 #include "core/animation/KeyframeEffectModel.h" |
11 #include "core/animation/css/CSSAnimatableValueFactory.h" | 11 #include "core/animation/css/CSSAnimatableValueFactory.h" |
12 #include "core/animation/css/CSSPropertyEquality.h" | 12 #include "core/animation/css/CSSPropertyEquality.h" |
13 #include "core/css/CSSKeyframesRule.h" | 13 #include "core/css/CSSKeyframesRule.h" |
14 #include "core/layout/LayoutObject.h" | 14 #include "core/layout/LayoutObject.h" |
15 #include "wtf/HashMap.h" | 15 #include "wtf/HashMap.h" |
16 #include "wtf/Vector.h" | 16 #include "wtf/Vector.h" |
17 #include "wtf/text/AtomicString.h" | 17 #include "wtf/text/AtomicString.h" |
18 | 18 |
19 namespace blink { | 19 namespace blink { |
20 | 20 |
21 class AnimationPlayer; | 21 class Animation; |
22 class InertAnimation; | 22 class InertAnimation; |
23 | 23 |
24 // This class stores the CSS Animations/Transitions information we use during a
style recalc. | 24 // This class stores the CSS Animations/Transitions information we use during a
style recalc. |
25 // This includes updates to animations/transitions as well as the Interpolations
to be applied. | 25 // This includes updates to animations/transitions as well as the Interpolations
to be applied. |
26 class CSSAnimationUpdate final : public NoBaseWillBeGarbageCollectedFinalized<CS
SAnimationUpdate> { | 26 class CSSAnimationUpdate final : public NoBaseWillBeGarbageCollectedFinalized<CS
SAnimationUpdate> { |
27 public: | 27 public: |
28 class NewAnimation { | 28 class NewAnimation { |
29 ALLOW_ONLY_INLINE_ALLOCATION(); | 29 ALLOW_ONLY_INLINE_ALLOCATION(); |
30 public: | 30 public: |
31 NewAnimation() | 31 NewAnimation() |
32 : styleRuleVersion(0) | 32 : styleRuleVersion(0) |
33 { | 33 { |
34 } | 34 } |
35 | 35 |
36 NewAnimation(AtomicString name, PassRefPtrWillBeRawPtr<InertAnimation> a
nimation, Timing timing, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule) | 36 NewAnimation(AtomicString name, PassRefPtrWillBeRawPtr<InertAnimation> e
ffect, Timing timing, PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule) |
37 : name(name) | 37 : name(name) |
38 , animation(animation) | 38 , effect(effect) |
39 , timing(timing) | 39 , timing(timing) |
40 , styleRule(styleRule) | 40 , styleRule(styleRule) |
41 , styleRuleVersion(this->styleRule->version()) | 41 , styleRuleVersion(this->styleRule->version()) |
42 { | 42 { |
43 } | 43 } |
44 | 44 |
45 DEFINE_INLINE_TRACE() | 45 DEFINE_INLINE_TRACE() |
46 { | 46 { |
47 visitor->trace(animation); | 47 visitor->trace(effect); |
48 visitor->trace(styleRule); | 48 visitor->trace(styleRule); |
49 } | 49 } |
50 | 50 |
51 AtomicString name; | 51 AtomicString name; |
52 RefPtrWillBeMember<InertAnimation> animation; | 52 RefPtrWillBeMember<InertAnimation> effect; |
53 Timing timing; | 53 Timing timing; |
54 RefPtrWillBeMember<StyleRuleKeyframes> styleRule; | 54 RefPtrWillBeMember<StyleRuleKeyframes> styleRule; |
55 unsigned styleRuleVersion; | 55 unsigned styleRuleVersion; |
56 }; | 56 }; |
57 | 57 |
58 class UpdatedAnimation { | 58 class UpdatedAnimation { |
59 ALLOW_ONLY_INLINE_ALLOCATION(); | 59 ALLOW_ONLY_INLINE_ALLOCATION(); |
60 public: | 60 public: |
61 UpdatedAnimation() | 61 UpdatedAnimation() |
62 : styleRuleVersion(0) | 62 : styleRuleVersion(0) |
63 { | 63 { |
64 } | 64 } |
65 | 65 |
66 UpdatedAnimation(AtomicString name, AnimationPlayer* player, PassRefPtrW
illBeRawPtr<InertAnimation> animation, Timing specifiedTiming, PassRefPtrWillBeR
awPtr<StyleRuleKeyframes> styleRule) | 66 UpdatedAnimation(AtomicString name, Animation* animation, PassRefPtrWill
BeRawPtr<InertAnimation> effect, Timing specifiedTiming, PassRefPtrWillBeRawPtr<
StyleRuleKeyframes> styleRule) |
67 : name(name) | 67 : name(name) |
68 , player(player) | |
69 , animation(animation) | 68 , animation(animation) |
| 69 , effect(effect) |
70 , specifiedTiming(specifiedTiming) | 70 , specifiedTiming(specifiedTiming) |
71 , styleRule(styleRule) | 71 , styleRule(styleRule) |
72 , styleRuleVersion(this->styleRule->version()) | 72 , styleRuleVersion(this->styleRule->version()) |
73 { | 73 { |
74 } | 74 } |
75 | 75 |
76 DEFINE_INLINE_TRACE() | 76 DEFINE_INLINE_TRACE() |
77 { | 77 { |
78 visitor->trace(player); | |
79 visitor->trace(animation); | 78 visitor->trace(animation); |
| 79 visitor->trace(effect); |
80 visitor->trace(styleRule); | 80 visitor->trace(styleRule); |
81 } | 81 } |
82 | 82 |
83 AtomicString name; | 83 AtomicString name; |
84 RawPtrWillBeMember<AnimationPlayer> player; | 84 RawPtrWillBeMember<Animation> animation; |
85 RefPtrWillBeMember<InertAnimation> animation; | 85 RefPtrWillBeMember<InertAnimation> effect; |
86 Timing specifiedTiming; | 86 Timing specifiedTiming; |
87 RefPtrWillBeMember<StyleRuleKeyframes> styleRule; | 87 RefPtrWillBeMember<StyleRuleKeyframes> styleRule; |
88 unsigned styleRuleVersion; | 88 unsigned styleRuleVersion; |
89 }; | 89 }; |
90 | 90 |
91 class UpdatedAnimationStyle { | 91 class UpdatedAnimationStyle { |
92 ALLOW_ONLY_INLINE_ALLOCATION(); | 92 ALLOW_ONLY_INLINE_ALLOCATION(); |
93 public: | 93 public: |
94 struct CompositableStyleSnapshot { | 94 struct CompositableStyleSnapshot { |
95 DISALLOW_ALLOCATION(); | 95 DISALLOW_ALLOCATION(); |
96 | 96 |
97 public: | 97 public: |
98 RefPtrWillBeMember<AnimatableValue> opacity; | 98 RefPtrWillBeMember<AnimatableValue> opacity; |
99 RefPtrWillBeMember<AnimatableValue> transform; | 99 RefPtrWillBeMember<AnimatableValue> transform; |
100 RefPtrWillBeMember<AnimatableValue> webkitFilter; | 100 RefPtrWillBeMember<AnimatableValue> webkitFilter; |
101 | 101 |
102 DEFINE_INLINE_TRACE() | 102 DEFINE_INLINE_TRACE() |
103 { | 103 { |
104 visitor->trace(opacity); | 104 visitor->trace(opacity); |
105 visitor->trace(transform); | 105 visitor->trace(transform); |
106 visitor->trace(webkitFilter); | 106 visitor->trace(webkitFilter); |
107 } | 107 } |
108 }; | 108 }; |
109 | 109 |
110 UpdatedAnimationStyle() | 110 UpdatedAnimationStyle() |
111 { | 111 { |
112 } | 112 } |
113 | 113 |
114 UpdatedAnimationStyle(AnimationPlayer* player, KeyframeEffectModelBase*
effect, const UpdatedAnimationStyle::CompositableStyleSnapshot& snapshot) | 114 UpdatedAnimationStyle(Animation* animation, KeyframeEffectModelBase* eff
ect, const UpdatedAnimationStyle::CompositableStyleSnapshot& snapshot) |
115 : player(player) | 115 : animation(animation) |
116 , effect(effect) | 116 , effect(effect) |
117 , snapshot(snapshot) | 117 , snapshot(snapshot) |
118 { | 118 { |
119 } | 119 } |
120 | 120 |
121 DEFINE_INLINE_TRACE() | 121 DEFINE_INLINE_TRACE() |
122 { | 122 { |
123 visitor->trace(player); | 123 visitor->trace(animation); |
124 visitor->trace(effect); | 124 visitor->trace(effect); |
125 visitor->trace(snapshot); | 125 visitor->trace(snapshot); |
126 } | 126 } |
127 | 127 |
128 RawPtrWillBeMember<AnimationPlayer> player; | 128 RawPtrWillBeMember<Animation> animation; |
129 RawPtrWillBeMember<KeyframeEffectModelBase> effect; | 129 RawPtrWillBeMember<KeyframeEffectModelBase> effect; |
130 CompositableStyleSnapshot snapshot; | 130 CompositableStyleSnapshot snapshot; |
131 }; | 131 }; |
132 | 132 |
133 void startAnimation(const AtomicString& animationName, PassRefPtrWillBeRawPt
r<InertAnimation> animation, const Timing& timing, PassRefPtrWillBeRawPtr<StyleR
uleKeyframes> styleRule) | 133 void startAnimation(const AtomicString& animationName, PassRefPtrWillBeRawPt
r<InertAnimation> effect, const Timing& timing, PassRefPtrWillBeRawPtr<StyleRule
Keyframes> styleRule) |
134 { | 134 { |
135 animation->setName(animationName); | 135 effect->setName(animationName); |
136 m_newAnimations.append(NewAnimation(animationName, animation, timing, st
yleRule)); | 136 m_newAnimations.append(NewAnimation(animationName, effect, timing, style
Rule)); |
137 } | 137 } |
138 // Returns whether player has been suppressed and should be filtered during
style application. | 138 // Returns whether animation has been suppressed and should be filtered duri
ng style application. |
139 bool isSuppressedAnimation(const AnimationPlayer* player) const { return m_s
uppressedAnimationPlayers.contains(player); } | 139 bool isSuppressedAnimation(const Animation* animation) const { return m_supp
ressedAnimations.contains(animation); } |
140 void cancelAnimation(const AtomicString& name, AnimationPlayer& player) | 140 void cancelAnimation(const AtomicString& name, Animation& animation) |
141 { | 141 { |
142 m_cancelledAnimationNames.append(name); | 142 m_cancelledAnimationNames.append(name); |
143 m_suppressedAnimationPlayers.add(&player); | 143 m_suppressedAnimations.add(&animation); |
144 } | 144 } |
145 void toggleAnimationPaused(const AtomicString& name) | 145 void toggleAnimationPaused(const AtomicString& name) |
146 { | 146 { |
147 m_animationsWithPauseToggled.append(name); | 147 m_animationsWithPauseToggled.append(name); |
148 } | 148 } |
149 void updateAnimation(const AtomicString& name, AnimationPlayer* player, Pass
RefPtrWillBeRawPtr<InertAnimation> animation, const Timing& specifiedTiming, | 149 void updateAnimation(const AtomicString& name, Animation* animation, PassRef
PtrWillBeRawPtr<InertAnimation> effect, const Timing& specifiedTiming, |
150 PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule) | 150 PassRefPtrWillBeRawPtr<StyleRuleKeyframes> styleRule) |
151 { | 151 { |
152 m_animationsWithUpdates.append(UpdatedAnimation(name, player, animation,
specifiedTiming, styleRule)); | 152 m_animationsWithUpdates.append(UpdatedAnimation(name, animation, effect,
specifiedTiming, styleRule)); |
153 m_suppressedAnimationPlayers.add(player); | 153 m_suppressedAnimations.add(animation); |
154 } | 154 } |
155 void updateAnimationStyle(AnimationPlayer* player, KeyframeEffectModelBase*
effect, LayoutObject* renderer, const ComputedStyle& newStyle) | 155 void updateAnimationStyle(Animation* animation, KeyframeEffectModelBase* eff
ect, LayoutObject* renderer, const ComputedStyle& newStyle) |
156 { | 156 { |
157 UpdatedAnimationStyle::CompositableStyleSnapshot snapshot; | 157 UpdatedAnimationStyle::CompositableStyleSnapshot snapshot; |
158 if (renderer) { | 158 if (renderer) { |
159 const ComputedStyle& oldStyle = renderer->styleRef(); | 159 const ComputedStyle& oldStyle = renderer->styleRef(); |
160 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyOpacity, oldSty
le, newStyle) && effect->affects(PropertyHandle(CSSPropertyOpacity))) | 160 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyOpacity, oldSty
le, newStyle) && effect->affects(PropertyHandle(CSSPropertyOpacity))) |
161 snapshot.opacity = CSSAnimatableValueFactory::create(CSSProperty
Opacity, newStyle); | 161 snapshot.opacity = CSSAnimatableValueFactory::create(CSSProperty
Opacity, newStyle); |
162 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyTransform, oldS
tyle, newStyle) && effect->affects(PropertyHandle(CSSPropertyTransform))) | 162 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyTransform, oldS
tyle, newStyle) && effect->affects(PropertyHandle(CSSPropertyTransform))) |
163 snapshot.transform = CSSAnimatableValueFactory::create(CSSProper
tyTransform, newStyle); | 163 snapshot.transform = CSSAnimatableValueFactory::create(CSSProper
tyTransform, newStyle); |
164 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyWebkitFilter, o
ldStyle, newStyle) && effect->affects(PropertyHandle(CSSPropertyWebkitFilter))) | 164 if (!CSSPropertyEquality::propertiesEqual(CSSPropertyWebkitFilter, o
ldStyle, newStyle) && effect->affects(PropertyHandle(CSSPropertyWebkitFilter))) |
165 snapshot.webkitFilter = CSSAnimatableValueFactory::create(CSSPro
pertyWebkitFilter, newStyle); | 165 snapshot.webkitFilter = CSSAnimatableValueFactory::create(CSSPro
pertyWebkitFilter, newStyle); |
166 } | 166 } |
167 | 167 |
168 m_animationsWithStyleUpdates.append(UpdatedAnimationStyle(player, effect
, snapshot)); | 168 m_animationsWithStyleUpdates.append(UpdatedAnimationStyle(animation, eff
ect, snapshot)); |
169 } | 169 } |
170 | 170 |
171 void startTransition(CSSPropertyID id, CSSPropertyID eventId, const Animatab
leValue* from, const AnimatableValue* to, PassRefPtrWillBeRawPtr<InertAnimation>
animation) | 171 void startTransition(CSSPropertyID id, CSSPropertyID eventId, const Animatab
leValue* from, const AnimatableValue* to, PassRefPtrWillBeRawPtr<InertAnimation>
effect) |
172 { | 172 { |
173 animation->setName(getPropertyName(id)); | 173 effect->setName(getPropertyName(id)); |
174 NewTransition newTransition; | 174 NewTransition newTransition; |
175 newTransition.id = id; | 175 newTransition.id = id; |
176 newTransition.eventId = eventId; | 176 newTransition.eventId = eventId; |
177 newTransition.from = from; | 177 newTransition.from = from; |
178 newTransition.to = to; | 178 newTransition.to = to; |
179 newTransition.animation = animation; | 179 newTransition.effect = effect; |
180 m_newTransitions.set(id, newTransition); | 180 m_newTransitions.set(id, newTransition); |
181 } | 181 } |
182 bool isCancelledTransition(CSSPropertyID id) const { return m_cancelledTrans
itions.contains(id); } | 182 bool isCancelledTransition(CSSPropertyID id) const { return m_cancelledTrans
itions.contains(id); } |
183 void cancelTransition(CSSPropertyID id) { m_cancelledTransitions.add(id); } | 183 void cancelTransition(CSSPropertyID id) { m_cancelledTransitions.add(id); } |
184 void finishTransition(CSSPropertyID id) { m_finishedTransitions.add(id); } | 184 void finishTransition(CSSPropertyID id) { m_finishedTransitions.add(id); } |
185 | 185 |
186 const WillBeHeapVector<NewAnimation>& newAnimations() const { return m_newAn
imations; } | 186 const WillBeHeapVector<NewAnimation>& newAnimations() const { return m_newAn
imations; } |
187 const Vector<AtomicString>& cancelledAnimationNames() const { return m_cance
lledAnimationNames; } | 187 const Vector<AtomicString>& cancelledAnimationNames() const { return m_cance
lledAnimationNames; } |
188 const WillBeHeapHashSet<RawPtrWillBeMember<const AnimationPlayer>>& suppress
edAnimationAnimationPlayers() const { return m_suppressedAnimationPlayers; } | 188 const WillBeHeapHashSet<RawPtrWillBeMember<const Animation>>& suppressedAnim
ationAnimations() const { return m_suppressedAnimations; } |
189 const Vector<AtomicString>& animationsWithPauseToggled() const { return m_an
imationsWithPauseToggled; } | 189 const Vector<AtomicString>& animationsWithPauseToggled() const { return m_an
imationsWithPauseToggled; } |
190 const WillBeHeapVector<UpdatedAnimation>& animationsWithUpdates() const { re
turn m_animationsWithUpdates; } | 190 const WillBeHeapVector<UpdatedAnimation>& animationsWithUpdates() const { re
turn m_animationsWithUpdates; } |
191 const WillBeHeapVector<UpdatedAnimationStyle>& animationsWithStyleUpdates()
const { return m_animationsWithStyleUpdates; } | 191 const WillBeHeapVector<UpdatedAnimationStyle>& animationsWithStyleUpdates()
const { return m_animationsWithStyleUpdates; } |
192 | 192 |
193 struct NewTransition { | 193 struct NewTransition { |
194 ALLOW_ONLY_INLINE_ALLOCATION(); | 194 ALLOW_ONLY_INLINE_ALLOCATION(); |
195 public: | 195 public: |
196 DEFINE_INLINE_TRACE() | 196 DEFINE_INLINE_TRACE() |
197 { | 197 { |
198 visitor->trace(from); | 198 visitor->trace(from); |
199 visitor->trace(to); | 199 visitor->trace(to); |
200 visitor->trace(animation); | 200 visitor->trace(effect); |
201 } | 201 } |
202 | 202 |
203 CSSPropertyID id; | 203 CSSPropertyID id; |
204 CSSPropertyID eventId; | 204 CSSPropertyID eventId; |
205 RawPtrWillBeMember<const AnimatableValue> from; | 205 RawPtrWillBeMember<const AnimatableValue> from; |
206 RawPtrWillBeMember<const AnimatableValue> to; | 206 RawPtrWillBeMember<const AnimatableValue> to; |
207 RefPtrWillBeMember<InertAnimation> animation; | 207 RefPtrWillBeMember<InertAnimation> effect; |
208 }; | 208 }; |
209 using NewTransitionMap = WillBeHeapHashMap<CSSPropertyID, NewTransition>; | 209 using NewTransitionMap = WillBeHeapHashMap<CSSPropertyID, NewTransition>; |
210 const NewTransitionMap& newTransitions() const { return m_newTransitions; } | 210 const NewTransitionMap& newTransitions() const { return m_newTransitions; } |
211 const HashSet<CSSPropertyID>& cancelledTransitions() const { return m_cancel
ledTransitions; } | 211 const HashSet<CSSPropertyID>& cancelledTransitions() const { return m_cancel
ledTransitions; } |
212 const HashSet<CSSPropertyID>& finishedTransitions() const { return m_finishe
dTransitions; } | 212 const HashSet<CSSPropertyID>& finishedTransitions() const { return m_finishe
dTransitions; } |
213 | 213 |
214 void adoptActiveInterpolationsForAnimations(ActiveInterpolationMap& newMap)
{ newMap.swap(m_activeInterpolationsForAnimations); } | 214 void adoptActiveInterpolationsForAnimations(ActiveInterpolationMap& newMap)
{ newMap.swap(m_activeInterpolationsForAnimations); } |
215 void adoptActiveInterpolationsForTransitions(ActiveInterpolationMap& newMap)
{ newMap.swap(m_activeInterpolationsForTransitions); } | 215 void adoptActiveInterpolationsForTransitions(ActiveInterpolationMap& newMap)
{ newMap.swap(m_activeInterpolationsForTransitions); } |
216 const ActiveInterpolationMap& activeInterpolationsForAnimations() const { re
turn m_activeInterpolationsForAnimations; } | 216 const ActiveInterpolationMap& activeInterpolationsForAnimations() const { re
turn m_activeInterpolationsForAnimations; } |
217 const ActiveInterpolationMap& activeInterpolationsForTransitions() const { r
eturn m_activeInterpolationsForTransitions; } | 217 const ActiveInterpolationMap& activeInterpolationsForTransitions() const { r
eturn m_activeInterpolationsForTransitions; } |
218 ActiveInterpolationMap& activeInterpolationsForAnimations() { return m_activ
eInterpolationsForAnimations; } | 218 ActiveInterpolationMap& activeInterpolationsForAnimations() { return m_activ
eInterpolationsForAnimations; } |
219 | 219 |
220 bool isEmpty() const | 220 bool isEmpty() const |
221 { | 221 { |
222 return m_newAnimations.isEmpty() | 222 return m_newAnimations.isEmpty() |
223 && m_cancelledAnimationNames.isEmpty() | 223 && m_cancelledAnimationNames.isEmpty() |
224 && m_suppressedAnimationPlayers.isEmpty() | 224 && m_suppressedAnimations.isEmpty() |
225 && m_animationsWithPauseToggled.isEmpty() | 225 && m_animationsWithPauseToggled.isEmpty() |
226 && m_animationsWithUpdates.isEmpty() | 226 && m_animationsWithUpdates.isEmpty() |
227 && m_animationsWithStyleUpdates.isEmpty() | 227 && m_animationsWithStyleUpdates.isEmpty() |
228 && m_newTransitions.isEmpty() | 228 && m_newTransitions.isEmpty() |
229 && m_cancelledTransitions.isEmpty() | 229 && m_cancelledTransitions.isEmpty() |
230 && m_finishedTransitions.isEmpty() | 230 && m_finishedTransitions.isEmpty() |
231 && m_activeInterpolationsForAnimations.isEmpty() | 231 && m_activeInterpolationsForAnimations.isEmpty() |
232 && m_activeInterpolationsForTransitions.isEmpty(); | 232 && m_activeInterpolationsForTransitions.isEmpty(); |
233 } | 233 } |
234 | 234 |
235 DECLARE_TRACE(); | 235 DECLARE_TRACE(); |
236 | 236 |
237 private: | 237 private: |
238 // Order is significant since it defines the order in which new animations | 238 // Order is significant since it defines the order in which new animations |
239 // will be started. Note that there may be multiple animations present | 239 // will be started. Note that there may be multiple animations present |
240 // with the same name, due to the way in which we split up animations with | 240 // with the same name, due to the way in which we split up animations with |
241 // incomplete keyframes. | 241 // incomplete keyframes. |
242 WillBeHeapVector<NewAnimation> m_newAnimations; | 242 WillBeHeapVector<NewAnimation> m_newAnimations; |
243 Vector<AtomicString> m_cancelledAnimationNames; | 243 Vector<AtomicString> m_cancelledAnimationNames; |
244 WillBeHeapHashSet<RawPtrWillBeMember<const AnimationPlayer>> m_suppressedAni
mationPlayers; | 244 WillBeHeapHashSet<RawPtrWillBeMember<const Animation>> m_suppressedAnimation
s; |
245 Vector<AtomicString> m_animationsWithPauseToggled; | 245 Vector<AtomicString> m_animationsWithPauseToggled; |
246 WillBeHeapVector<UpdatedAnimation> m_animationsWithUpdates; | 246 WillBeHeapVector<UpdatedAnimation> m_animationsWithUpdates; |
247 WillBeHeapVector<UpdatedAnimationStyle> m_animationsWithStyleUpdates; | 247 WillBeHeapVector<UpdatedAnimationStyle> m_animationsWithStyleUpdates; |
248 | 248 |
249 NewTransitionMap m_newTransitions; | 249 NewTransitionMap m_newTransitions; |
250 HashSet<CSSPropertyID> m_cancelledTransitions; | 250 HashSet<CSSPropertyID> m_cancelledTransitions; |
251 HashSet<CSSPropertyID> m_finishedTransitions; | 251 HashSet<CSSPropertyID> m_finishedTransitions; |
252 | 252 |
253 ActiveInterpolationMap m_activeInterpolationsForAnimations; | 253 ActiveInterpolationMap m_activeInterpolationsForAnimations; |
254 ActiveInterpolationMap m_activeInterpolationsForTransitions; | 254 ActiveInterpolationMap m_activeInterpolationsForTransitions; |
255 }; | 255 }; |
256 | 256 |
257 } // namespace blink | 257 } // namespace blink |
258 | 258 |
259 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::NewAnimation); | 259 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::NewAnimation); |
260 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::UpdatedAnimation); | 260 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::UpdatedAnimation); |
261 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::UpdatedAnimationSty
le); | 261 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::CSSAnimationUpdate::UpdatedAnimationSty
le); |
262 | 262 |
263 #endif | 263 #endif |
OLD | NEW |