Bug 1284683 - add unanonymized nsIMediaDevice.rawId for browser-chrome use.
MozReview-Commit-ID: A4RDfdZAF21
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -856,22 +856,35 @@ AudioDevice::GetType(nsAString& aType)
NS_IMETHODIMP
MediaDevice::GetId(nsAString& aID)
{
aID.Assign(mID);
return NS_OK;
}
+NS_IMETHODIMP
+MediaDevice::GetRawId(nsAString& aID)
+{
+ aID.Assign(mRawID);
+ return NS_OK;
+}
+
void
MediaDevice::SetId(const nsAString& aID)
{
mID.Assign(aID);
}
+void
+MediaDevice::SetRawId(const nsAString& aID)
+{
+ mRawID.Assign(aID);
+}
+
NS_IMETHODIMP
MediaDevice::GetMediaSource(nsAString& aMediaSource)
{
if (mMediaSource == MediaSourceEnum::Microphone) {
aMediaSource.Assign(NS_LITERAL_STRING("microphone"));
} else if (mMediaSource == MediaSourceEnum::AudioCapture) {
aMediaSource.Assign(NS_LITERAL_STRING("audioCapture"));
} else if (mMediaSource == MediaSourceEnum::Window) { // this will go away
@@ -2437,16 +2450,17 @@ MediaManager::GetUserMedia(nsPIDOMWindow
/* static */ void
MediaManager::AnonymizeDevices(SourceSet& aDevices, const nsACString& aOriginKey)
{
if (!aOriginKey.IsEmpty()) {
for (auto& device : aDevices) {
nsString id;
device->GetId(id);
+ device->SetRawId(id);
AnonymizeId(id, aOriginKey);
device->SetId(id);
}
}
}
/* static */ nsresult
MediaManager::AnonymizeId(nsAString& aId, const nsACString& aOriginKey)
--- a/dom/media/MediaManager.h
+++ b/dom/media/MediaManager.h
@@ -64,16 +64,17 @@ class MediaDevice : public nsIMediaDevic
{
public:
typedef MediaEngineSource Source;
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSIMEDIADEVICE
void SetId(const nsAString& aID);
+ void SetRawId(const nsAString& aID);
virtual uint32_t GetBestFitnessDistance(
const nsTArray<const NormalizedConstraintSet*>& aConstraintSets);
virtual Source* GetSource() = 0;
nsresult Allocate(const dom::MediaTrackConstraints &aConstraints,
const MediaEnginePrefs &aPrefs,
const nsACString& aOrigin,
const char** aOutBadConstraint);
nsresult Restart(const dom::MediaTrackConstraints &aConstraints,
@@ -89,16 +90,17 @@ protected:
private:
static bool StringsContain(const dom::OwningStringOrStringSequence& aStrings,
nsString aN);
static uint32_t FitnessDistance(nsString aN,
const dom::ConstrainDOMStringParameters& aParams);
protected:
nsString mName;
nsString mID;
+ nsString mRawID;
dom::MediaSourceEnum mMediaSource;
RefPtr<MediaEngineSource> mSource;
RefPtr<MediaEngineSource::AllocationHandle> mAllocationHandle;
public:
dom::MediaSourceEnum GetMediaSource() {
return mMediaSource;
}
bool mIsVideo;
--- a/dom/media/nsIDOMNavigatorUserMedia.idl
+++ b/dom/media/nsIDOMNavigatorUserMedia.idl
@@ -1,22 +1,23 @@
/* 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 "nsISupports.idl"
#include "nsIVariant.idl"
-[scriptable, builtinclass, uuid(cebcefca-2de1-460d-b253-d0582c50b40f)]
+[scriptable, builtinclass, uuid(ba3b2e08-1c07-4cd3-8822-f4d7e35ff2ae)]
interface nsIMediaDevice : nsISupports
{
readonly attribute DOMString type;
readonly attribute DOMString name;
readonly attribute DOMString id;
readonly attribute DOMString mediaSource;
+ readonly attribute DOMString rawId;
};
[scriptable, function, uuid(24544878-d35e-4962-8c5f-fb84e97bdfee)]
interface nsIGetUserMediaDevicesSuccessCallback : nsISupports
{
void onSuccess(in nsIVariant devices);
};