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

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

Issue 814083003: Update animation when changes in animation keyframes are detected. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase again Created 5 years, 11 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
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 14 matching lines...) Expand all
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #ifndef CSSAnimations_h 31 #ifndef CSSAnimations_h
32 #define CSSAnimations_h 32 #define CSSAnimations_h
33 33
34 #include "core/animation/InertAnimation.h" 34 #include "core/animation/InertAnimation.h"
35 #include "core/animation/Interpolation.h"
36 #include "core/animation/css/CSSAnimationData.h"
35 #include "core/animation/css/CSSAnimationUpdate.h" 37 #include "core/animation/css/CSSAnimationUpdate.h"
38 #include "core/css/CSSKeyframesRule.h"
36 #include "core/css/StylePropertySet.h" 39 #include "core/css/StylePropertySet.h"
37 #include "core/dom/Document.h" 40 #include "core/dom/Document.h"
38 #include "wtf/HashMap.h" 41 #include "wtf/HashMap.h"
39 #include "wtf/text/AtomicString.h" 42 #include "wtf/text/AtomicString.h"
40 43
41 namespace blink { 44 namespace blink {
42 45
43 class CSSTransitionData; 46 class CSSTransitionData;
44 class Element; 47 class Element;
45 class StylePropertyShorthand; 48 class StylePropertyShorthand;
46 class StyleResolver; 49 class StyleResolver;
47 class StyleRuleKeyframes;
48 50
49 class CSSAnimations final { 51 class CSSAnimations final {
50 WTF_MAKE_NONCOPYABLE(CSSAnimations); 52 WTF_MAKE_NONCOPYABLE(CSSAnimations);
51 DISALLOW_ALLOCATION(); 53 DISALLOW_ALLOCATION();
52 public: 54 public:
53 CSSAnimations(); 55 CSSAnimations();
54 56
55 const AtomicString getAnimationNameForInspector(const AnimationPlayer&); 57 const AtomicString getAnimationNameForInspector(const AnimationPlayer&);
56 58
57 static const StylePropertyShorthand& animatableProperties(); 59 static const StylePropertyShorthand& animatableProperties();
58 static bool isAllowedAnimation(CSSPropertyID); 60 static bool isAllowedAnimation(CSSPropertyID);
59 static PassOwnPtrWillBeRawPtr<CSSAnimationUpdate> calculateUpdate(const Elem ent* animatingElement, Element&, const RenderStyle&, RenderStyle* parentStyle, S tyleResolver*); 61 static PassOwnPtrWillBeRawPtr<CSSAnimationUpdate> calculateUpdate(const Elem ent* animatingElement, Element&, const RenderStyle&, RenderStyle* parentStyle, S tyleResolver*);
60 62
61 void setPendingUpdate(PassOwnPtrWillBeRawPtr<CSSAnimationUpdate> update) { m _pendingUpdate = update; } 63 void setPendingUpdate(PassOwnPtrWillBeRawPtr<CSSAnimationUpdate> update) { m _pendingUpdate = update; }
62 void maybeApplyPendingUpdate(Element*); 64 void maybeApplyPendingUpdate(Element*);
63 bool isEmpty() const { return m_animations.isEmpty() && m_transitions.isEmpt y() && !m_pendingUpdate; } 65 bool isEmpty() const { return m_animations.isEmpty() && m_transitions.isEmpt y() && !m_pendingUpdate; }
64 void cancel(); 66 void cancel();
65 67
66 void trace(Visitor*); 68 void trace(Visitor*);
67 69
68 private: 70 private:
71 struct RunningAnimation {
72 ALLOW_ONLY_INLINE_ALLOCATION();
73 public:
74 void trace(Visitor* visitor)
75 {
76 visitor->trace(player);
77 }
78
79 RefPtrWillBeMember<AnimationPlayer> player;
80 Timing specifiedTiming;
81 RefPtrWillBeMember<StyleRuleKeyframes> styleRule;
82 unsigned styleChangeCounter;
esprehn 2015/01/29 04:23:19 constructor needs to set this to 0
shend 2015/01/30 00:03:10 Done.
83 };
84
69 struct RunningTransition { 85 struct RunningTransition {
70 ALLOW_ONLY_INLINE_ALLOCATION(); 86 ALLOW_ONLY_INLINE_ALLOCATION();
71 public: 87 public:
72 void trace(Visitor* visitor) 88 void trace(Visitor* visitor)
73 { 89 {
74 visitor->trace(player); 90 visitor->trace(player);
75 visitor->trace(from); 91 visitor->trace(from);
76 visitor->trace(to); 92 visitor->trace(to);
77 } 93 }
78 94
79 RefPtrWillBeMember<AnimationPlayer> player; 95 RefPtrWillBeMember<AnimationPlayer> player;
80 RawPtrWillBeMember<const AnimatableValue> from; 96 RawPtrWillBeMember<const AnimatableValue> from;
81 RawPtrWillBeMember<const AnimatableValue> to; 97 RawPtrWillBeMember<const AnimatableValue> to;
82 }; 98 };
83 99
84 using AnimationMap = WillBeHeapHashMap<AtomicString, RefPtrWillBeMember<Anim ationPlayer>>; 100 using AnimationMap = WillBeHeapHashMap<AtomicString, RunningAnimation>;
85 AnimationMap m_animations; 101 AnimationMap m_animations;
86 102
87 using TransitionMap = WillBeHeapHashMap<CSSPropertyID, RunningTransition>; 103 using TransitionMap = WillBeHeapHashMap<CSSPropertyID, RunningTransition>;
88 TransitionMap m_transitions; 104 TransitionMap m_transitions;
89 105
90 OwnPtrWillBeMember<CSSAnimationUpdate> m_pendingUpdate; 106 OwnPtrWillBeMember<CSSAnimationUpdate> m_pendingUpdate;
91 107
92 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation>> m_previo usActiveInterpolationsForAnimations; 108 WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation>> m_previo usActiveInterpolationsForAnimations;
93 109
94 static void calculateAnimationUpdate(CSSAnimationUpdate*, const Element* ani matingElement, Element&, const RenderStyle&, RenderStyle* parentStyle, StyleReso lver*); 110 static void calculateAnimationUpdate(CSSAnimationUpdate*, const Element* ani matingElement, Element&, const RenderStyle&, RenderStyle* parentStyle, StyleReso lver*);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 private: 150 private:
135 RawPtrWillBeMember<Element> m_target; 151 RawPtrWillBeMember<Element> m_target;
136 const CSSPropertyID m_property; 152 const CSSPropertyID m_property;
137 AnimationNode::Phase m_previousPhase; 153 AnimationNode::Phase m_previousPhase;
138 }; 154 };
139 }; 155 };
140 156
141 } // namespace blink 157 } // namespace blink
142 158
143 #endif 159 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698