зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1698238 add a GetUserMediaRequest variant for selectAudioOutput() r=jib,emilio
Differential Revision: https://phabricator.services.mozilla.com/D108374
This commit is contained in:
Родитель
4d3822d024
Коммит
e68c0357fc
|
@ -5,6 +5,7 @@
|
||||||
#include "GetUserMediaRequest.h"
|
#include "GetUserMediaRequest.h"
|
||||||
|
|
||||||
#include "base/basictypes.h"
|
#include "base/basictypes.h"
|
||||||
|
#include "mozilla/dom/MediaDevicesBinding.h"
|
||||||
#include "mozilla/dom/MediaStreamBinding.h"
|
#include "mozilla/dom/MediaStreamBinding.h"
|
||||||
#include "mozilla/dom/GetUserMediaRequestBinding.h"
|
#include "mozilla/dom/GetUserMediaRequestBinding.h"
|
||||||
#include "nsIScriptGlobalObject.h"
|
#include "nsIScriptGlobalObject.h"
|
||||||
|
@ -20,6 +21,19 @@ GetUserMediaRequest::GetUserMediaRequest(
|
||||||
mOuterWindowID(aInnerWindow->GetOuterWindow()->WindowID()),
|
mOuterWindowID(aInnerWindow->GetOuterWindow()->WindowID()),
|
||||||
mCallID(aCallID),
|
mCallID(aCallID),
|
||||||
mConstraints(new MediaStreamConstraints(aConstraints)),
|
mConstraints(new MediaStreamConstraints(aConstraints)),
|
||||||
|
mType(GetUserMediaRequestType::Getusermedia),
|
||||||
|
mIsSecure(aIsSecure),
|
||||||
|
mIsHandlingUserInput(aIsHandlingUserInput) {}
|
||||||
|
|
||||||
|
GetUserMediaRequest::GetUserMediaRequest(
|
||||||
|
nsPIDOMWindowInner* aInnerWindow, const nsAString& aCallID,
|
||||||
|
const AudioOutputOptions& aAudioOutputOptions, bool aIsSecure,
|
||||||
|
bool aIsHandlingUserInput)
|
||||||
|
: mInnerWindowID(aInnerWindow->WindowID()),
|
||||||
|
mOuterWindowID(aInnerWindow->GetOuterWindow()->WindowID()),
|
||||||
|
mCallID(aCallID),
|
||||||
|
mAudioOutputOptions(new AudioOutputOptions(aAudioOutputOptions)),
|
||||||
|
mType(GetUserMediaRequestType::Selectaudiooutput),
|
||||||
mIsSecure(aIsSecure),
|
mIsSecure(aIsSecure),
|
||||||
mIsHandlingUserInput(aIsHandlingUserInput) {}
|
mIsHandlingUserInput(aIsHandlingUserInput) {}
|
||||||
|
|
||||||
|
@ -31,6 +45,7 @@ GetUserMediaRequest::GetUserMediaRequest(nsPIDOMWindowInner* aInnerWindow,
|
||||||
mOuterWindowID(0),
|
mOuterWindowID(0),
|
||||||
mRawID(aRawId),
|
mRawID(aRawId),
|
||||||
mMediaSource(aMediaSource),
|
mMediaSource(aMediaSource),
|
||||||
|
mType(GetUserMediaRequestType::Recording_device_stopped),
|
||||||
mIsSecure(false),
|
mIsSecure(false),
|
||||||
mIsHandlingUserInput(aIsHandlingUserInput) {
|
mIsHandlingUserInput(aIsHandlingUserInput) {
|
||||||
if (aInnerWindow && aInnerWindow->GetOuterWindow()) {
|
if (aInnerWindow && aInnerWindow->GetOuterWindow()) {
|
||||||
|
@ -53,6 +68,8 @@ JSObject* GetUserMediaRequest::WrapObject(JSContext* aCx,
|
||||||
|
|
||||||
nsISupports* GetUserMediaRequest::GetParentObject() { return nullptr; }
|
nsISupports* GetUserMediaRequest::GetParentObject() { return nullptr; }
|
||||||
|
|
||||||
|
GetUserMediaRequestType GetUserMediaRequest::Type() { return mType; }
|
||||||
|
|
||||||
void GetUserMediaRequest::GetCallID(nsString& retval) { retval = mCallID; }
|
void GetUserMediaRequest::GetCallID(nsString& retval) { retval = mCallID; }
|
||||||
|
|
||||||
void GetUserMediaRequest::GetRawID(nsString& retval) { retval = mRawID; }
|
void GetUserMediaRequest::GetRawID(nsString& retval) { retval = mRawID; }
|
||||||
|
@ -80,4 +97,12 @@ void GetUserMediaRequest::GetConstraints(MediaStreamConstraints& result) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GetUserMediaRequest::GetAudioOutputOptions(AudioOutputOptions& result) {
|
||||||
|
MOZ_ASSERT(result.mDeviceId.IsEmpty(),
|
||||||
|
"result should be default initialized");
|
||||||
|
if (mAudioOutputOptions) {
|
||||||
|
result = *mAudioOutputOptions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace mozilla::dom
|
} // namespace mozilla::dom
|
||||||
|
|
|
@ -19,15 +19,22 @@ class nsPIDOMWindowInner;
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
namespace dom {
|
namespace dom {
|
||||||
|
|
||||||
|
struct AudioOutputOptions;
|
||||||
struct MediaStreamConstraints;
|
struct MediaStreamConstraints;
|
||||||
|
enum class GetUserMediaRequestType : uint8_t;
|
||||||
|
|
||||||
class GetUserMediaRequest : public nsISupports, public nsWrapperCache {
|
class GetUserMediaRequest : public nsISupports, public nsWrapperCache {
|
||||||
public:
|
public:
|
||||||
// For "getUserMedia:request"
|
// For getUserMedia "getUserMedia:request"
|
||||||
GetUserMediaRequest(nsPIDOMWindowInner* aInnerWindow,
|
GetUserMediaRequest(nsPIDOMWindowInner* aInnerWindow,
|
||||||
const nsAString& aCallID,
|
const nsAString& aCallID,
|
||||||
const MediaStreamConstraints& aConstraints,
|
const MediaStreamConstraints& aConstraints,
|
||||||
bool aIsSecure, bool aIsHandlingUserInput);
|
bool aIsSecure, bool aIsHandlingUserInput);
|
||||||
|
// For selectAudioOutput "getUserMedia:request"
|
||||||
|
GetUserMediaRequest(nsPIDOMWindowInner* aInnerWindow,
|
||||||
|
const nsAString& aCallID,
|
||||||
|
const AudioOutputOptions& aAudioOutputOptions,
|
||||||
|
bool aIsSecure, bool aIsHandlingUserInput);
|
||||||
// For "recording-device-stopped"
|
// For "recording-device-stopped"
|
||||||
GetUserMediaRequest(nsPIDOMWindowInner* aInnerWindow, const nsAString& aRawId,
|
GetUserMediaRequest(nsPIDOMWindowInner* aInnerWindow, const nsAString& aRawId,
|
||||||
const nsAString& aMediaSource, bool aIsHandlingUserInput);
|
const nsAString& aMediaSource, bool aIsHandlingUserInput);
|
||||||
|
@ -39,6 +46,7 @@ class GetUserMediaRequest : public nsISupports, public nsWrapperCache {
|
||||||
JS::Handle<JSObject*> aGivenProto) override;
|
JS::Handle<JSObject*> aGivenProto) override;
|
||||||
nsISupports* GetParentObject();
|
nsISupports* GetParentObject();
|
||||||
|
|
||||||
|
GetUserMediaRequestType Type();
|
||||||
uint64_t WindowID();
|
uint64_t WindowID();
|
||||||
uint64_t InnerWindowID();
|
uint64_t InnerWindowID();
|
||||||
bool IsSecure();
|
bool IsSecure();
|
||||||
|
@ -47,6 +55,7 @@ class GetUserMediaRequest : public nsISupports, public nsWrapperCache {
|
||||||
void GetRawID(nsString& retval);
|
void GetRawID(nsString& retval);
|
||||||
void GetMediaSource(nsString& retval);
|
void GetMediaSource(nsString& retval);
|
||||||
void GetConstraints(MediaStreamConstraints& result);
|
void GetConstraints(MediaStreamConstraints& result);
|
||||||
|
void GetAudioOutputOptions(AudioOutputOptions& result);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual ~GetUserMediaRequest() = default;
|
virtual ~GetUserMediaRequest() = default;
|
||||||
|
@ -56,6 +65,8 @@ class GetUserMediaRequest : public nsISupports, public nsWrapperCache {
|
||||||
const nsString mRawID;
|
const nsString mRawID;
|
||||||
const nsString mMediaSource;
|
const nsString mMediaSource;
|
||||||
UniquePtr<MediaStreamConstraints> mConstraints;
|
UniquePtr<MediaStreamConstraints> mConstraints;
|
||||||
|
UniquePtr<AudioOutputOptions> mAudioOutputOptions;
|
||||||
|
GetUserMediaRequestType mType;
|
||||||
bool mIsSecure;
|
bool mIsSecure;
|
||||||
bool mIsHandlingUserInput;
|
bool mIsHandlingUserInput;
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,22 +6,32 @@
|
||||||
* This is an internal IDL file
|
* This is an internal IDL file
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// for gUM request start (getUserMedia:request) notification,
|
// For gUM request start (getUserMedia:request) notification,
|
||||||
// rawID and mediaSource won't be set.
|
// rawID, mediaSource and audioOutputOptions won't be set.
|
||||||
// for gUM request stop (recording-device-stopped) notification due to page reload,
|
// For selectAudioOutput request start (getUserMedia:request) notification,
|
||||||
// only windowID will be set.
|
// rawID, mediaSource and constraints won't be set.
|
||||||
// for gUM request stop (recording-device-stopped) notification due to track stop,
|
// For gUM request stop (recording-device-stopped) notification due to page
|
||||||
// only windowID, rawID and mediaSource will be set
|
// reload, only windowID will be set.
|
||||||
|
// For gUM request stop (recording-device-stopped) notification due to track
|
||||||
|
// stop, only type, windowID, rawID and mediaSource will be set
|
||||||
|
|
||||||
|
enum GetUserMediaRequestType {
|
||||||
|
"getusermedia",
|
||||||
|
"selectaudiooutput",
|
||||||
|
"recording-device-stopped"
|
||||||
|
};
|
||||||
|
|
||||||
[NoInterfaceObject,
|
[NoInterfaceObject,
|
||||||
Exposed=Window]
|
Exposed=Window]
|
||||||
interface GetUserMediaRequest {
|
interface GetUserMediaRequest {
|
||||||
|
readonly attribute GetUserMediaRequestType type;
|
||||||
readonly attribute unsigned long long windowID;
|
readonly attribute unsigned long long windowID;
|
||||||
readonly attribute unsigned long long innerWindowID;
|
readonly attribute unsigned long long innerWindowID;
|
||||||
readonly attribute DOMString callID;
|
readonly attribute DOMString callID;
|
||||||
readonly attribute DOMString rawID;
|
readonly attribute DOMString rawID;
|
||||||
readonly attribute DOMString mediaSource;
|
readonly attribute DOMString mediaSource;
|
||||||
MediaStreamConstraints getConstraints();
|
MediaStreamConstraints getConstraints();
|
||||||
|
AudioOutputOptions getAudioOutputOptions();
|
||||||
readonly attribute boolean isSecure;
|
readonly attribute boolean isSecure;
|
||||||
readonly attribute boolean isHandlingUserInput;
|
readonly attribute boolean isHandlingUserInput;
|
||||||
};
|
};
|
||||||
|
|
Загрузка…
Ссылка в новой задаче