Bug 1269741 - Allow resuming a suspended AudioContext in the same event loop run. r?karlt
MozReview-Commit-ID: 4pS9ZaLGWrn
--- a/dom/media/webaudio/AudioContext.cpp
+++ b/dom/media/webaudio/AudioContext.cpp
@@ -861,17 +861,18 @@ AudioContext::Suspend(ErrorResult& aRv)
}
if (mAudioContextState == AudioContextState::Closed ||
mCloseCalled) {
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
return promise.forget();
}
- if (mAudioContextState == AudioContextState::Suspended) {
+ if (mAudioContextState == AudioContextState::Suspended &&
+ mSuspendCalled) {
promise->MaybeResolve(JS::UndefinedHandleValue);
return promise.forget();
}
Destination()->Suspend();
mPromiseGripArray.AppendElement(promise);
@@ -908,17 +909,18 @@ AudioContext::Resume(ErrorResult& aRv)
}
if (mAudioContextState == AudioContextState::Closed ||
mCloseCalled) {
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
return promise.forget();
}
- if (mAudioContextState == AudioContextState::Running) {
+ if (mAudioContextState == AudioContextState::Running &&
+ !mSuspendCalled) {
promise->MaybeResolve(JS::UndefinedHandleValue);
return promise.forget();
}
Destination()->Resume();
nsTArray<MediaStream*> streams;
// If mSuspendCalled is false then we already resumed all our streams,