diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/animation/Player.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/animation/Player.cpp | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/chromium/third_party/WebKit/Source/core/animation/Player.cpp b/chromium/third_party/WebKit/Source/core/animation/Player.cpp deleted file mode 100644 index 2fabdd15e17..00000000000 --- a/chromium/third_party/WebKit/Source/core/animation/Player.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (C) 2013 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#include "config.h" -#include "core/animation/Player.h" - -#include "core/animation/Animation.h" -#include "core/animation/DocumentTimeline.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)); -} - -Player::Player(DocumentTimeline& timeline, TimedItem* content) - : m_pauseStartTime(nullValue()) - , m_playbackRate(1) - , m_timeDrift(0) - , m_startTime(nullValue()) - , m_content(content) - , m_timeline(timeline) - , m_isPausedForTesting(false) -{ - if (m_content) - m_content->attach(this); -} - -Player::~Player() -{ - if (m_content) - m_content->detach(); -} - -void Player::setStartTime(double startTime) -{ - ASSERT(!isNull(startTime)); - ASSERT(!hasStartTime()); - m_startTime = startTime; - update(); -} - -double Player::currentTimeBeforeDrift() const -{ - if (isNull(m_startTime)) - return 0; - return (effectiveTime(m_timeline.currentTime()) - startTime()) * m_playbackRate; -} - -bool Player::maybeStartAnimationOnCompositor() -{ - // 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())->maybeStartAnimationOnCompositor(); -} - -bool Player::hasActiveAnimationsOnCompositor() -{ - if (!m_content || !m_content->isAnimation()) - return false; - return toAnimation(m_content.get())->hasActiveAnimationsOnCompositor(); -} - -void Player::cancelAnimationOnCompositor() -{ - if (hasActiveAnimationsOnCompositor()) - toAnimation(m_content.get())->cancelAnimationOnCompositor(); -} - -double Player::pausedTimeDrift() const -{ - ASSERT(pausedInternal()); - return currentTimeBeforeDrift() - m_pauseStartTime; -} - -double Player::timeDrift() const -{ - return pausedInternal() ? pausedTimeDrift() : m_timeDrift; -} - -double Player::currentTime() const -{ - return currentTimeBeforeDrift() - timeDrift(); -} - -bool Player::update(double* timeToEffectChange, bool* didTriggerStyleRecalc) -{ - if (!m_content) { - if (timeToEffectChange) - *timeToEffectChange = std::numeric_limits<double>::infinity(); - if (didTriggerStyleRecalc) - *didTriggerStyleRecalc = false; - return false; - } - - double inheritedTime = isNull(m_timeline.currentTime()) ? nullValue() : currentTime(); - bool didTriggerStyleRecalcLocal = m_content->updateInheritedTime(inheritedTime); - - if (timeToEffectChange) - *timeToEffectChange = m_content->timeToEffectChange(); - if (didTriggerStyleRecalc) - *didTriggerStyleRecalc = didTriggerStyleRecalcLocal; - return m_content->isCurrent() || m_content->isInEffect(); -} - -void Player::cancel() -{ - if (!m_content) - return; - - ASSERT(m_content->player() == this); - m_content->detach(); - m_content = 0; -} - -void Player::setCurrentTime(double seekTime) -{ - if (pausedInternal()) - m_pauseStartTime = seekTime; - else - m_timeDrift = currentTimeBeforeDrift() - seekTime; - - if (m_isPausedForTesting && hasActiveAnimationsOnCompositor()) - toAnimation(m_content.get())->pauseAnimationForTestingOnCompositor(currentTime()); - update(); -} - -void Player::pauseForTesting() -{ - RELEASE_ASSERT(!paused()); - if (!m_isPausedForTesting && hasActiveAnimationsOnCompositor()) - toAnimation(m_content.get())->pauseAnimationForTestingOnCompositor(currentTime()); - m_isPausedForTesting = true; - setPausedImpl(true); -} - -void Player::setPaused(bool newValue) -{ - ASSERT(!m_isPausedForTesting); - setPausedImpl(newValue); -} - -void Player::setPausedImpl(bool newValue) -{ - if (pausedInternal() == newValue) - return; - - if (newValue) { - // FIXME: resume compositor animation rather than pull back to main-thread - cancelAnimationOnCompositor(); - m_pauseStartTime = currentTime(); - } else { - m_timeDrift = pausedTimeDrift(); - m_pauseStartTime = nullValue(); - } -} - -void Player::setPlaybackRate(double newRate) -{ - double previousTime = currentTime(); - m_playbackRate = newRate; - setCurrentTime(previousTime); -} - -} // namespace |