Bug 1322799 part 3 - move AccurateSeekTask::OnSeek{Resoved,Rejected}(); r?jwwang draft
authorKaku Kuo <kaku@mozilla.com>
Thu, 08 Dec 2016 21:02:45 -1000
changeset 449365 5776c735204bed3ac4dfdd6f79f491b21576ff1d
parent 449364 f7b19adf25c056550fa3b918bd864aaab69d5d4a
child 449366 ce97116e32900b363a6f32a58caf07ea93d125a6
push id38552
push userbmo:kaku@mozilla.com
push dateWed, 14 Dec 2016 02:51:42 +0000
reviewersjwwang
bugs1322799
milestone53.0a1
Bug 1322799 part 3 - move AccurateSeekTask::OnSeek{Resoved,Rejected}(); r?jwwang MozReview-Commit-ID: K8Bj21nxG0y
dom/media/AccurateSeekTask.cpp
dom/media/AccurateSeekTask.h
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/AccurateSeekTask.cpp
+++ b/dom/media/AccurateSeekTask.cpp
@@ -398,40 +398,16 @@ AccurateSeekTask::MaybeFinishSeek()
 {
   AssertOwnerThread();
   if (mDoneAudioSeeking && mDoneVideoSeeking) {
     Resolve(__func__); // Call to MDSM::SeekCompleted();
   }
 }
 
 void
-AccurateSeekTask::OnSeekResolved(media::TimeUnit)
-{
-  AssertOwnerThread();
-
-  // We must decode the first samples of active streams, so we can determine
-  // the new stream time. So dispatch tasks to do that.
-  if (!mDoneVideoSeeking) {
-    RequestVideoData();
-  }
-  if (!mDoneAudioSeeking) {
-    RequestAudioData();
-  }
-}
-
-void
-AccurateSeekTask::OnSeekRejected(nsresult aResult)
-{
-  AssertOwnerThread();
-
-  MOZ_ASSERT(NS_FAILED(aResult), "Cancels should also disconnect mSeekRequest");
-  RejectIfExist(aResult, __func__);
-}
-
-void
 AccurateSeekTask::AdjustFastSeekIfNeeded(MediaData* aSample)
 {
   AssertOwnerThread();
   if (mTarget.IsFast() &&
       mTarget.GetTime() > mCurrentTimeBeforeSeek &&
       aSample->mTime < mCurrentTimeBeforeSeek.ToMicroseconds()) {
     // We are doing a fastSeek, but we ended up *before* the previous
     // playback position. This is surprising UX, so switch to an accurate
--- a/dom/media/AccurateSeekTask.h
+++ b/dom/media/AccurateSeekTask.h
@@ -48,20 +48,16 @@ public:
   void RequestAudioData();
 
   nsresult DropAudioUpToSeekTarget(MediaData* aSample);
 
   nsresult DropVideoUpToSeekTarget(MediaData* aSample);
 
   void MaybeFinishSeek();
 
-  void OnSeekResolved(media::TimeUnit);
-
-  void OnSeekRejected(nsresult aResult);
-
   void AdjustFastSeekIfNeeded(MediaData* aSample);
 
   /*
    * Internal state.
    */
   const media::TimeUnit mCurrentTimeBeforeSeek;
   const uint32_t mAudioRate;  // Audio sample rate.
   bool mDoneAudioSeeking;
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -909,22 +909,20 @@ private:
   }
 
   void DoSeek() override
   {
     // Request the demuxer to perform seek.
     mSeekRequest.Begin(Reader()->Seek(mTask->mTarget, mMaster->Duration())
       ->Then(OwnerThread(), __func__,
              [this] (media::TimeUnit aUnit) {
-               mSeekRequest.Complete();
-               mTask->OnSeekResolved(aUnit);
+               OnSeekResolved(aUnit);
              },
              [this] (nsresult aResult) {
-               mSeekRequest.Complete();
-               mTask->OnSeekRejected(aResult);
+               OnSeekRejected(aResult);
              }));
 
     // Let SeekTask handle the following operations once the demuxer seeking is done.
     mSeekTaskRequest.Begin(mSeekTask->Seek(mMaster->Duration())
       ->Then(OwnerThread(), __func__,
              [this] (const SeekTaskResolveValue& aValue) {
                OnSeekTaskResolved(aValue);
              },
@@ -933,16 +931,36 @@ private:
              }));
   }
 
   int64_t CalculateNewCurrentTime() const override
   {
     return mSeekTask->CalculateNewCurrentTime();
   }
 
+  void OnSeekResolved(media::TimeUnit) {
+    mSeekRequest.Complete();
+
+    // We must decode the first samples of active streams, so we can determine
+    // the new stream time. So dispatch tasks to do that.
+    if (!mTask->mDoneVideoSeeking) {
+      mTask->RequestVideoData();
+    }
+    if (!mTask->mDoneAudioSeeking) {
+      mTask->RequestAudioData();
+    }
+  }
+
+  void OnSeekRejected(nsresult aResult) {
+    mSeekRequest.Complete();
+
+    MOZ_ASSERT(NS_FAILED(aResult), "Cancels should also disconnect mSeekRequest");
+    mTask->RejectIfExist(aResult, __func__);
+  }
+
   void OnSeekTaskResolved(const SeekTaskResolveValue& aValue)
   {
     mSeekTaskRequest.Complete();
 
     if (aValue.mSeekedAudioData) {
       mMaster->Push(aValue.mSeekedAudioData);
       mMaster->mDecodedAudioEndTime = std::max(
         aValue.mSeekedAudioData->GetEndTime(), mMaster->mDecodedAudioEndTime);