Bug 1269741 - Allow resuming a suspended AudioContext in the same event loop run. r?karlt
MozReview-Commit-ID: L7WlO96d2vh
--- 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) {