| 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 |