Bug 1269741 - Allow resuming a suspended AudioContext in the same event loop run. r?karlt draft
authorPaul Adenot <paul@paul.cx>
Mon, 27 Jun 2016 11:11:15 +0200
changeset 381462 fdced9b290f98ac03004c4ce6574ed1d2cfebbd6
parent 381461 c82fdb008ae34a1bbd31d2b6131a9b93f74b003f
child 523964 1503c2b743b56e83dfe780d690ac029d349855cb
push id21478
push userpaul@paul.cx
push dateMon, 27 Jun 2016 09:11:30 +0000
reviewerskarlt
bugs1269741
milestone50.0a1
Bug 1269741 - Allow resuming a suspended AudioContext in the same event loop run. r?karlt MozReview-Commit-ID: L7WlO96d2vh
dom/media/webaudio/AudioContext.cpp
--- a/dom/media/webaudio/AudioContext.cpp
+++ b/dom/media/webaudio/AudioContext.cpp
@@ -904,21 +904,16 @@ AudioContext::Suspend(ErrorResult& aRv)
   }
 
   if (mAudioContextState == AudioContextState::Closed ||
       mCloseCalled) {
     promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
     return promise.forget();
   }
 
-  if (mAudioContextState == AudioContextState::Suspended) {
-    promise->MaybeResolve(JS::UndefinedHandleValue);
-    return promise.forget();
-  }
-
   Destination()->Suspend();
 
   mPromiseGripArray.AppendElement(promise);
 
   nsTArray<MediaStream*> streams;
   // If mSuspendCalled is true then we already suspended all our streams,
   // so don't suspend them again (since suspend(); suspend(); resume(); should
   // cancel both suspends). But we still need to do ApplyAudioContextOperation
@@ -951,21 +946,16 @@ AudioContext::Resume(ErrorResult& aRv)
   }
 
   if (mAudioContextState == AudioContextState::Closed ||
       mCloseCalled) {
     promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
     return promise.forget();
   }
 
-  if (mAudioContextState == AudioContextState::Running) {
-    promise->MaybeResolve(JS::UndefinedHandleValue);
-    return promise.forget();
-  }
-
   Destination()->Resume();
 
   nsTArray<MediaStream*> streams;
   // If mSuspendCalled is false then we already resumed all our streams,
   // so don't resume them again (since suspend(); resume(); resume(); should
   // be OK). But we still need to do ApplyAudioContextOperation
   // to ensure our new promise is resolved.
   if (mSuspendCalled) {