Chromium Code Reviews| Index: Source/core/animation/Player.cpp |
| diff --git a/Source/core/animation/Player.cpp b/Source/core/animation/Player.cpp |
| index 92c7cf4ca491e513fae3cdfbcca78171125c9071..43eb2fbcd2ad9d83c698e77b75ae647d95454c93 100644 |
| --- a/Source/core/animation/Player.cpp |
| +++ b/Source/core/animation/Player.cpp |
| @@ -32,6 +32,7 @@ |
| #include "config.h" |
| #include "core/animation/Player.h" |
| +#include "core/animation/Animation.h" |
| #include "core/animation/DocumentTimeline.h" |
| #include "core/animation/TimedItem.h" |
| @@ -82,6 +83,30 @@ double Player::currentTimeBeforeDrift() const |
| return (effectiveTime(m_timeline.currentTime()) - startTime()) * m_playbackRate; |
| } |
| +bool Player::maybeStartCompositorAnimations() |
| +{ |
| + // 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())->maybeStartCompositorAnimations(); |
| +} |
| + |
| +bool Player::isRunningCompositorAnimations() |
| +{ |
| + if (!m_content || !m_content->isAnimation()) |
| + return false; |
| + return toAnimation(m_content.get())->isRunningCompositorAnimations(); |
| +} |
| + |
| +void Player::cancelCompositorAnimations() |
| +{ |
| + if (isRunningCompositorAnimations()) |
| + toAnimation(m_content.get())->cancelCompositorAnimations(); |
| +} |
| + |
| double Player::pausedTimeDrift() const |
| { |
| ASSERT(pausedInternal()); |
| @@ -139,7 +164,9 @@ void Player::setCurrentTime(double seekTime) |
| void Player::pauseForTesting() |
| { |
| - ASSERT(!paused()); |
| + // FIXME: Need to support pausing compositor animations to pass virtual/threaded tests. |
| + RELEASE_ASSERT(!isRunningCompositorAnimations()); |
| + RELEASE_ASSERT(!paused()); |
| m_isPausedForTesting = true; |
| setPausedImpl(true); |
| } |
| @@ -155,9 +182,10 @@ void Player::setPausedImpl(bool newValue) |
| if (pausedInternal() == newValue) |
| return; |
| - if (newValue) |
| + if (newValue) { |
| + cancelCompositorAnimations(); |
| m_pauseStartTime = currentTime(); |
| - else { |
| + } else { |
| m_timeDrift = pausedTimeDrift(); |
| m_pauseStartTime = nullValue(); |
|
shans
2013/11/18 21:55:01
TODO: restart compositor animations?
dstockwell
2013/11/19 02:04:58
Done.
|
| } |