| Index: Source/core/html/shadow/MediaControls.cpp
|
| diff --git a/Source/core/html/shadow/MediaControls.cpp b/Source/core/html/shadow/MediaControls.cpp
|
| index 59d1a761f8f057338027c3287128b302c6b96a4d..17efb600f9bd20ab826198f3ad3c1282c1341d4f 100644
|
| --- a/Source/core/html/shadow/MediaControls.cpp
|
| +++ b/Source/core/html/shadow/MediaControls.cpp
|
| @@ -65,6 +65,7 @@ MediaControls::MediaControls(HTMLMediaElement& mediaElement)
|
| , m_hideFullscreenControlsTimer(this, &MediaControls::hideFullscreenControlsTimerFired)
|
| , m_isFullscreen(false)
|
| , m_isMouseOverControls(false)
|
| + , m_isPausedForScrubbing(false)
|
| {
|
| }
|
|
|
| @@ -176,7 +177,7 @@ void MediaControls::reset()
|
| m_durationDisplay->setInnerText(RenderTheme::theme().formatMediaControlsTime(duration), ASSERT_NO_EXCEPTION);
|
| m_durationDisplay->setCurrentValue(duration);
|
|
|
| - m_playButton->updateDisplayType();
|
| + updatePlayState();
|
|
|
| updateCurrentTimeDisplay();
|
|
|
| @@ -233,9 +234,7 @@ void MediaControls::playbackStarted()
|
| m_currentTimeDisplay->show();
|
| m_durationDisplay->hide();
|
|
|
| - if (m_overlayPlayButton)
|
| - m_overlayPlayButton->updateDisplayType();
|
| - m_playButton->updateDisplayType();
|
| + updatePlayState();
|
| m_timeline->setPosition(mediaControllerInterface().currentTime());
|
| updateCurrentTimeDisplay();
|
|
|
| @@ -254,9 +253,7 @@ void MediaControls::playbackProgressed()
|
|
|
| void MediaControls::playbackStopped()
|
| {
|
| - if (m_overlayPlayButton)
|
| - m_overlayPlayButton->updateDisplayType();
|
| - m_playButton->updateDisplayType();
|
| + updatePlayState();
|
| m_timeline->setPosition(mediaControllerInterface().currentTime());
|
| updateCurrentTimeDisplay();
|
| makeOpaque();
|
| @@ -264,6 +261,33 @@ void MediaControls::playbackStopped()
|
| stopHideFullscreenControlsTimer();
|
| }
|
|
|
| +void MediaControls::updatePlayState()
|
| +{
|
| + if (m_isPausedForScrubbing)
|
| + return;
|
| +
|
| + if (m_overlayPlayButton)
|
| + m_overlayPlayButton->updateDisplayType();
|
| + m_playButton->updateDisplayType();
|
| +}
|
| +
|
| +void MediaControls::beginScrubbing()
|
| +{
|
| + if (!mediaControllerInterface().paused()) {
|
| + m_isPausedForScrubbing = true;
|
| + mediaControllerInterface().pause();
|
| + }
|
| +}
|
| +
|
| +void MediaControls::endScrubbing()
|
| +{
|
| + if (m_isPausedForScrubbing) {
|
| + m_isPausedForScrubbing = false;
|
| + if (mediaControllerInterface().paused())
|
| + mediaControllerInterface().play();
|
| + }
|
| +}
|
| +
|
| void MediaControls::updateCurrentTimeDisplay()
|
| {
|
| double now = mediaControllerInterface().currentTime();
|
|
|