| Index: Source/core/html/HTMLMediaElement.cpp
|
| diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp
|
| index 5b710d42c174b936b741b68e5aec125c0c761bfc..6d5c10d55dfe3ce3ff77473f5b76730b946d5a8e 100644
|
| --- a/Source/core/html/HTMLMediaElement.cpp
|
| +++ b/Source/core/html/HTMLMediaElement.cpp
|
| @@ -1878,7 +1878,7 @@ void HTMLMediaElement::addPlayedRange(double start, double end)
|
|
|
| bool HTMLMediaElement::supportsSave() const
|
| {
|
| - return m_player ? m_player->supportsSave() : false;
|
| + return webMediaPlayer() && webMediaPlayer()->supportsSave();
|
| }
|
|
|
| void HTMLMediaElement::prepareToPlay()
|
| @@ -1934,12 +1934,13 @@ void HTMLMediaElement::seek(double time, ExceptionState& exceptionState)
|
| // time scale, we will ask the media engine to "seek" to the current movie time, which may be a noop and
|
| // not generate a timechanged callback. This means m_seeking will never be cleared and we will never
|
| // fire a 'seeked' event.
|
| + double mediaTime = webMediaPlayer()->mediaTimeForTimeValue(time);
|
| + if (time != mediaTime) {
|
| #if !LOG_DISABLED
|
| - double mediaTime = m_player->mediaTimeForTimeValue(time);
|
| - if (time != mediaTime)
|
| WTF_LOG(Media, "HTMLMediaElement::seek(%f) - media timeline equivalent is %f", time, mediaTime);
|
| #endif
|
| - time = m_player->mediaTimeForTimeValue(time);
|
| + time = mediaTime;
|
| + }
|
|
|
| // 7 - If the (possibly now changed) new playback position is not in one of the ranges given in the
|
| // seekable attribute, then let it be the position in one of the ranges given in the seekable attribute
|
| @@ -3107,7 +3108,7 @@ void HTMLMediaElement::mediaPlayerPlaybackStateChanged()
|
| if (!m_player || m_pausedInternal)
|
| return;
|
|
|
| - if (m_player->paused())
|
| + if (webMediaPlayer()->paused())
|
| pause();
|
| else
|
| playInternal();
|
| @@ -3270,9 +3271,10 @@ void HTMLMediaElement::updatePlayState()
|
| if (!m_player)
|
| return;
|
|
|
| + bool isPlaying = webMediaPlayer() && !webMediaPlayer()->paused();
|
| if (m_pausedInternal) {
|
| - if (!m_player->paused())
|
| - m_player->pause();
|
| + if (isPlaying)
|
| + webMediaPlayer()->pause();
|
| refreshCachedTime();
|
| m_playbackProgressTimer.stop();
|
| if (hasMediaControls())
|
| @@ -3281,22 +3283,20 @@ void HTMLMediaElement::updatePlayState()
|
| }
|
|
|
| bool shouldBePlaying = potentiallyPlaying();
|
| - bool playerPaused = m_player->paused();
|
|
|
| - WTF_LOG(Media, "HTMLMediaElement::updatePlayState - shouldBePlaying = %s, playerPaused = %s",
|
| - boolString(shouldBePlaying), boolString(playerPaused));
|
| + WTF_LOG(Media, "HTMLMediaElement::updatePlayState - shouldBePlaying = %s, isPlaying = %s",
|
| + boolString(shouldBePlaying), boolString(isPlaying));
|
|
|
| if (shouldBePlaying) {
|
| setDisplayMode(Video);
|
| invalidateCachedTime();
|
|
|
| - if (playerPaused) {
|
| + if (!isPlaying) {
|
| // Set rate, muted before calling play in case they were set before the media engine was setup.
|
| // The media engine should just stash the rate and muted values since it isn't already playing.
|
| webMediaPlayer()->setRate(effectivePlaybackRate());
|
| updateVolume();
|
| -
|
| - m_player->play();
|
| + webMediaPlayer()->play();
|
| }
|
|
|
| if (hasMediaControls())
|
| @@ -3305,8 +3305,8 @@ void HTMLMediaElement::updatePlayState()
|
| m_playing = true;
|
|
|
| } else { // Should not be playing right now
|
| - if (!playerPaused)
|
| - m_player->pause();
|
| + if (isPlaying)
|
| + webMediaPlayer()->pause();
|
| refreshCachedTime();
|
|
|
| m_playbackProgressTimer.stop();
|
|
|