Bug 1283056 - Print the invalid state transition before crashing on the assert in AudioContext::OnStateChange. r?karlt
MozReview-Commit-ID: 6m6wmlzDtWk
--- a/dom/media/webaudio/AudioContext.cpp
+++ b/dom/media/webaudio/AudioContext.cpp
@@ -837,26 +837,30 @@ AudioContext::OnStateChanged(void* aProm
if (mAudioContextState == AudioContextState::Closed &&
aNewState == AudioContextState::Running &&
!aPromise) {
return;
}
#ifndef WIN32 // Bug 1170547
- MOZ_ASSERT((mAudioContextState == AudioContextState::Suspended &&
- aNewState == AudioContextState::Running) ||
- (mAudioContextState == AudioContextState::Running &&
- aNewState == AudioContextState::Suspended) ||
- (mAudioContextState == AudioContextState::Running &&
- aNewState == AudioContextState::Closed) ||
- (mAudioContextState == AudioContextState::Suspended &&
- aNewState == AudioContextState::Closed) ||
- (mAudioContextState == aNewState),
- "Invalid AudioContextState transition");
+ if (!((mAudioContextState == AudioContextState::Suspended &&
+ aNewState == AudioContextState::Running) ||
+ (mAudioContextState == AudioContextState::Running &&
+ aNewState == AudioContextState::Suspended) ||
+ (mAudioContextState == AudioContextState::Running &&
+ aNewState == AudioContextState::Closed) ||
+ (mAudioContextState == AudioContextState::Suspended &&
+ aNewState == AudioContextState::Closed) ||
+ (mAudioContextState == aNewState))) {
+ fprintf(stderr,
+ "Invalid transition: mAudioContextState: %d -> aNewState %d\n",
+ mAudioContextState, aNewState);
+ MOZ_ASSERT(false);
+ }
#endif // WIN32
MOZ_ASSERT(
mIsOffline || aPromise || aNewState == AudioContextState::Running,
"We should have a promise here if this is a real-time AudioContext."
"Or this is the first time we switch to \"running\".");