Index: Source/core/html/HTMLMediaElement.cpp |
diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp |
index 47ff94fc3839dea3267e41b5cf18f1695e933b32..0f3abbd8167dec80ce4e6a65453b92fe1296623d 100644 |
--- a/Source/core/html/HTMLMediaElement.cpp |
+++ b/Source/core/html/HTMLMediaElement.cpp |
@@ -1903,7 +1903,7 @@ void HTMLMediaElement::seek(double time, ExceptionState& exceptionState) |
// 4.8.10.9 Seeking |
// 1 - If the media element's readyState is HAVE_NOTHING, then raise an InvalidStateError exception. |
- if (m_readyState == HAVE_NOTHING || !m_player) { |
+ if (m_readyState == HAVE_NOTHING) { |
exceptionState.throwDOMException(InvalidStateError, "The element's readyState is HAVE_NOTHING."); |
return; |
} |
@@ -1981,7 +1981,7 @@ void HTMLMediaElement::seek(double time, ExceptionState& exceptionState) |
scheduleEvent(EventTypeNames::seeking); |
// 9 - Set the current playback position to the given new playback position |
- m_player->seek(time); |
+ webMediaPlayer()->seek(time); |
// 10-14 are handled, if necessary, when the engine signals a readystate change or otherwise |
// satisfies seek completion and signals a time change. |
@@ -2021,7 +2021,10 @@ bool HTMLMediaElement::seeking() const |
void HTMLMediaElement::refreshCachedTime() const |
{ |
- m_cachedTime = m_player->currentTime(); |
+ if (!webMediaPlayer()) |
+ return; |
+ |
+ m_cachedTime = webMediaPlayer()->currentTime(); |
m_cachedTimeWallClockUpdateTime = WTF::currentTime(); |
} |
@@ -2045,7 +2048,7 @@ double HTMLMediaElement::currentTime() const |
static const double minCachedDeltaForWarning = 0.01; |
#endif |
- if (!m_player) |
+ if (m_readyState == HAVE_NOTHING) |
return 0; |
if (m_seeking) { |
@@ -2055,7 +2058,7 @@ double HTMLMediaElement::currentTime() const |
if (m_cachedTime != MediaPlayer::invalidTime() && m_paused) { |
#if LOG_CACHED_TIME_WARNINGS |
- double delta = m_cachedTime - m_player->currentTime(); |
+ double delta = m_cachedTime - webMediaPlayer()->currentTime(); |
if (delta > minCachedDeltaForWarning) |
WTF_LOG(Media, "HTMLMediaElement::currentTime - WARNING, cached time is %f seconds off of media time when paused", delta); |
#endif |
@@ -2078,7 +2081,7 @@ void HTMLMediaElement::setCurrentTime(double time, ExceptionState& exceptionStat |
double HTMLMediaElement::duration() const |
{ |
- if (!m_player || m_readyState < HAVE_METADATA) |
+ if (m_readyState < HAVE_METADATA) |
return std::numeric_limits<double>::quiet_NaN(); |
// FIXME: Refactor so m_duration is kept current (in both MSE and |
@@ -2094,7 +2097,7 @@ double HTMLMediaElement::duration() const |
if (m_mediaSource) |
return m_mediaSource->duration(); |
- return m_player->duration(); |
+ return webMediaPlayer()->duration(); |
} |
bool HTMLMediaElement::paused() const |
@@ -3028,7 +3031,7 @@ void HTMLMediaElement::mediaPlayerTimeChanged() |
invalidateCachedTime(); |
// 4.8.10.9 steps 12-14. Needed if no ReadyState change is associated with the seek. |
- if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !m_player->seeking()) |
+ if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !webMediaPlayer()->seeking()) |
finishSeek(); |
// Always call scheduleTimeupdateEvent when the media engine reports a time discontinuity, |