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

Unified Diff: Source/core/animation/css/CSSAnimations.h

Issue 214603002: CSS Animations: Generate a single player for each keyframe animation. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Source/core/animation/css/CSSAnimations.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/animation/css/CSSAnimations.h
diff --git a/Source/core/animation/css/CSSAnimations.h b/Source/core/animation/css/CSSAnimations.h
index 4aeb4d5623241d94017cb9ccaabd1c1bb1a9cb7d..cb1420809137413d7c37cdc0815c3ab03ff80447 100644
--- a/Source/core/animation/css/CSSAnimations.h
+++ b/Source/core/animation/css/CSSAnimations.h
@@ -54,20 +54,19 @@ class StyleRuleKeyframes;
// This includes updates to animations/transitions as well as the Interpolations to be applied.
class CSSAnimationUpdate FINAL : public NoBaseWillBeGarbageCollectedFinalized<CSSAnimationUpdate> {
public:
- void startAnimation(AtomicString& animationName, const HashSet<RefPtr<InertAnimation> >& animations)
+ void startAnimation(AtomicString& animationName, PassRefPtr<InertAnimation> animation)
{
NewAnimation newAnimation;
newAnimation.name = animationName;
- newAnimation.animations = animations;
+ newAnimation.animation = animation;
m_newAnimations.append(newAnimation);
}
// Returns whether player has been cancelled and should be filtered during style application.
- bool isCancelledAnimation(const AnimationPlayer* player) const { return m_cancelledAnimationAnimationPlayers.contains(player); }
- void cancelAnimation(const AtomicString& name, const HashSet<RefPtr<AnimationPlayer> >& players)
+ bool isCancelledAnimation(const AnimationPlayer* player) const { return m_cancelledAnimationPlayers.contains(player); }
+ void cancelAnimation(const AtomicString& name, AnimationPlayer& player)
{
m_cancelledAnimationNames.append(name);
- for (HashSet<RefPtr<AnimationPlayer> >::const_iterator iter = players.begin(); iter != players.end(); ++iter)
- m_cancelledAnimationAnimationPlayers.add(iter->get());
+ m_cancelledAnimationPlayers.add(&player);
}
void toggleAnimationPaused(const AtomicString& name)
{
@@ -88,11 +87,11 @@ public:
struct NewAnimation {
AtomicString name;
- HashSet<RefPtr<InertAnimation> > animations;
+ RefPtr<InertAnimation> animation;
};
const Vector<NewAnimation>& newAnimations() const { return m_newAnimations; }
const Vector<AtomicString>& cancelledAnimationNames() const { return m_cancelledAnimationNames; }
- const HashSet<const AnimationPlayer*>& cancelledAnimationAnimationPlayers() const { return m_cancelledAnimationAnimationPlayers; }
+ const HashSet<const AnimationPlayer*>& cancelledAnimationAnimationPlayers() const { return m_cancelledAnimationPlayers; }
const Vector<AtomicString>& animationsWithPauseToggled() const { return m_animationsWithPauseToggled; }
struct NewTransition {
@@ -123,7 +122,7 @@ public:
{
return m_newAnimations.isEmpty()
&& m_cancelledAnimationNames.isEmpty()
- && m_cancelledAnimationAnimationPlayers.isEmpty()
+ && m_cancelledAnimationPlayers.isEmpty()
&& m_animationsWithPauseToggled.isEmpty()
&& m_newTransitions.isEmpty()
&& m_cancelledTransitions.isEmpty()
@@ -140,7 +139,7 @@ private:
// incomplete keyframes.
Vector<NewAnimation> m_newAnimations;
Vector<AtomicString> m_cancelledAnimationNames;
- HashSet<const AnimationPlayer*> m_cancelledAnimationAnimationPlayers;
+ HashSet<const AnimationPlayer*> m_cancelledAnimationPlayers;
Vector<AtomicString> m_animationsWithPauseToggled;
NewTransitionMap m_newTransitions;
@@ -171,11 +170,6 @@ public:
void trace(Visitor*);
private:
- // Note that a single animation name may map to multiple players due to
- // the way in which we split up animations with incomplete keyframes.
- // FIXME: Once the Web Animations model supports groups, we could use a
- // ParGroup to drive multiple animations from a single AnimationPlayer.
- typedef HashMap<AtomicString, HashSet<RefPtr<AnimationPlayer> > > AnimationMap;
struct RunningTransition {
ALLOW_ONLY_INLINE_ALLOCATION();
public:
@@ -189,9 +183,13 @@ private:
RawPtrWillBeMember<const AnimatableValue> from;
RawPtrWillBeMember<const AnimatableValue> to;
};
- typedef WillBeHeapHashMap<CSSPropertyID, RunningTransition> TransitionMap;
+
+ typedef HashMap<AtomicString, RefPtr<AnimationPlayer> > AnimationMap;
AnimationMap m_animations;
+
+ typedef WillBeHeapHashMap<CSSPropertyID, RunningTransition> TransitionMap;
TransitionMap m_transitions;
+
OwnPtrWillBeMember<CSSAnimationUpdate> m_pendingUpdate;
WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> > m_previousActiveInterpolationsForAnimations;
« no previous file with comments | « no previous file | Source/core/animation/css/CSSAnimations.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698