From c8de52fd2d9aea40f5e7f81ba5884df76d53fd75 Mon Sep 17 00:00:00 2001 From: Munro Mengjue Chiang Date: Mon, 24 Apr 2017 15:11:51 +0800 Subject: [PATCH] Bug 1363261 - Remove a callId from mCallIds when the corresponding GetUserMediaTask is removed from mActiveCallbacks. r=jib MozReview-Commit-ID: DcSQ8O9MoCb --- dom/media/MediaManager.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp index b4129452c7fc..bdcdf5c8fdea 100644 --- a/dom/media/MediaManager.cpp +++ b/dom/media/MediaManager.cpp @@ -1620,6 +1620,12 @@ public: return NS_OK; } + uint64_t + GetWindowID() + { + return mWindowID; + } + private: MediaStreamConstraints mConstraints; @@ -3010,6 +3016,12 @@ MediaManager::Observe(nsISupports* aSubject, const char* aTopic, return NS_OK; } + nsTArray* array; + if (!mCallIds.Get(task->GetWindowID(), &array)) { + return NS_OK; + } + array->RemoveElement(key); + if (aSubject) { // A particular device or devices were chosen by the user. // NOTE: does not allow setting a device to null; assumes nullptr @@ -3074,6 +3086,11 @@ MediaManager::Observe(nsISupports* aSubject, const char* aTopic, mActiveCallbacks.Remove(key, getter_AddRefs(task)); if (task) { task->Denied(errorMessage); + nsTArray* array; + if (!mCallIds.Get(task->GetWindowID(), &array)) { + return NS_OK; + } + array->RemoveElement(key); } return NS_OK;