summaryrefslogtreecommitdiff
path: root/Source/WebCore/Modules/mediastream/UserMediaRequest.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/Modules/mediastream/UserMediaRequest.h')
-rw-r--r--Source/WebCore/Modules/mediastream/UserMediaRequest.h83
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