Bug 1304134. Part 1 - per spec. (https://dev.w3.org/html5/spec-preview/media-elements.html#ready-states) 'playing' should be fired before activating autoplay.
Also replace the check for IsPotentiallyPlaying() with !mPaused because mReadyState >= HAVE_FUTURE_DATA guarantees playback is not ended.
MozReview-Commit-ID: HetaVDgYEW0
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -4876,27 +4876,24 @@ void HTMLMediaElement::ChangeReadyState(
!mLoadedDataFired) {
DispatchAsyncEvent(NS_LITERAL_STRING("loadeddata"));
mLoadedDataFired = true;
}
if (oldState < nsIDOMHTMLMediaElement::HAVE_FUTURE_DATA &&
mReadyState >= nsIDOMHTMLMediaElement::HAVE_FUTURE_DATA) {
DispatchAsyncEvent(NS_LITERAL_STRING("canplay"));
+ if (!mPaused) {
+ mWaitingForKey = false;
+ DispatchAsyncEvent(NS_LITERAL_STRING("playing"));
+ }
}
CheckAutoplayDataReady();
- if (oldState < nsIDOMHTMLMediaElement::HAVE_FUTURE_DATA &&
- mReadyState >= nsIDOMHTMLMediaElement::HAVE_FUTURE_DATA &&
- IsPotentiallyPlaying()) {
- mWaitingForKey = false;
- DispatchAsyncEvent(NS_LITERAL_STRING("playing"));
- }
-
if (oldState < nsIDOMHTMLMediaElement::HAVE_ENOUGH_DATA &&
mReadyState >= nsIDOMHTMLMediaElement::HAVE_ENOUGH_DATA) {
DispatchAsyncEvent(NS_LITERAL_STRING("canplaythrough"));
}
}
static const char* const gNetworkStateToString[] = {
"EMPTY",