Index: Source/core/html/HTMLMediaElement.cpp |
diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp |
index 873298fe8ed0e570630e8a8456f86c8aa3b83193..0a38e3928a3df31ae88e9730f48396c1b913ae0a 100644 |
--- a/Source/core/html/HTMLMediaElement.cpp |
+++ b/Source/core/html/HTMLMediaElement.cpp |
@@ -336,7 +336,6 @@ HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, Document& docum |
, m_defaultPlaybackRate(1.0f) |
, m_networkState(NETWORK_EMPTY) |
, m_readyState(HAVE_NOTHING) |
- , m_readyStateMaximum(HAVE_NOTHING) |
, m_volume(1.0f) |
, m_lastSeekTime(0) |
, m_previousProgressTime(std::numeric_limits<double>::max()) |
@@ -796,7 +795,6 @@ void HTMLMediaElement::prepareForLoad() |
// 4.4 - If readyState is not set to HAVE_NOTHING, then set it to that state. |
m_readyState = HAVE_NOTHING; |
- m_readyStateMaximum = HAVE_NOTHING; |
// 4.5 - If the paused attribute is false, then set it to true. |
m_paused = true; |
@@ -1802,9 +1800,6 @@ void HTMLMediaElement::setReadyState(ReadyState state) |
m_readyState = HAVE_CURRENT_DATA; |
} |
- if (oldState > m_readyStateMaximum) |
- m_readyStateMaximum = oldState; |
- |
if (m_networkState == NETWORK_EMPTY) |
return; |
@@ -3382,11 +3377,27 @@ PassRefPtrWillBeRawPtr<TimeRanges> HTMLMediaElement::seekable() const |
bool HTMLMediaElement::potentiallyPlaying() const |
{ |
- // "pausedToBuffer" means the media engine's rate is 0, but only because it had to stop playing |
- // when it ran out of buffered data. A movie is this state is "potentially playing", modulo the |
- // checks in couldPlayIfEnoughData(). |
- bool pausedToBuffer = m_readyStateMaximum >= HAVE_FUTURE_DATA && m_readyState < HAVE_FUTURE_DATA; |
- return (pausedToBuffer || m_readyState >= HAVE_FUTURE_DATA) && couldPlayIfEnoughData() && !isBlockedOnMediaController(); |
+ // A media element is said to be potentially playing when its paused attribute is false, the |
+ // element has not ended playback, playback has not stopped due to errors, the element either |
+ // has no current media controller or has a current media controller but is not blocked on its |
+ // media controller, and the element is not a blocked media element. |
+ |
+ if (paused()) |
+ return false; |
+ |
+ if (endedPlayback()) |
+ return false; |
+ |
+ if (stoppedDueToErrors()) |
+ return false; |
+ |
+ if (isBlockedOnMediaController()) |
+ return false; |
+ |
+ if (isBlocked()) |
+ return false; |
+ |
+ return true; |
} |
bool HTMLMediaElement::couldPlayIfEnoughData() const |