Bug 1308603 - add some assertions to debug crash. draft
authorJW Wang <jwwang@mozilla.com>
Tue, 11 Oct 2016 11:11:42 +0800
changeset 424544 e45aac4a89973bb60ad6e0bf7b51da360fd3f0e1
parent 424520 22be4ae74653b25186665f22e52a50e7027fd36b
child 424553 db74bde6884f233caeab8d0c19fbca9756f984b1
push id32187
push userjwwang@mozilla.com
push dateThu, 13 Oct 2016 00:36:28 +0000
bugs1308603
milestone52.0a1
Bug 1308603 - add some assertions to debug crash. MozReview-Commit-ID: DpWRbgwIzla
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -216,21 +216,17 @@ public:
 
   virtual bool HandleVideoDecoded(MediaData* aVideo, TimeStamp aDecodeStart)
   {
     return false;
   }
 
   virtual bool HandleEndOfStream() { return false; }
 
-  virtual RefPtr<MediaDecoder::SeekPromise> HandleSeek(SeekTarget aTarget)
-  {
-    MOZ_ASSERT(false, "Can't seek in this state");
-    return nullptr;
-  }
+  virtual RefPtr<MediaDecoder::SeekPromise> HandleSeek(SeekTarget aTarget) = 0;
 
 protected:
   using Master = MediaDecoderStateMachine;
   explicit StateObject(Master* aPtr) : mMaster(aPtr) {}
   TaskQueue* OwnerThread() const { return mMaster->mTaskQueue; }
   MediaResource* Resource() const { return mMaster->mResource; }
   MediaDecoderReaderWrapper* Reader() const { return mMaster->mReader; }
   const MediaInfo& Info() const { return mMaster->Info(); }
@@ -281,16 +277,22 @@ public:
   }
 
   bool HandleDormant(bool aDormant) override
   {
     mPendingDormant = aDormant;
     return true;
   }
 
+  RefPtr<MediaDecoder::SeekPromise> HandleSeek(SeekTarget aTarget) override
+  {
+    MOZ_DIAGNOSTIC_ASSERT(false, "Can't seek while decoding metadata.");
+    return MediaDecoder::SeekPromise::CreateAndReject(true, __func__);
+  }
+
 private:
   void OnMetadataRead(MetadataHolder* aMetadata)
   {
     mMetadataRequest.Complete();
 
     // Set mode to PLAYBACK after reading metadata.
     Resource()->SetReadMode(MediaCacheStream::MODE_PLAYBACK);
 
@@ -1133,16 +1135,22 @@ public:
   {
     return DECODER_STATE_SHUTDOWN;
   }
 
   bool HandleDormant(bool aDormant) override
   {
     return true;
   }
+
+  RefPtr<MediaDecoder::SeekPromise> HandleSeek(SeekTarget aTarget) override
+  {
+    MOZ_DIAGNOSTIC_ASSERT(false, "Can't seek in shutdown state.");
+    return MediaDecoder::SeekPromise::CreateAndReject(true, __func__);
+  }
 };
 
 #define INIT_WATCHABLE(name, val) \
   name(val, "MediaDecoderStateMachine::" #name)
 #define INIT_MIRROR(name, val) \
   name(mTaskQueue, val, "MediaDecoderStateMachine::" #name " (Mirror)")
 #define INIT_CANONICAL(name, val) \
   name(mTaskQueue, val, "MediaDecoderStateMachine::" #name " (Canonical)")