Bug 1213517 - Make applyConstraints() and getSettings() do nothing after stop and shutdown. draft
authorJan-Ivar Bruaroey <jib@mozilla.com>
Wed, 06 Jul 2016 16:55:58 -0400
changeset 388782 e184aff156d1ed338e0b0a9eedb336f732fb0bd0
parent 388781 c85859b71a965bfdca8cf0f1de6853a8ba3ce03d
child 388783 f58083bd964e5b88883f0cf175bff9f9ae68ece9
push id23232
push userjbruaroey@mozilla.com
push dateSun, 17 Jul 2016 21:00:46 +0000
bugs1213517
milestone50.0a1
Bug 1213517 - Make applyConstraints() and getSettings() do nothing after stop and shutdown. MozReview-Commit-ID: Ez2Wmsoy617
dom/media/MediaManager.cpp
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -1127,30 +1127,32 @@ public:
         {
           return mPeerIdentity;
         }
 
         already_AddRefed<PledgeVoid>
         ApplyConstraints(nsPIDOMWindowInner* aWindow,
                          const MediaTrackConstraints& aConstraints) override
         {
-          if (sInShutdown) {
+          if (sInShutdown || !mListener) {
+            // Track has been stopped, or we are in shutdown. In either case
+            // there's no observable outcome, so pretend we succeeded.
             RefPtr<PledgeVoid> p = new PledgeVoid();
-            p->Reject(new MediaStreamError(aWindow,
-                                           NS_LITERAL_STRING("AbortError"),
-                                           NS_LITERAL_STRING("In shutdown")));
+            p->Resolve(false);
             return p.forget();
           }
           return mListener->ApplyConstraintsToTrack(aWindow, mTrackID, aConstraints);
         }
 
         void
         GetSettings(dom::MediaTrackSettings& aOutSettings) override
         {
-          mListener->GetSettings(aOutSettings);
+          if (mListener) {
+            mListener->GetSettings(aOutSettings);
+          }
         }
 
         void Stop() override
         {
           if (mListener) {
             mListener->StopTrack(mTrackID);
             mListener = nullptr;
           }