Bug 1244768 part 2 - modify media element load algorith; r=jwwang
4.8.12.5 https://html.spec.whatwg.org/multipage/embedded-content.html#media-element-load-algorithim The living WHATWG spec has been changed since I implemented this patch. Will update to the latest spec later. MozReview-Commit-ID: 7U1AC2Ua83Z
This commit is contained in:
@@ -1581,6 +1581,14 @@ void HTMLMediaElement::AbortExistingLoads()
|
||||
// with a different load ID to silently be cancelled.
|
||||
mCurrentLoadID++;
|
||||
|
||||
// Immediately reject or resolve the already-dispatched
|
||||
// nsResolveOrRejectPendingPlayPromisesRunners. These runners won't be
|
||||
// executed again later since the mCurrentLoadID had been changed.
|
||||
for (auto& runner : mPendingPlayPromisesRunners) {
|
||||
runner->ResolveOrReject();
|
||||
}
|
||||
mPendingPlayPromisesRunners.Clear();
|
||||
|
||||
if (mChannelLoader) {
|
||||
mChannelLoader->Cancel();
|
||||
mChannelLoader = nullptr;
|
||||
@@ -1642,7 +1650,10 @@ void HTMLMediaElement::AbortExistingLoads()
|
||||
NS_ASSERTION(!mDecoder && !mSrcStream, "How did someone setup a new stream/decoder already?");
|
||||
// ChangeNetworkState() will call UpdateAudioChannelPlayingState()
|
||||
// indirectly which depends on mPaused. So we need to update mPaused first.
|
||||
mPaused = true;
|
||||
if (!mPaused) {
|
||||
mPaused = true;
|
||||
RejectPromises(TakePendingPlayPromises(), NS_ERROR_DOM_MEDIA_ABORT_ERR);
|
||||
}
|
||||
ChangeNetworkState(nsIDOMHTMLMediaElement::NETWORK_EMPTY);
|
||||
ChangeReadyState(nsIDOMHTMLMediaElement::HAVE_NOTHING);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user