Bug 1244768 part 5 - reject pending play promises while the playback reaching the end; r?jwwang draft
authorKaku Kuo <tkuo@mozilla.com>
Fri, 19 Aug 2016 11:52:04 +0800
changeset 448114 bb0dddc706f0dfb7f946446181cd581ef4d1aabe
parent 448113 24638d36969733e0c6dc75a86db229c845320bb1
child 448115 004cea48c6ada0f156d9cea7871c49a53e866372
push id38268
push userbmo:kaku@mozilla.com
push dateFri, 09 Dec 2016 07:03:42 +0000
reviewersjwwang
bugs1244768
milestone53.0a1
Bug 1244768 part 5 - reject pending play promises while the playback reaching the end; r?jwwang 4.8.12.8 https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-ended MozReview-Commit-ID: H7Tw0XGzpW0
dom/html/HTMLMediaElement.cpp
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -5141,25 +5141,29 @@ void HTMLMediaElement::PlaybackEnded()
     DispatchAsyncEvent(NS_LITERAL_STRING("durationchange"));
   }
 
   if (HasAttr(kNameSpaceID_None, nsGkAtoms::loop)) {
     SetCurrentTime(0);
     return;
   }
 
-  Pause();
+  FireTimeUpdate(false);
+
+  if (!mPaused) {
+    Pause();
+    AsyncRejectPendingPlayPromises(NS_ERROR_DOM_MEDIA_ABORT_ERR);
+  }
 
   if (mSrcStream) {
     // A MediaStream that goes from inactive to active shall be eligible for
     // autoplay again according to the mediacapture-main spec.
     mAutoplaying = true;
   }
 
-  FireTimeUpdate(false);
   DispatchAsyncEvent(NS_LITERAL_STRING("ended"));
 }
 
 void HTMLMediaElement::SeekStarted()
 {
   DispatchAsyncEvent(NS_LITERAL_STRING("seeking"));
 }