diff options
Diffstat (limited to 'Source/WebCore/Modules/mediastream/UserMediaRequest.h')
-rw-r--r-- | Source/WebCore/Modules/mediastream/UserMediaRequest.h | 83 |
1 files changed, 39 insertions, 44 deletions
diff --git a/Source/WebCore/Modules/mediastream/UserMediaRequest.h b/Source/WebCore/Modules/mediastream/UserMediaRequest.h index 6ad20fe06..316fee154 100644 --- a/Source/WebCore/Modules/mediastream/UserMediaRequest.h +++ b/Source/WebCore/Modules/mediastream/UserMediaRequest.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2011 Ericsson AB. All rights reserved. - * Copyright (C) 2013 Apple Inc. All rights reserved. + * Copyright (C) 2013-2016 Apple Inc. All rights reserved. * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies). * * Redistribution and use in source and binary forms, with or without @@ -30,71 +30,66 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef UserMediaRequest_h -#define UserMediaRequest_h +#pragma once #if ENABLE(MEDIA_STREAM) #include "ActiveDOMObject.h" -#include "MediaStreamCreationClient.h" -#include "MediaStreamSource.h" -#include "NavigatorUserMediaErrorCallback.h" -#include "NavigatorUserMediaSuccessCallback.h" -#include <wtf/PassRefPtr.h> -#include <wtf/RefCounted.h> -#include <wtf/text/WTFString.h> +#include "JSDOMPromise.h" namespace WebCore { -class Dictionary; -class Document; -class MediaConstraints; -class MediaStreamPrivate; -class UserMediaController; +class MediaConstraintsImpl; +class MediaStream; class SecurityOrigin; +class UserMediaController; -typedef int ExceptionCode; - -class UserMediaRequest : public MediaStreamCreationClient, public ContextDestructionObserver { +class UserMediaRequest : public RefCounted<UserMediaRequest>, private ContextDestructionObserver { public: - static PassRefPtr<UserMediaRequest> create(ScriptExecutionContext*, UserMediaController*, const Dictionary& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>, ExceptionCode&); - ~UserMediaRequest(); + static ExceptionOr<void> start(Document&, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, DOMPromise<IDLInterface<MediaStream>>&&); - SecurityOrigin* securityOrigin() const; + virtual ~UserMediaRequest(); void start(); - void userMediaAccessGranted(); - void userMediaAccessDenied(); -private: - UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>); + WEBCORE_EXPORT void setAllowedMediaDeviceUIDs(const String& audioDeviceUID, const String& videoDeviceUID); + WEBCORE_EXPORT void allow(const String& audioDeviceUID, const String& videoDeviceUID); + + enum MediaAccessDenialReason { NoConstraints, UserMediaDisabled, NoCaptureDevices, InvalidConstraint, HardwareError, PermissionDenied, OtherFailure }; + WEBCORE_EXPORT void deny(MediaAccessDenialReason, const String& invalidConstraint); + + const Vector<String>& audioDeviceUIDs() const { return m_audioDeviceUIDs; } + const Vector<String>& videoDeviceUIDs() const { return m_videoDeviceUIDs; } + + const MediaConstraintsImpl& audioConstraints() const { return m_audioConstraints; } + const MediaConstraintsImpl& videoConstraints() const { return m_videoConstraints; } - // MediaStreamCreationClient - virtual void constraintsValidated() override final; - virtual void constraintsInvalid(const String& constraintName) override final; - virtual void didCreateStream(PassRefPtr<MediaStreamPrivate>) override final; - virtual void failedToCreateStreamWithConstraintsError(const String& constraintName) override final; - virtual void failedToCreateStreamWithPermissionError() override final; + const String& allowedAudioDeviceUID() const { return m_allowedAudioDeviceUID; } + const String& allowedVideoDeviceUID() const { return m_allowedVideoDeviceUID; } - // ContextDestructionObserver - virtual void contextDestroyed() override final; + WEBCORE_EXPORT SecurityOrigin* userMediaDocumentOrigin() const; + WEBCORE_EXPORT SecurityOrigin* topLevelDocumentOrigin() const; + WEBCORE_EXPORT Document* document() const; + +private: + UserMediaRequest(Document&, UserMediaController&, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, DOMPromise<IDLInterface<MediaStream>>&&); + + void contextDestroyed() final; - void callSuccessHandler(PassRefPtr<MediaStreamPrivate>); - void callErrorHandler(PassRefPtr<NavigatorUserMediaError>); - void requestPermission(); - void createMediaStream(); + Ref<MediaConstraintsImpl> m_audioConstraints; + Ref<MediaConstraintsImpl> m_videoConstraints; - RefPtr<MediaConstraints> m_audioConstraints; - RefPtr<MediaConstraints> m_videoConstraints; + Vector<String> m_videoDeviceUIDs; + Vector<String> m_audioDeviceUIDs; - UserMediaController* m_controller; + String m_allowedVideoDeviceUID; + String m_allowedAudioDeviceUID; - RefPtr<NavigatorUserMediaSuccessCallback> m_successCallback; - RefPtr<NavigatorUserMediaErrorCallback> m_errorCallback; + UserMediaController* m_controller; + DOMPromise<IDLInterface<MediaStream>> m_promise; + RefPtr<UserMediaRequest> m_protector; }; } // namespace WebCore #endif // ENABLE(MEDIA_STREAM) - -#endif // UserMediaRequest_h |