Bug 1335368 part 16. Remove the use of IsCallerChrome in GetUserMedia. r=jib

This commit is contained in:
Boris Zbarsky 2017-02-01 15:43:38 -05:00
Родитель 387da61c81
Коммит 6e7bd78dc6
11 изменённых файлов: 27 добавлений и 12 удалений

Просмотреть файл

@ -1424,6 +1424,7 @@ void
Navigator::MozGetUserMedia(const MediaStreamConstraints& aConstraints,
NavigatorUserMediaSuccessCallback& aOnSuccess,
NavigatorUserMediaErrorCallback& aOnError,
CallerType aCallerType,
ErrorResult& aRv)
{
CallbackObjectHolder<NavigatorUserMediaSuccessCallback,
@ -1442,7 +1443,8 @@ Navigator::MozGetUserMedia(const MediaStreamConstraints& aConstraints,
}
MediaManager* manager = MediaManager::Get();
aRv = manager->GetUserMedia(mWindow, aConstraints, onsuccess, onerror);
aRv = manager->GetUserMedia(mWindow, aConstraints, onsuccess, onerror,
aCallerType);
}
void

Просмотреть файл

@ -232,6 +232,7 @@ public:
void MozGetUserMedia(const MediaStreamConstraints& aConstraints,
NavigatorUserMediaSuccessCallback& aOnSuccess,
NavigatorUserMediaErrorCallback& aOnError,
CallerType aCallerType,
ErrorResult& aRv);
void MozGetUserMediaDevices(const MediaStreamConstraints& aConstraints,
MozGetUserMediaDevicesSuccessCallback& aOnSuccess,

Просмотреть файл

@ -174,6 +174,7 @@ NS_IMPL_ISUPPORTS(MediaDevices::GumRejecter, nsIDOMGetUserMediaErrorCallback)
already_AddRefed<Promise>
MediaDevices::GetUserMedia(const MediaStreamConstraints& aConstraints,
CallerType aCallerType,
ErrorResult &aRv)
{
nsPIDOMWindowInner* window = GetOwner();
@ -185,7 +186,8 @@ MediaDevices::GetUserMedia(const MediaStreamConstraints& aConstraints,
RefPtr<GumRejecter> rejecter = new GumRejecter(p);
aRv = MediaManager::Get()->GetUserMedia(window, aConstraints,
resolver, rejecter);
resolver, rejecter,
aCallerType);
return p.forget();
}

Просмотреть файл

@ -39,7 +39,8 @@ public:
void GetSupportedConstraints(MediaTrackSupportedConstraints& aResult) {};
already_AddRefed<Promise>
GetUserMedia(const MediaStreamConstraints& aConstraints, ErrorResult &aRv);
GetUserMedia(const MediaStreamConstraints& aConstraints,
CallerType aCallerType, ErrorResult &aRv);
already_AddRefed<Promise>
EnumerateDevices(ErrorResult &aRv);

Просмотреть файл

@ -2002,7 +2002,8 @@ nsresult
MediaManager::GetUserMedia(nsPIDOMWindowInner* aWindow,
const MediaStreamConstraints& aConstraintsPassedIn,
nsIDOMGetUserMediaSuccessCallback* aOnSuccess,
nsIDOMGetUserMediaErrorCallback* aOnFailure)
nsIDOMGetUserMediaErrorCallback* aOnFailure,
dom::CallerType aCallerType)
{
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(aWindow);
@ -2040,7 +2041,7 @@ MediaManager::GetUserMedia(nsPIDOMWindowInner* aWindow,
if (!docURI) {
return NS_ERROR_UNEXPECTED;
}
bool isChrome = nsContentUtils::IsCallerChrome();
bool isChrome = (aCallerType == dom::CallerType::System);
bool privileged = isChrome ||
Preferences::GetBool("media.navigator.permission.disabled", false);
bool isHTTPS = false;

Просмотреть файл

@ -48,6 +48,7 @@ namespace dom {
struct MediaStreamConstraints;
struct MediaTrackConstraints;
struct MediaTrackConstraintSet;
enum class CallerType : uint32_t;
} // namespace dom
namespace ipc {
@ -241,7 +242,8 @@ public:
nsPIDOMWindowInner* aWindow,
const dom::MediaStreamConstraints& aConstraints,
nsIDOMGetUserMediaSuccessCallback* onSuccess,
nsIDOMGetUserMediaErrorCallback* onError);
nsIDOMGetUserMediaErrorCallback* onError,
dom::CallerType aCallerType);
nsresult GetUserMediaDevices(nsPIDOMWindowInner* aWindow,
const dom::MediaStreamConstraints& aConstraints,

Просмотреть файл

@ -724,7 +724,9 @@ SpeechRecognition::SetServiceURI(const nsAString& aArg, ErrorResult& aRv)
}
void
SpeechRecognition::Start(const Optional<NonNull<DOMMediaStream>>& aStream, ErrorResult& aRv)
SpeechRecognition::Start(const Optional<NonNull<DOMMediaStream>>& aStream,
CallerType aCallerType,
ErrorResult& aRv)
{
if (mCurrentState != STATE_IDLE) {
aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
@ -756,7 +758,8 @@ SpeechRecognition::Start(const Optional<NonNull<DOMMediaStream>>& aStream, Error
manager->GetUserMedia(GetOwner(),
constraints,
new GetUserMediaSuccessCallback(this),
new GetUserMediaErrorCallback(this));
new GetUserMediaErrorCallback(this),
aCallerType);
}
RefPtr<SpeechEvent> event = new SpeechEvent(this, EVENT_START);

Просмотреть файл

@ -27,6 +27,7 @@
#include "nsISpeechRecognitionService.h"
#include "endpointer.h"
#include "mozilla/dom/BindingDeclarations.h"
#include "mozilla/dom/SpeechRecognitionError.h"
namespace mozilla {
@ -90,7 +91,8 @@ public:
void SetServiceURI(const nsAString& aArg, ErrorResult& aRv);
void Start(const Optional<NonNull<DOMMediaStream>>& aStream, ErrorResult& aRv);
void Start(const Optional<NonNull<DOMMediaStream>>& aStream,
CallerType aCallerType, ErrorResult& aRv);
void Stop();

Просмотреть файл

@ -19,6 +19,6 @@ interface MediaDevices : EventTarget {
[Throws]
Promise<sequence<MediaDeviceInfo>> enumerateDevices();
[Throws]
[Throws, NeedsCallerType]
Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints);
};

Просмотреть файл

@ -315,7 +315,8 @@ partial interface Navigator {
// Deprecated. Use mediaDevices.getUserMedia instead.
[Deprecated="NavigatorGetUserMedia", Throws,
Func="Navigator::HasUserMediaSupport", UnsafeInPrerendering]
Func="Navigator::HasUserMediaSupport", UnsafeInPrerendering,
NeedsCallerType]
void mozGetUserMedia(MediaStreamConstraints constraints,
NavigatorUserMediaSuccessCallback successCallback,
NavigatorUserMediaErrorCallback errorCallback);

Просмотреть файл

@ -25,7 +25,7 @@ interface SpeechRecognition : EventTarget {
attribute DOMString serviceURI;
// methods to drive the speech interaction
[Throws, UnsafeInPrerendering]
[Throws, UnsafeInPrerendering, NeedsCallerType]
void start(optional MediaStream stream);
void stop();
void abort();