| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 | 31 |
| 32 #include "config.h" | 32 #include "config.h" |
| 33 #include "core/animation/Player.h" | 33 #include "core/animation/Player.h" |
| 34 | 34 |
| 35 #include "core/animation/Animation.h" |
| 35 #include "core/animation/DocumentTimeline.h" | 36 #include "core/animation/DocumentTimeline.h" |
| 36 #include "core/animation/TimedItem.h" | 37 #include "core/animation/TimedItem.h" |
| 37 | 38 |
| 38 namespace WebCore { | 39 namespace WebCore { |
| 39 | 40 |
| 40 namespace { | |
| 41 | |
| 42 double effectiveTime(double time) { return isNull(time) ? 0 : time; } | |
| 43 | |
| 44 } // namespace | |
| 45 | |
| 46 PassRefPtr<Player> Player::create(DocumentTimeline& timeline, TimedItem* content
) | 41 PassRefPtr<Player> Player::create(DocumentTimeline& timeline, TimedItem* content
) |
| 47 { | 42 { |
| 48 return adoptRef(new Player(timeline, content)); | 43 return adoptRef(new Player(timeline, content)); |
| 49 } | 44 } |
| 50 | 45 |
| 51 Player::Player(DocumentTimeline& timeline, TimedItem* content) | 46 Player::Player(DocumentTimeline& timeline, TimedItem* content) |
| 52 : m_pauseStartTime(nullValue()) | 47 : m_pauseStartTime(nullValue()) |
| 53 , m_playbackRate(1) | 48 , m_playbackRate(1) |
| 54 , m_timeDrift(0) | 49 , m_timeDrift(0) |
| 55 , m_startTime(nullValue()) | 50 , m_startTime(nullValue()) |
| (...skipping 19 matching lines...) Expand all Loading... |
| 75 update(); | 70 update(); |
| 76 } | 71 } |
| 77 | 72 |
| 78 double Player::currentTimeBeforeDrift() const | 73 double Player::currentTimeBeforeDrift() const |
| 79 { | 74 { |
| 80 if (isNull(m_startTime)) | 75 if (isNull(m_startTime)) |
| 81 return 0; | 76 return 0; |
| 82 return (effectiveTime(m_timeline.currentTime()) - startTime()) * m_playbackR
ate; | 77 return (effectiveTime(m_timeline.currentTime()) - startTime()) * m_playbackR
ate; |
| 83 } | 78 } |
| 84 | 79 |
| 80 bool Player::isCandidateForCompositorAnimation() const |
| 81 { |
| 82 if (!m_content || !m_content->isAnimation()) |
| 83 return false; |
| 84 |
| 85 const Animation* animation = toAnimation(m_content.get()); |
| 86 if (hasStartTime()) { |
| 87 // FIXME: Support starting compositor animations that have a fixed |
| 88 // start time. |
| 89 return animation->isRunningCompositorAnimation(); |
| 90 } |
| 91 |
| 92 return animation->isCandidateForCompositorAnimation(); |
| 93 } |
| 94 |
| 95 bool Player::startCompositorAnimations() |
| 96 { |
| 97 // FIXME: Support starting compositor animations that have a fixed |
| 98 // start time. |
| 99 ASSERT(!hasStartTime()); |
| 100 if (!m_content || !m_content->isAnimation()) |
| 101 return false; |
| 102 |
| 103 return toAnimation(m_content.get())->startCompositorAnimations(); |
| 104 } |
| 105 |
| 106 bool Player::isRunningCompositorAnimation(const Element* element, CSSPropertyID
property) |
| 107 { |
| 108 if (!m_content || !m_content->isAnimation()) |
| 109 return false; |
| 110 return toAnimation(m_content.get())->isRunningCompositorAnimation(element, p
roperty); |
| 111 } |
| 112 |
| 113 void Player::cancelCompositorAnimations() |
| 114 { |
| 115 if (isRunningCompositorAnimation()) |
| 116 toAnimation(m_content.get())->cancelCompositorAnimations(); |
| 117 } |
| 118 |
| 85 double Player::pausedTimeDrift() const | 119 double Player::pausedTimeDrift() const |
| 86 { | 120 { |
| 87 ASSERT(pausedInternal()); | 121 ASSERT(pausedInternal()); |
| 88 return currentTimeBeforeDrift() - m_pauseStartTime; | 122 return currentTimeBeforeDrift() - m_pauseStartTime; |
| 89 } | 123 } |
| 90 | 124 |
| 91 double Player::timeDrift() const | 125 double Player::timeDrift() const |
| 92 { | 126 { |
| 93 return pausedInternal() ? pausedTimeDrift() : m_timeDrift; | 127 return pausedInternal() ? pausedTimeDrift() : m_timeDrift; |
| 94 } | 128 } |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 if (pausedInternal()) | 166 if (pausedInternal()) |
| 133 m_pauseStartTime = seekTime; | 167 m_pauseStartTime = seekTime; |
| 134 else | 168 else |
| 135 m_timeDrift = currentTimeBeforeDrift() - seekTime; | 169 m_timeDrift = currentTimeBeforeDrift() - seekTime; |
| 136 | 170 |
| 137 update(); | 171 update(); |
| 138 } | 172 } |
| 139 | 173 |
| 140 void Player::pauseForTesting() | 174 void Player::pauseForTesting() |
| 141 { | 175 { |
| 142 ASSERT(!paused()); | 176 RELEASE_ASSERT(!isRunningCompositorAnimation()); |
| 177 RELEASE_ASSERT(!paused()); |
| 143 m_isPausedForTesting = true; | 178 m_isPausedForTesting = true; |
| 144 setPausedImpl(true); | 179 setPausedImpl(true); |
| 145 } | 180 } |
| 146 | 181 |
| 147 void Player::setPaused(bool newValue) | 182 void Player::setPaused(bool newValue) |
| 148 { | 183 { |
| 149 ASSERT(!m_isPausedForTesting); | 184 ASSERT(!m_isPausedForTesting); |
| 150 setPausedImpl(newValue); | 185 setPausedImpl(newValue); |
| 151 } | 186 } |
| 152 | 187 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 164 } | 199 } |
| 165 | 200 |
| 166 void Player::setPlaybackRate(double newRate) | 201 void Player::setPlaybackRate(double newRate) |
| 167 { | 202 { |
| 168 double previousTime = currentTime(); | 203 double previousTime = currentTime(); |
| 169 m_playbackRate = newRate; | 204 m_playbackRate = newRate; |
| 170 setCurrentTime(previousTime); | 205 setCurrentTime(previousTime); |
| 171 } | 206 } |
| 172 | 207 |
| 173 } // namespace | 208 } // namespace |
| OLD | NEW |