Bug 1329110. Part 4 - remove StateObject::HandleAudioNotDecoded(). draft
authorJW Wang <jwwang@mozilla.com>
Mon, 09 Jan 2017 12:45:43 +0800
changeset 458394 d1466f6ddb0b8b8069a96d9e9f3be9ac388c2a9b
parent 458393 583335191dc21448946205533a71d09dcb2011b3
child 458395 c53970e1f83b83e90ad1efb4c081c83def5c3368
push id40941
push userjwwang@mozilla.com
push dateTue, 10 Jan 2017 07:42:53 +0000
bugs1329110
milestone53.0a1
Bug 1329110. Part 4 - remove StateObject::HandleAudioNotDecoded(). MozReview-Commit-ID: 53iQ46klPMr
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -189,17 +189,16 @@ public:
   virtual void Exit() {};  // Exit action.
   virtual void Step() {}   // Perform a 'cycle' of this state object.
   virtual State GetState() const = 0;
 
   // Event handlers for various events.
   virtual void HandleCDMProxyReady() {}
   virtual void HandleAudioDecoded(MediaData* aAudio) {}
   virtual void HandleVideoDecoded(MediaData* aVideo, TimeStamp aDecodeStart) {}
-  virtual void HandleAudioNotDecoded(const MediaResult& aError);
   virtual void HandleVideoNotDecoded(const MediaResult& aError);
   virtual void HandleAudioWaited(MediaData::Type aType);
   virtual void HandleVideoWaited(MediaData::Type aType);
   virtual void HandleNotWaited(const WaitForDataRejectValue& aRejection);
   virtual void HandleEndOfStream() {}
   virtual void HandleWaitingForData() {}
   virtual void HandleAudioCaptured() {}
 
@@ -526,17 +525,16 @@ public:
   }
 
   void HandleEndOfAudio() override
   {
     AudioQueue().Finish();
     MaybeFinishDecodeFirstFrame();
   }
 
-  void HandleAudioNotDecoded(const MediaResult& aError) override;
   void HandleVideoNotDecoded(const MediaResult& aError) override;
 
   void HandleAudioWaited(MediaData::Type aType) override
   {
     mMaster->RequestAudioData();
   }
 
   void HandleVideoWaited(MediaData::Type aType) override
@@ -847,17 +845,16 @@ public:
 
   State GetState() const override
   {
     return DECODER_STATE_SEEKING;
   }
 
   void HandleAudioDecoded(MediaData* aAudio) override = 0;
   void HandleVideoDecoded(MediaData* aVideo, TimeStamp aDecodeStart) override = 0;
-  void HandleAudioNotDecoded(const MediaResult& aError) override = 0;
   void HandleVideoNotDecoded(const MediaResult& aError) override = 0;
   void HandleAudioWaited(MediaData::Type aType) override = 0;
   void HandleVideoWaited(MediaData::Type aType) override = 0;
   void HandleNotWaited(const WaitForDataRejectValue& aRejection) override = 0;
 
   void HandleVideoSuspendTimeout() override
   {
     // Do nothing since we want a valid video frame to show when seek is done.
@@ -988,17 +985,16 @@ public:
     if (!mSeekJob.mTarget->IsVideoOnly()) {
       MOZ_ASSERT(!mDoneAudioSeeking);
       AudioQueue().Finish();
       mDoneAudioSeeking = true;
       MaybeFinishSeek();
     }
   }
 
-  void HandleAudioNotDecoded(const MediaResult& aError) override;
   void HandleVideoNotDecoded(const MediaResult& aError) override;
 
   void HandleAudioWaited(MediaData::Type aType) override
   {
     MOZ_ASSERT(!mDoneAudioSeeking || !mDoneVideoSeeking, "Seek shouldn't be finished");
 
     // Ignore pending requests from video-only seek.
     if (mSeekJob.mTarget->IsVideoOnly()) {
@@ -1426,17 +1422,16 @@ private:
   void HandleEndOfAudio() override
   {
     MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished");
     MOZ_ASSERT(NeedMoreVideo());
     // We don't care about audio decode errors in this state which will be
     // handled by other states after seeking.
   }
 
-  void HandleAudioNotDecoded(const MediaResult& aError) override;
   void HandleVideoNotDecoded(const MediaResult& aError) override;
 
   void HandleAudioWaited(MediaData::Type aType) override
   {
     // We don't care about audio in this state.
   }
 
   void HandleVideoWaited(MediaData::Type aType) override
@@ -1720,17 +1715,16 @@ public:
     MOZ_DIAGNOSTIC_ASSERT(false, "Shouldn't escape the SHUTDOWN state.");
   }
 
   State GetState() const override
   {
     return DECODER_STATE_SHUTDOWN;
   }
 
-  void HandleAudioNotDecoded(const MediaResult& aError) override {}
   void HandleVideoNotDecoded(const MediaResult& aError) override {}
 
   RefPtr<MediaDecoder::SeekPromise> HandleSeek(SeekTarget aTarget) override
   {
     MOZ_DIAGNOSTIC_ASSERT(false, "Can't seek in shutdown state.");
     return MediaDecoder::SeekPromise::CreateAndReject(true, __func__);
   }
 
@@ -1769,35 +1763,16 @@ void
 MediaDecoderStateMachine::
 StateObject::HandleNotWaited(const WaitForDataRejectValue& aRejection)
 {
 
 }
 
 void
 MediaDecoderStateMachine::
-StateObject::HandleAudioNotDecoded(const MediaResult& aError)
-{
-  switch (aError.Code()) {
-    case NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA:
-      MOZ_ASSERT(false);
-      break;
-    case NS_ERROR_DOM_MEDIA_CANCELED:
-      MOZ_ASSERT(false);
-      break;
-    case NS_ERROR_DOM_MEDIA_END_OF_STREAM:
-      MOZ_ASSERT(false);
-      break;
-    default:
-      mMaster->DecodeError(aError);
-  }
-}
-
-void
-MediaDecoderStateMachine::
 StateObject::HandleVideoNotDecoded(const MediaResult& aError)
 {
   switch (aError.Code()) {
     case NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA:
       mMaster->WaitForData(MediaData::VIDEO_DATA);
       HandleWaitingForData();
       break;
     case NS_ERROR_DOM_MEDIA_CANCELED:
@@ -2005,35 +1980,16 @@ DecodingFirstFrameState::Enter()
   }
   if (mMaster->HasVideo()) {
     mMaster->RequestVideoData(false, media::TimeUnit());
   }
 }
 
 void
 MediaDecoderStateMachine::
-DecodingFirstFrameState::HandleAudioNotDecoded(const MediaResult& aError)
-{
-  switch (aError.Code()) {
-    case NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA:
-      MOZ_ASSERT(false);
-      break;
-    case NS_ERROR_DOM_MEDIA_CANCELED:
-      MOZ_ASSERT(false);
-      break;
-    case NS_ERROR_DOM_MEDIA_END_OF_STREAM:
-      MOZ_ASSERT(false);
-      break;
-    default:
-      mMaster->DecodeError(aError);
-  }
-}
-
-void
-MediaDecoderStateMachine::
 DecodingFirstFrameState::HandleVideoNotDecoded(const MediaResult& aError)
 {
   switch (aError.Code()) {
     case NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA:
       mMaster->WaitForData(MediaData::VIDEO_DATA);
       break;
     case NS_ERROR_DOM_MEDIA_CANCELED:
       mMaster->RequestVideoData(false, media::TimeUnit());
@@ -2223,39 +2179,16 @@ SeekingState::SeekCompleted()
     mMaster->mOnPlaybackEvent.Notify(MediaEventType::Invalidate);
   }
 
   SetState<DecodingState>();
 }
 
 void
 MediaDecoderStateMachine::
-AccurateSeekingState::HandleAudioNotDecoded(const MediaResult& aError)
-{
-  if (mSeekJob.mTarget->IsVideoOnly()) {
-    return;
-  }
-  MOZ_ASSERT(!mDoneAudioSeeking);
-  switch (aError.Code()) {
-    case NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA:
-      MOZ_ASSERT(false);
-      break;
-    case NS_ERROR_DOM_MEDIA_CANCELED:
-      MOZ_ASSERT(false);
-      break;
-    case NS_ERROR_DOM_MEDIA_END_OF_STREAM:
-      MOZ_ASSERT(false);
-      break;
-    default:
-      mMaster->DecodeError(aError);
-  }
-}
-
-void
-MediaDecoderStateMachine::
 AccurateSeekingState::HandleVideoNotDecoded(const MediaResult& aError)
 {
   MOZ_ASSERT(!mDoneVideoSeeking);
   switch (aError.Code()) {
     case NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA:
       mMaster->WaitForData(MediaData::VIDEO_DATA);
       break;
     case NS_ERROR_DOM_MEDIA_CANCELED:
@@ -2273,26 +2206,16 @@ AccurateSeekingState::HandleVideoNotDeco
       break;
     default:
       mMaster->DecodeError(aError);
   }
 }
 
 void
 MediaDecoderStateMachine::
-NextFrameSeekingState::HandleAudioNotDecoded(const MediaResult& aError)
-{
-  MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished");
-  MOZ_ASSERT(NeedMoreVideo());
-  // We don't care about audio decode errors in this state which will be
-  // handled by other states after seeking.
-}
-
-void
-MediaDecoderStateMachine::
 NextFrameSeekingState::HandleVideoNotDecoded(const MediaResult& aError)
 {
   MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished");
   MOZ_ASSERT(NeedMoreVideo());
   // Video seek not finished.
   switch (aError.Code()) {
     case NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA:
       mMaster->WaitForData(MediaData::VIDEO_DATA);
@@ -3095,17 +3018,17 @@ MediaDecoderStateMachine::RequestAudioDa
             break;
           case NS_ERROR_DOM_MEDIA_CANCELED:
             mStateObj->HandleAudioCanceled();
             break;
           case NS_ERROR_DOM_MEDIA_END_OF_STREAM:
             mStateObj->HandleEndOfAudio();
             break;
           default:
-            mStateObj->HandleAudioNotDecoded(aError);
+            DecodeError(aError);
         }
       })
   );
 }
 
 void
 MediaDecoderStateMachine::EnsureVideoDecodeTaskQueued()
 {