Bug 1298594: P3. Ensure currentTime is updated prior changing readyState. r?jwwang draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Sun, 28 Aug 2016 21:20:52 +1000
changeset 406669 714b98cbe16f29ad61ef5782138bb41d06885e81
parent 406668 8a8aa3c1e7223cf063c9c0bdb96782e134aabc0f
child 406670 3dee30390dbcfdd05620e9053e1e23bbdf1bec60
push id27789
push userbmo:jyavenard@mozilla.com
push dateMon, 29 Aug 2016 08:51:10 +0000
reviewersjwwang
bugs1298594
milestone51.0a1
Bug 1298594: P3. Ensure currentTime is updated prior changing readyState. r?jwwang Otherwise we get intermittent in mochitests checking the value of currenTime when events are fired MozReview-Commit-ID: AVktWrXochp
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -2537,16 +2537,22 @@ void MediaDecoderStateMachine::UpdateNex
     statusString = "NEXT_FRAME_AVAILABLE";
   } else {
     status = MediaDecoderOwner::NEXT_FRAME_UNAVAILABLE;
     statusString = "NEXT_FRAME_UNAVAILABLE";
   }
 
   if (status != mNextFrameStatus) {
     DECODER_LOG("Changed mNextFrameStatus to %s", statusString);
+    if(status == MediaDecoderOwner::NEXT_FRAME_UNAVAILABLE_BUFFERING ||
+       status == MediaDecoderOwner::NEXT_FRAME_UNAVAILABLE) {
+      // Ensure currentTime is up to date prior updating mNextFrameStatus so that
+      // the MediaDecoderOwner fire events at correct currentTime.
+      UpdatePlaybackPositionPeriodically();
+    }
   }
 
   mNextFrameStatus = status;
 }
 
 bool MediaDecoderStateMachine::JustExitedQuickBuffering()
 {
   MOZ_ASSERT(OnTaskQueue());