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

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

Issue 1318543009: Oilpan: Partially ship Oilpan for core/animations (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 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
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698