| 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();
 | 
| 
 |