summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/page/animation/CompositeAnimation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/page/animation/CompositeAnimation.cpp')
-rw-r--r--Source/WebCore/page/animation/CompositeAnimation.cpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/Source/WebCore/page/animation/CompositeAnimation.cpp b/Source/WebCore/page/animation/CompositeAnimation.cpp
index 602491e..27409d9 100644
--- a/Source/WebCore/page/animation/CompositeAnimation.cpp
+++ b/Source/WebCore/page/animation/CompositeAnimation.cpp
@@ -36,6 +36,8 @@
#include "KeyframeAnimation.h"
#include "RenderObject.h"
#include "RenderStyle.h"
+#include "WebKitAnimation.h"
+#include "WebKitAnimationList.h"
namespace WebCore {
@@ -54,6 +56,7 @@ void CompositeAnimation::clearRenderer()
CSSPropertyTransitionsMap::const_iterator transitionsEnd = m_transitions.end();
for (CSSPropertyTransitionsMap::const_iterator it = m_transitions.begin(); it != transitionsEnd; ++it) {
ImplicitAnimation* transition = it->second.get();
+ animationController()->animationWillBeRemoved(transition);
transition->clearRenderer();
}
}
@@ -62,6 +65,7 @@ void CompositeAnimation::clearRenderer()
AnimationNameMap::const_iterator animationsEnd = m_keyframeAnimations.end();
for (AnimationNameMap::const_iterator it = m_keyframeAnimations.begin(); it != animationsEnd; ++it) {
KeyframeAnimation* anim = it->second.get();
+ animationController()->animationWillBeRemoved(anim);
anim->clearRenderer();
}
}
@@ -173,8 +177,10 @@ void CompositeAnimation::updateTransitions(RenderObject* renderer, RenderStyle*
end = m_transitions.end();
for (CSSPropertyTransitionsMap::const_iterator it = m_transitions.begin(); it != end; ++it) {
ImplicitAnimation* anim = it->second.get();
- if (!anim->active())
+ if (!anim->active()) {
+ animationController()->animationWillBeRemoved(anim);
toBeRemoved.append(anim->animatingProperty());
+ }
}
// Now remove the transitions from the list
@@ -252,8 +258,11 @@ void CompositeAnimation::updateKeyframeAnimations(RenderObject* renderer, Render
kfend = m_keyframeAnimations.end();
for (AnimationNameMap::const_iterator it = m_keyframeAnimations.begin(); it != kfend; ++it) {
KeyframeAnimation* keyframeAnim = it->second.get();
- if (keyframeAnim->index() < 0)
+ if (keyframeAnim->index() < 0) {
animsToBeRemoved.append(keyframeAnim->name().impl());
+ animationController()->animationWillBeRemoved(keyframeAnim);
+ keyframeAnim->clearRenderer();
+ }
}
// Now remove the animations from the list.
@@ -560,4 +569,20 @@ unsigned CompositeAnimation::numberOfActiveAnimations() const
return count;
}
+PassRefPtr<WebKitAnimationList> CompositeAnimation::animations() const
+{
+ RefPtr<WebKitAnimationList> animations = WebKitAnimationList::create();
+ if (!m_keyframeAnimations.isEmpty()) {
+ m_keyframeAnimations.checkConsistency();
+ for (Vector<AtomicStringImpl*>::const_iterator it = m_keyframeAnimationOrderMap.begin(); it != m_keyframeAnimationOrderMap.end(); ++it) {
+ RefPtr<KeyframeAnimation> keyframeAnimation = m_keyframeAnimations.get(*it);
+ if (keyframeAnimation) {
+ RefPtr<WebKitAnimation> anim = WebKitAnimation::create(keyframeAnimation);
+ animations->append(anim);
+ }
+ }
+ }
+ return animations;
+}
+
} // namespace WebCore