Bug 1308605 - Fail with OverconstrainedError on bad constraint. draft
authorJan-Ivar Bruaroey <jib@mozilla.com>
Wed, 12 Oct 2016 17:31:20 -0400
changeset 424493 ce52993f2399a8c97aa2324a4ff29072d6347f85
parent 422187 9c11fedf43675388a547f09cc4a64e78739f5220
child 533694 b9949c71d0b1a6d5ad7c03096c96baa4ab32df7f
push id32175
push userjbruaroey@mozilla.com
push dateWed, 12 Oct 2016 21:35:47 +0000
bugs1308605
milestone52.0a1
Bug 1308605 - Fail with OverconstrainedError on bad constraint. MozReview-Commit-ID: JJ1Y3G5b1wl
dom/media/MediaManager.cpp
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -1508,28 +1508,23 @@ public:
         }
         if (mAudioDevice) {
           mAudioDevice->Deallocate();
         }
       }
     }
     if (errorMsg) {
       LOG(("%s %d", errorMsg, rv));
-      switch (rv) {
-        case NS_ERROR_NOT_AVAILABLE: {
-          MOZ_ASSERT(badConstraint);
-          Fail(NS_LITERAL_STRING("OverconstrainedError"),
-               NS_LITERAL_STRING(""),
-               NS_ConvertUTF8toUTF16(badConstraint));
-          break;
-        }
-        default:
-          Fail(NS_LITERAL_STRING("NotReadableError"),
-               NS_ConvertUTF8toUTF16(errorMsg));
-          break;
+      if (badConstraint) {
+        Fail(NS_LITERAL_STRING("OverconstrainedError"),
+             NS_LITERAL_STRING(""),
+             NS_ConvertUTF8toUTF16(badConstraint));
+      } else {
+        Fail(NS_LITERAL_STRING("NotReadableError"),
+             NS_ConvertUTF8toUTF16(errorMsg));
       }
       return NS_OK;
     }
     PeerIdentity* peerIdentity = nullptr;
     if (!mConstraints.mPeerIdentity.IsEmpty()) {
       peerIdentity = new PeerIdentity(mConstraints.mPeerIdentity);
     }
 
@@ -3536,17 +3531,17 @@ GetUserMediaCallbackMediaStreamListener:
       }
       RefPtr<PledgeVoid> p = mgr->mOutstandingVoidPledges.Remove(id);
       if (p) {
         if (NS_SUCCEEDED(rv)) {
           p->Resolve(false);
         } else {
           auto* window = nsGlobalWindow::GetInnerWindowWithId(windowId);
           if (window) {
-            if (rv == NS_ERROR_NOT_AVAILABLE) {
+            if (badConstraint) {
               nsString constraint;
               constraint.AssignASCII(badConstraint);
               RefPtr<MediaStreamError> error =
                   new MediaStreamError(window->AsInner(),
                                        NS_LITERAL_STRING("OverconstrainedError"),
                                        NS_LITERAL_STRING(""),
                                        constraint);
               p->Reject(error);