☠☠ backed out by 29257d9eabdf ☠ ☠ | |
author | Eric Rahm <erahm@mozilla.com> |
Thu, 13 Oct 2016 22:02:58 -0700 | |
changeset 317936 | 5af415bbb1072acb039b7a76779ac91d98762890 |
parent 317935 | 9c7364b4579d0780b0423612143c02e188a5f715 |
child 317937 | ea82808b9abd16a3170b21b9785d0fbef04a863b |
push id | 33170 |
push user | cbook@mozilla.com |
push date | Fri, 14 Oct 2016 10:37:07 +0000 |
treeherder | autoland@0d101ebfd95c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jesup |
bugs | 1308615 |
milestone | 52.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/modules/ContentWebRTC.jsm +++ b/browser/modules/ContentWebRTC.jsm @@ -68,20 +68,20 @@ this.ContentWebRTC = { break; } case "webrtc:Allow": { let callID = aMessage.data.callID; let contentWindow = Services.wm.getOuterWindowWithId(aMessage.data.windowID); let devices = contentWindow.pendingGetUserMediaRequests.get(callID); forgetGUMRequest(contentWindow, callID); - let allowedDevices = Cc["@mozilla.org/supports-array;1"] - .createInstance(Ci.nsISupportsArray); + let allowedDevices = Cc["@mozilla.org/array;1"] + .createInstance(Ci.nsIMutableArray); for (let deviceIndex of aMessage.data.devices) - allowedDevices.AppendElement(devices[deviceIndex]); + allowedDevices.appendElement(devices[deviceIndex], /*weak =*/ false); Services.obs.notifyObservers(allowedDevices, "getUserMedia:response:allow", callID); break; } case "webrtc:Deny": denyGUMRequest(aMessage.data); break; case "webrtc:StopSharing":
--- a/dom/media/MediaManager.cpp +++ b/dom/media/MediaManager.cpp @@ -16,17 +16,16 @@ #ifdef MOZ_WIDGET_GONK #include "nsIAudioManager.h" #endif #include "nsIEventTarget.h" #include "nsIUUIDGenerator.h" #include "nsIScriptGlobalObject.h" #include "nsIPermissionManager.h" #include "nsIPopupWindowManager.h" -#include "nsISupportsArray.h" #include "nsIDocShell.h" #include "nsIDocument.h" #include "nsISupportsPrimitives.h" #include "nsIInterfaceRequestorUtils.h" #include "nsIIDNService.h" #include "nsNetCID.h" #include "nsNetUtil.h" #include "nsPrincipal.h" @@ -2402,24 +2401,20 @@ if (privileged) { } if (!(*devices)->Length()) { RefPtr<MediaStreamError> error = new MediaStreamError(window, NS_LITERAL_STRING("NotFoundError")); onFailure->OnError(error); return; } - nsCOMPtr<nsISupportsArray> devicesCopy; // before we give up devices below + nsCOMPtr<nsIMutableArray> devicesCopy = nsArray::Create(); // before we give up devices below if (!askPermission) { - nsresult rv = NS_NewISupportsArray(getter_AddRefs(devicesCopy)); - if (NS_WARN_IF(NS_FAILED(rv))) { - return; - } for (auto& device : **devices) { - rv = devicesCopy->AppendElement(device); + nsresult rv = devicesCopy->AppendElement(device, /*weak =*/ false); if (NS_WARN_IF(NS_FAILED(rv))) { return; } } } // Pass callbacks and MediaStreamListener along to GetUserMediaTask. RefPtr<GetUserMediaTask> task (new GetUserMediaTask(c, onSuccess.forget(), @@ -3027,25 +3022,25 @@ MediaManager::Observe(nsISupports* aSubj mActiveCallbacks.Remove(key, getter_AddRefs(task)); if (!task) { return NS_OK; } if (aSubject) { // A particular device or devices were chosen by the user. // NOTE: does not allow setting a device to null; assumes nullptr - nsCOMPtr<nsISupportsArray> array(do_QueryInterface(aSubject)); + nsCOMPtr<nsIArray> array(do_QueryInterface(aSubject)); MOZ_ASSERT(array); uint32_t len = 0; - array->Count(&len); + array->GetLength(&len); bool videoFound = false, audioFound = false; for (uint32_t i = 0; i < len; i++) { - nsCOMPtr<nsISupports> supports; - array->GetElementAt(i,getter_AddRefs(supports)); - nsCOMPtr<nsIMediaDevice> device(do_QueryInterface(supports)); + nsCOMPtr<nsIMediaDevice> device; + array->QueryElementAt(i, NS_GET_IID(nsIMediaDevice), + getter_AddRefs(device)); MOZ_ASSERT(device); // shouldn't be returning anything else... if (device) { nsString type; device->GetType(type); if (type.EqualsLiteral("video")) { if (!videoFound) { task->SetVideoDevice(static_cast<VideoDevice*>(device.get())); videoFound = true;
--- a/dom/media/MediaPermissionGonk.cpp +++ b/dom/media/MediaPermissionGonk.cpp @@ -1,21 +1,21 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "MediaManager.h" #include "MediaPermissionGonk.h" +#include "nsArray.h" #include "nsCOMPtr.h" #include "nsIContentPermissionPrompt.h" #include "nsIDocument.h" #include "nsIDOMNavigatorUserMedia.h" #include "nsIStringEnumerator.h" -#include "nsISupportsArray.h" #include "nsJSUtils.h" #include "nsQueryObject.h" #include "nsPIDOMWindow.h" #include "nsTArray.h" #include "GetUserMediaRequest.h" #include "mozilla/dom/PBrowserChild.h" #include "mozilla/dom/MediaStreamTrackBinding.h" #include "mozilla/dom/MediaStreamError.h" @@ -62,22 +62,20 @@ FindDeviceByName(nsTArray<nsCOMPtr<nsIMe return nullptr; } // Helper function for notifying permission granted static nsresult NotifyPermissionAllow(const nsAString &aCallID, nsTArray<nsCOMPtr<nsIMediaDevice> > &aDevices) { nsresult rv; - nsCOMPtr<nsISupportsArray> array; - rv = NS_NewISupportsArray(getter_AddRefs(array)); - NS_ENSURE_SUCCESS(rv, rv); + nsCOMPtr<nsIMutableArray> array = nsArray::Create(); for (uint32_t i = 0; i < aDevices.Length(); ++i) { - rv = array->AppendElement(aDevices.ElementAt(i)); + rv = array->AppendElement(aDevices.ElementAt(i), /*weak =*/ false); NS_ENSURE_SUCCESS(rv, rv); } nsCOMPtr<nsIObserverService> obs = services::GetObserverService(); NS_ENSURE_TRUE(obs, NS_ERROR_FAILURE); return obs->NotifyObservers(array, "getUserMedia:response:allow", aCallID.BeginReading());
--- a/mobile/android/chrome/content/WebrtcUI.js +++ b/mobile/android/chrome/content/WebrtcUI.js @@ -145,29 +145,29 @@ var WebrtcUI = { label: Strings.browser.GetStringFromName("getUserMedia.denyRequest.label"), callback: function() { Services.obs.notifyObservers(null, "getUserMedia:response:deny", aCallID); } }, { label: Strings.browser.GetStringFromName("getUserMedia.shareRequest.label"), callback: function(checked /* ignored */, inputs) { - let allowedDevices = Cc["@mozilla.org/supports-array;1"].createInstance(Ci.nsISupportsArray); + let allowedDevices = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray); let audioId = 0; if (inputs && inputs.audioDevice != undefined) audioId = inputs.audioDevice; if (audioDevices[audioId]) - allowedDevices.AppendElement(audioDevices[audioId]); + allowedDevices.appendElement(audioDevices[audioId], /*weak =*/ false); let videoId = 0; if (inputs && inputs.videoSource != undefined) videoId = inputs.videoSource; if (videoDevices[videoId]) { - allowedDevices.AppendElement(videoDevices[videoId]); + allowedDevices.appendElement(videoDevices[videoId], /*weak =*/ false); let perms = Services.perms; // Although the lifetime is "session" it will be removed upon // use so it's more of a one-shot. perms.add(aUri, "MediaManagerVideo", perms.ALLOW_ACTION, perms.EXPIRE_SESSION); } Services.obs.notifyObservers(allowedDevices, "getUserMedia:response:allow", aCallID); },