Bug 1303970: P2. Fix "If the media data fetching process is aborted by the user steps". r?jwwang
MozReview-Commit-ID: 6n91VY00gAo
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -4472,17 +4472,25 @@ void HTMLMediaElement::Error(uint16_t aE
// MediaKeys::Terminated and EMEH264Decoder::Error. We should take the 1st
// one only in order not to fire multiple 'error' events.
if (mError) {
return;
}
mError = new MediaError(this, aErrorCode, aErrorDetails);
DispatchAsyncEvent(NS_LITERAL_STRING("error"));
- ChangeNetworkState(nsIDOMHTMLMediaElement::NETWORK_IDLE);
+ if (mReadyState == HAVE_NOTHING && aErrorCode == MEDIA_ERR_ABORTED) {
+ // https://html.spec.whatwg.org/multipage/embedded-content.html#media-data-processing-steps-list
+ // "If the media data fetching process is aborted by the user"
+ DispatchAsyncEvent(NS_LITERAL_STRING("abort"));
+ ChangeNetworkState(nsIDOMHTMLMediaElement::NETWORK_EMPTY);
+ DispatchAsyncEvent(NS_LITERAL_STRING("emptied"));
+ } else {
+ ChangeNetworkState(nsIDOMHTMLMediaElement::NETWORK_IDLE);
+ }
ChangeDelayLoadStatus(false);
UpdateAudioChannelPlayingState();
}
void HTMLMediaElement::PlaybackEnded()
{
// We changed state which can affect AddRemoveSelfReference
AddRemoveSelfReference();