| Index: Source/core/animation/Player.cpp
|
| diff --git a/Source/core/animation/Player.cpp b/Source/core/animation/Player.cpp
|
| index 92c7cf4ca491e513fae3cdfbcca78171125c9071..43b46064a29c7bae46da07545232f50dbe364ef1 100644
|
| --- a/Source/core/animation/Player.cpp
|
| +++ b/Source/core/animation/Player.cpp
|
| @@ -32,17 +32,12 @@
|
| #include "config.h"
|
| #include "core/animation/Player.h"
|
|
|
| +#include "core/animation/Animation.h"
|
| #include "core/animation/DocumentTimeline.h"
|
| #include "core/animation/TimedItem.h"
|
|
|
| namespace WebCore {
|
|
|
| -namespace {
|
| -
|
| -double effectiveTime(double time) { return isNull(time) ? 0 : time; }
|
| -
|
| -} // namespace
|
| -
|
| PassRefPtr<Player> Player::create(DocumentTimeline& timeline, TimedItem* content)
|
| {
|
| return adoptRef(new Player(timeline, content));
|
| @@ -82,6 +77,45 @@ double Player::currentTimeBeforeDrift() const
|
| return (effectiveTime(m_timeline.currentTime()) - startTime()) * m_playbackRate;
|
| }
|
|
|
| +bool Player::isCandidateForCompositorAnimation() const
|
| +{
|
| + if (!m_content || !m_content->isAnimation())
|
| + return false;
|
| +
|
| + const Animation* animation = toAnimation(m_content.get());
|
| + if (hasStartTime()) {
|
| + // FIXME: Support starting compositor animations that have a fixed
|
| + // start time.
|
| + return animation->isRunningCompositorAnimation();
|
| + }
|
| +
|
| + return animation->isCandidateForCompositorAnimation();
|
| +}
|
| +
|
| +bool Player::startCompositorAnimations()
|
| +{
|
| + // FIXME: Support starting compositor animations that have a fixed
|
| + // start time.
|
| + ASSERT(!hasStartTime());
|
| + if (!m_content || !m_content->isAnimation())
|
| + return false;
|
| +
|
| + return toAnimation(m_content.get())->startCompositorAnimations();
|
| +}
|
| +
|
| +bool Player::isRunningCompositorAnimation(const Element* element, CSSPropertyID property)
|
| +{
|
| + if (!m_content || !m_content->isAnimation())
|
| + return false;
|
| + return toAnimation(m_content.get())->isRunningCompositorAnimation(element, property);
|
| +}
|
| +
|
| +void Player::cancelCompositorAnimations()
|
| +{
|
| + if (isRunningCompositorAnimation())
|
| + toAnimation(m_content.get())->cancelCompositorAnimations();
|
| +}
|
| +
|
| double Player::pausedTimeDrift() const
|
| {
|
| ASSERT(pausedInternal());
|
| @@ -139,7 +173,8 @@ void Player::setCurrentTime(double seekTime)
|
|
|
| void Player::pauseForTesting()
|
| {
|
| - ASSERT(!paused());
|
| + RELEASE_ASSERT(!isRunningCompositorAnimation());
|
| + RELEASE_ASSERT(!paused());
|
| m_isPausedForTesting = true;
|
| setPausedImpl(true);
|
| }
|
|
|