Loading browser/actors/WebRTCChild.jsm +8 −25 Original line number Diff line number Diff line Loading @@ -270,32 +270,15 @@ function handleGUMRequest(aSubject, aTopic, aData) { let isHandlingUserInput = aSubject.isHandlingUserInput; let contentWindow = Services.wm.getOuterWindowWithId(aSubject.windowID); contentWindow.navigator.mozGetUserMediaDevices( function(devices) { // If the window has been closed while we were waiting for the list of // devices, there's nothing to do in the callback anymore. if (contentWindow.closed) { return; } prompt( contentWindow, aSubject.windowID, aSubject.callID, constraints, devices, aSubject.devices, secure, isHandlingUserInput ); }, function(error) { // Device enumeration is done ahead of handleGUMRequest, so we're not // responsible for handling the NotFoundError spec case. denyGUMRequest({ callID: aSubject.callID }); }, aSubject.innerWindowID, aSubject.callID ); } function prompt( Loading dom/base/Navigator.cpp +0 −16 Original line number Diff line number Diff line Loading @@ -1325,22 +1325,6 @@ void Navigator::MozGetUserMedia(const MediaStreamConstraints& aConstraints, }); } void Navigator::MozGetUserMediaDevices( MozGetUserMediaDevicesSuccessCallback& aOnSuccess, NavigatorUserMediaErrorCallback& aOnError, uint64_t aInnerWindowID, const nsAString& aCallID, ErrorResult& aRv) { if (!mWindow || !mWindow->GetOuterWindow() || mWindow->GetOuterWindow()->GetCurrentInnerWindow() != mWindow) { aRv.Throw(NS_ERROR_NOT_AVAILABLE); return; } RefPtr<MediaManager> manager = MediaManager::Get(); // XXXbz aOnError seems to be unused? nsCOMPtr<nsPIDOMWindowInner> window(mWindow); aRv = manager->GetUserMediaDevices(window, aOnSuccess, aInnerWindowID, aCallID); } //***************************************************************************** // Navigator::nsINavigatorBattery //***************************************************************************** Loading dom/base/Navigator.h +0 −6 Original line number Diff line number Diff line Loading @@ -67,7 +67,6 @@ class Gamepad; class GamepadServiceTest; class NavigatorUserMediaSuccessCallback; class NavigatorUserMediaErrorCallback; class MozGetUserMediaDevicesSuccessCallback; struct MIDIOptions; Loading Loading @@ -201,11 +200,6 @@ class Navigator final : public nsISupports, public nsWrapperCache { NavigatorUserMediaSuccessCallback& aOnSuccess, NavigatorUserMediaErrorCallback& aOnError, CallerType aCallerType, ErrorResult& aRv); MOZ_CAN_RUN_SCRIPT void MozGetUserMediaDevices(MozGetUserMediaDevicesSuccessCallback& aOnSuccess, NavigatorUserMediaErrorCallback& aOnError, uint64_t aInnerWindowID, const nsAString& aCallID, ErrorResult& aRv); already_AddRefed<ServiceWorkerContainer> ServiceWorker(); Loading dom/bindings/Bindings.conf +2 −0 Original line number Diff line number Diff line Loading @@ -1922,6 +1922,8 @@ addExternalIface('nsIEventTarget', nativeType='nsIEventTarget', notflattened=Tru addExternalIface('nsIFile', nativeType='nsIFile', notflattened=True) addExternalIface('nsILoadGroup', nativeType='nsILoadGroup', headerFile='nsILoadGroup.h', notflattened=True) addExternalIface('nsIMediaDevice', nativeType='nsIMediaDevice', notflattened=True) addExternalIface('nsIPrintSettings', nativeType='nsIPrintSettings', notflattened=True) addExternalIface('nsISelectionListener', nativeType='nsISelectionListener') Loading dom/media/GetUserMediaRequest.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -5,9 +5,11 @@ #include "GetUserMediaRequest.h" #include "base/basictypes.h" #include "MediaManager.h" #include "mozilla/dom/MediaDevicesBinding.h" #include "mozilla/dom/MediaStreamBinding.h" #include "mozilla/dom/GetUserMediaRequestBinding.h" #include "nsIMediaDevice.h" #include "nsIScriptGlobalObject.h" #include "nsPIDOMWindow.h" Loading @@ -15,11 +17,13 @@ namespace mozilla::dom { GetUserMediaRequest::GetUserMediaRequest( nsPIDOMWindowInner* aInnerWindow, const nsAString& aCallID, RefPtr<MediaDeviceSetRefCnt> aMediaDeviceSet, const MediaStreamConstraints& aConstraints, bool aIsSecure, bool aIsHandlingUserInput) : mInnerWindowID(aInnerWindow->WindowID()), mOuterWindowID(aInnerWindow->GetOuterWindow()->WindowID()), mCallID(aCallID), mMediaDeviceSet(std::move(aMediaDeviceSet)), mConstraints(new MediaStreamConstraints(aConstraints)), mType(GetUserMediaRequestType::Getusermedia), mIsSecure(aIsSecure), Loading @@ -27,11 +31,13 @@ GetUserMediaRequest::GetUserMediaRequest( GetUserMediaRequest::GetUserMediaRequest( nsPIDOMWindowInner* aInnerWindow, const nsAString& aCallID, RefPtr<MediaDeviceSetRefCnt> aMediaDeviceSet, const AudioOutputOptions& aAudioOutputOptions, bool aIsSecure, bool aIsHandlingUserInput) : mInnerWindowID(aInnerWindow->WindowID()), mOuterWindowID(aInnerWindow->GetOuterWindow()->WindowID()), mCallID(aCallID), mMediaDeviceSet(std::move(aMediaDeviceSet)), mAudioOutputOptions(new AudioOutputOptions(aAudioOutputOptions)), mType(GetUserMediaRequestType::Selectaudiooutput), mIsSecure(aIsSecure), Loading @@ -53,6 +59,8 @@ GetUserMediaRequest::GetUserMediaRequest(nsPIDOMWindowInner* aInnerWindow, } } GetUserMediaRequest::~GetUserMediaRequest() = default; NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(GetUserMediaRequest) NS_IMPL_CYCLE_COLLECTING_ADDREF(GetUserMediaRequest) NS_IMPL_CYCLE_COLLECTING_RELEASE(GetUserMediaRequest) Loading Loading @@ -88,6 +96,17 @@ bool GetUserMediaRequest::IsHandlingUserInput() const { return mIsHandlingUserInput; } void GetUserMediaRequest::GetDevices( nsTArray<RefPtr<nsIMediaDevice>>& retval) const { MOZ_ASSERT(retval.Length() == 0); if (!mMediaDeviceSet) { return; } for (const auto& device : *mMediaDeviceSet) { retval.AppendElement(device); } } void GetUserMediaRequest::GetConstraints(MediaStreamConstraints& result) { MOZ_ASSERT(result.mAudio.IsBoolean() && !result.mAudio.GetAsBoolean() && result.mVideo.IsBoolean() && !result.mVideo.GetAsBoolean(), Loading Loading
browser/actors/WebRTCChild.jsm +8 −25 Original line number Diff line number Diff line Loading @@ -270,32 +270,15 @@ function handleGUMRequest(aSubject, aTopic, aData) { let isHandlingUserInput = aSubject.isHandlingUserInput; let contentWindow = Services.wm.getOuterWindowWithId(aSubject.windowID); contentWindow.navigator.mozGetUserMediaDevices( function(devices) { // If the window has been closed while we were waiting for the list of // devices, there's nothing to do in the callback anymore. if (contentWindow.closed) { return; } prompt( contentWindow, aSubject.windowID, aSubject.callID, constraints, devices, aSubject.devices, secure, isHandlingUserInput ); }, function(error) { // Device enumeration is done ahead of handleGUMRequest, so we're not // responsible for handling the NotFoundError spec case. denyGUMRequest({ callID: aSubject.callID }); }, aSubject.innerWindowID, aSubject.callID ); } function prompt( Loading
dom/base/Navigator.cpp +0 −16 Original line number Diff line number Diff line Loading @@ -1325,22 +1325,6 @@ void Navigator::MozGetUserMedia(const MediaStreamConstraints& aConstraints, }); } void Navigator::MozGetUserMediaDevices( MozGetUserMediaDevicesSuccessCallback& aOnSuccess, NavigatorUserMediaErrorCallback& aOnError, uint64_t aInnerWindowID, const nsAString& aCallID, ErrorResult& aRv) { if (!mWindow || !mWindow->GetOuterWindow() || mWindow->GetOuterWindow()->GetCurrentInnerWindow() != mWindow) { aRv.Throw(NS_ERROR_NOT_AVAILABLE); return; } RefPtr<MediaManager> manager = MediaManager::Get(); // XXXbz aOnError seems to be unused? nsCOMPtr<nsPIDOMWindowInner> window(mWindow); aRv = manager->GetUserMediaDevices(window, aOnSuccess, aInnerWindowID, aCallID); } //***************************************************************************** // Navigator::nsINavigatorBattery //***************************************************************************** Loading
dom/base/Navigator.h +0 −6 Original line number Diff line number Diff line Loading @@ -67,7 +67,6 @@ class Gamepad; class GamepadServiceTest; class NavigatorUserMediaSuccessCallback; class NavigatorUserMediaErrorCallback; class MozGetUserMediaDevicesSuccessCallback; struct MIDIOptions; Loading Loading @@ -201,11 +200,6 @@ class Navigator final : public nsISupports, public nsWrapperCache { NavigatorUserMediaSuccessCallback& aOnSuccess, NavigatorUserMediaErrorCallback& aOnError, CallerType aCallerType, ErrorResult& aRv); MOZ_CAN_RUN_SCRIPT void MozGetUserMediaDevices(MozGetUserMediaDevicesSuccessCallback& aOnSuccess, NavigatorUserMediaErrorCallback& aOnError, uint64_t aInnerWindowID, const nsAString& aCallID, ErrorResult& aRv); already_AddRefed<ServiceWorkerContainer> ServiceWorker(); Loading
dom/bindings/Bindings.conf +2 −0 Original line number Diff line number Diff line Loading @@ -1922,6 +1922,8 @@ addExternalIface('nsIEventTarget', nativeType='nsIEventTarget', notflattened=Tru addExternalIface('nsIFile', nativeType='nsIFile', notflattened=True) addExternalIface('nsILoadGroup', nativeType='nsILoadGroup', headerFile='nsILoadGroup.h', notflattened=True) addExternalIface('nsIMediaDevice', nativeType='nsIMediaDevice', notflattened=True) addExternalIface('nsIPrintSettings', nativeType='nsIPrintSettings', notflattened=True) addExternalIface('nsISelectionListener', nativeType='nsISelectionListener') Loading
dom/media/GetUserMediaRequest.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -5,9 +5,11 @@ #include "GetUserMediaRequest.h" #include "base/basictypes.h" #include "MediaManager.h" #include "mozilla/dom/MediaDevicesBinding.h" #include "mozilla/dom/MediaStreamBinding.h" #include "mozilla/dom/GetUserMediaRequestBinding.h" #include "nsIMediaDevice.h" #include "nsIScriptGlobalObject.h" #include "nsPIDOMWindow.h" Loading @@ -15,11 +17,13 @@ namespace mozilla::dom { GetUserMediaRequest::GetUserMediaRequest( nsPIDOMWindowInner* aInnerWindow, const nsAString& aCallID, RefPtr<MediaDeviceSetRefCnt> aMediaDeviceSet, const MediaStreamConstraints& aConstraints, bool aIsSecure, bool aIsHandlingUserInput) : mInnerWindowID(aInnerWindow->WindowID()), mOuterWindowID(aInnerWindow->GetOuterWindow()->WindowID()), mCallID(aCallID), mMediaDeviceSet(std::move(aMediaDeviceSet)), mConstraints(new MediaStreamConstraints(aConstraints)), mType(GetUserMediaRequestType::Getusermedia), mIsSecure(aIsSecure), Loading @@ -27,11 +31,13 @@ GetUserMediaRequest::GetUserMediaRequest( GetUserMediaRequest::GetUserMediaRequest( nsPIDOMWindowInner* aInnerWindow, const nsAString& aCallID, RefPtr<MediaDeviceSetRefCnt> aMediaDeviceSet, const AudioOutputOptions& aAudioOutputOptions, bool aIsSecure, bool aIsHandlingUserInput) : mInnerWindowID(aInnerWindow->WindowID()), mOuterWindowID(aInnerWindow->GetOuterWindow()->WindowID()), mCallID(aCallID), mMediaDeviceSet(std::move(aMediaDeviceSet)), mAudioOutputOptions(new AudioOutputOptions(aAudioOutputOptions)), mType(GetUserMediaRequestType::Selectaudiooutput), mIsSecure(aIsSecure), Loading @@ -53,6 +59,8 @@ GetUserMediaRequest::GetUserMediaRequest(nsPIDOMWindowInner* aInnerWindow, } } GetUserMediaRequest::~GetUserMediaRequest() = default; NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(GetUserMediaRequest) NS_IMPL_CYCLE_COLLECTING_ADDREF(GetUserMediaRequest) NS_IMPL_CYCLE_COLLECTING_RELEASE(GetUserMediaRequest) Loading Loading @@ -88,6 +96,17 @@ bool GetUserMediaRequest::IsHandlingUserInput() const { return mIsHandlingUserInput; } void GetUserMediaRequest::GetDevices( nsTArray<RefPtr<nsIMediaDevice>>& retval) const { MOZ_ASSERT(retval.Length() == 0); if (!mMediaDeviceSet) { return; } for (const auto& device : *mMediaDeviceSet) { retval.AppendElement(device); } } void GetUserMediaRequest::GetConstraints(MediaStreamConstraints& result) { MOZ_ASSERT(result.mAudio.IsBoolean() && !result.mAudio.GetAsBoolean() && result.mVideo.IsBoolean() && !result.mVideo.GetAsBoolean(), Loading