Bug 1312886: P7. Handle case where nextFrameStatus jumps straight to NEXT_FRAME_UNAVAILABLE_BUFFERING. r?jwwang draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Thu, 27 Oct 2016 21:12:20 +1100
changeset 430764 06ac75efa0575eb399fc759bf4eeb3685ae1b999
parent 430763 1812034bcbca5c85ca54b6329d37da2f9790f813
child 430765 f8211d427eea394738fe8d831084a332a99bbeb6
push id33879
push userbmo:jyavenard@mozilla.com
push dateFri, 28 Oct 2016 03:36:01 +0000
reviewersjwwang
bugs1312886
milestone52.0a1
Bug 1312886: P7. Handle case where nextFrameStatus jumps straight to NEXT_FRAME_UNAVAILABLE_BUFFERING. r?jwwang Under some circumstances, we will go from NEXT_FRAME_AVAILABLE to NEXT_FRAME_UNAVAILABLE_BUFFERING directly. We handle this condition now MozReview-Commit-ID: JVAQhsgzSp2
dom/html/HTMLMediaElement.cpp
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -4702,17 +4702,19 @@ HTMLMediaElement::UpdateReadyStateIntern
     }
     if (hasVideoTracks) {
       mediaInfo.EnableVideo();
     }
     MetadataLoaded(&mediaInfo, nsAutoPtr<const MetadataTags>(nullptr));
   }
 
   enum NextFrameStatus nextFrameStatus = NextFrameStatus();
-  if (nextFrameStatus == NEXT_FRAME_UNAVAILABLE) {
+  if (nextFrameStatus == NEXT_FRAME_UNAVAILABLE ||
+      (nextFrameStatus == NEXT_FRAME_UNAVAILABLE_BUFFERING &&
+       mWaitingForKey == WAITING_FOR_KEY)) {
     if (mWaitingForKey != NOT_WAITING_FOR_KEY) {
       // http://w3c.github.io/encrypted-media/#wait-for-key
       // Continuing 7.3.4 Queue a "waitingforkey" Event
       // 4. Queue a task to fire a simple event named waitingforkey
       // at the media element.
       if (mWaitingForKey == WAITING_FOR_KEY) {
         mWaitingForKey = WAITING_FOR_KEY_DISPATCHED;
         DispatchAsyncEvent(NS_LITERAL_STRING("waitingforkey"));