Bug 654787 - part3: Use OnAudioDataRequest{Completed, Failed} in ReaderProxy; r=jwwang draft
authorChun-Min Chang <chun.m.chang@gmail.com>
Fri, 10 Nov 2017 11:19:04 +0800
changeset 700495 7626916ad223574ea757a9c87d6e31950e07ef8f
parent 700494 585b059edf909fbb63c5476a55e6521b310cdc47
child 700496 c861fef908932f307ecef1af528e4cf5ff80da8f
child 702944 844fe51cb6add26233c19cd2bb8f0954b177f154
push id89865
push userbmo:cchang@mozilla.com
push dateMon, 20 Nov 2017 09:20:49 +0000
reviewersjwwang
bugs654787
milestone59.0a1
Bug 654787 - part3: Use OnAudioDataRequest{Completed, Failed} in ReaderProxy; r=jwwang MozReview-Commit-ID: A4vUGJ64QrB
dom/media/ReaderProxy.cpp
dom/media/ReaderProxy.h
--- a/dom/media/ReaderProxy.cpp
+++ b/dom/media/ReaderProxy.cpp
@@ -28,17 +28,16 @@ ReaderProxy::ReaderProxy(AbstractThread*
 
 ReaderProxy::~ReaderProxy()
 {}
 
 media::TimeUnit
 ReaderProxy::StartTime() const
 {
   MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
-  MOZ_ASSERT(!mShutdown);
   return mStartTime.ref();
 }
 
 RefPtr<ReaderProxy::MetadataPromise>
 ReaderProxy::ReadMetadata()
 {
   MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
   MOZ_ASSERT(!mShutdown);
@@ -49,35 +48,48 @@ ReaderProxy::ReadMetadata()
     ->Then(mOwnerThread,
            __func__,
            this,
            &ReaderProxy::OnMetadataRead,
            &ReaderProxy::OnMetadataNotRead);
 }
 
 RefPtr<ReaderProxy::AudioDataPromise>
+ReaderProxy::OnAudioDataRequestCompleted(RefPtr<AudioData> aAudio)
+{
+  MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
+
+  int64_t startTime = StartTime().ToMicroseconds();
+  aAudio->AdjustForStartTime(startTime);
+  return AudioDataPromise::CreateAndResolve(aAudio.forget(), __func__);
+}
+
+RefPtr<ReaderProxy::AudioDataPromise>
+ReaderProxy::OnAudioDataRequestFailed(const MediaResult& aError)
+{
+  MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
+
+  return AudioDataPromise::CreateAndReject(aError, __func__);
+}
+
+RefPtr<ReaderProxy::AudioDataPromise>
 ReaderProxy::RequestAudioData()
 {
   MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
   MOZ_ASSERT(!mShutdown);
 
-  int64_t startTime = StartTime().ToMicroseconds();
   return InvokeAsync(mReader->OwnerThread(),
                      mReader.get(),
                      __func__,
                      &MediaFormatReader::RequestAudioData)
     ->Then(mOwnerThread,
            __func__,
-           [startTime](RefPtr<AudioData> aAudio) {
-             aAudio->AdjustForStartTime(startTime);
-             return AudioDataPromise::CreateAndResolve(aAudio.forget(), __func__);
-           },
-           [](const MediaResult& aError) {
-             return AudioDataPromise::CreateAndReject(aError, __func__);
-           });
+           this,
+           &ReaderProxy::OnAudioDataRequestCompleted,
+           &ReaderProxy::OnAudioDataRequestFailed);
 }
 
 RefPtr<ReaderProxy::VideoDataPromise>
 ReaderProxy::RequestVideoData(const media::TimeUnit& aTimeThreshold)
 {
   MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
   MOZ_ASSERT(!mShutdown);
 
--- a/dom/media/ReaderProxy.h
+++ b/dom/media/ReaderProxy.h
@@ -87,16 +87,21 @@ public:
   void SetSeamlessLoopingEnabled(bool aEnabled);
 
 private:
   ~ReaderProxy();
   RefPtr<MetadataPromise> OnMetadataRead(MetadataHolder&& aMetadata);
   RefPtr<MetadataPromise> OnMetadataNotRead(const MediaResult& aError);
   void UpdateDuration();
 
+  RefPtr<ReaderProxy::AudioDataPromise> OnAudioDataRequestCompleted(
+    RefPtr<AudioData> aAudio);
+  RefPtr<ReaderProxy::AudioDataPromise> OnAudioDataRequestFailed(
+    const MediaResult& aError);
+
   const RefPtr<AbstractThread> mOwnerThread;
   const RefPtr<MediaFormatReader> mReader;
 
   bool mShutdown = false;
   Maybe<media::TimeUnit> mStartTime;
 
   // State-watching manager.
   WatchManager<ReaderProxy> mWatchManager;