Bug 1283056 - Print the invalid state transition before crashing on the assert in AudioContext::OnStateChange. r?karlt draft
authorPaul Adenot <paul@paul.cx>
Fri, 01 Jul 2016 09:38:43 +0200
changeset 383098 5e2e920801185cf75a7f29af9e476e42a817bc4a
parent 382220 753aafa4b6765059569022802c2f7e11ace781be
child 524389 ad394c6d0c9cfd783136fa2ebf8313cc2c01d034
push id21930
push userbmo:padenot@mozilla.com
push dateFri, 01 Jul 2016 07:39:00 +0000
reviewerskarlt
bugs1283056
milestone50.0a1
Bug 1283056 - Print the invalid state transition before crashing on the assert in AudioContext::OnStateChange. r?karlt MozReview-Commit-ID: 6m6wmlzDtWk
dom/media/webaudio/AudioContext.cpp
--- 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\".");