UserMediaRequest.h [plain text]
#pragma once
#if ENABLE(MEDIA_STREAM)
#include "ActiveDOMObject.h"
#include "JSDOMPromise.h"
namespace WebCore {
class MediaConstraintsImpl;
class MediaStream;
class SecurityOrigin;
class UserMediaController;
class UserMediaRequest : public RefCounted<UserMediaRequest>, private ContextDestructionObserver {
public:
static ExceptionOr<void> start(Document&, Ref<MediaConstraintsImpl>&& audioConstraints, Ref<MediaConstraintsImpl>&& videoConstraints, DOMPromise<IDLInterface<MediaStream>>&&);
virtual ~UserMediaRequest();
void start();
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; }
const String& allowedAudioDeviceUID() const { return m_allowedAudioDeviceUID; }
const String& allowedVideoDeviceUID() const { return m_allowedVideoDeviceUID; }
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;
Ref<MediaConstraintsImpl> m_audioConstraints;
Ref<MediaConstraintsImpl> m_videoConstraints;
Vector<String> m_videoDeviceUIDs;
Vector<String> m_audioDeviceUIDs;
String m_allowedVideoDeviceUID;
String m_allowedAudioDeviceUID;
UserMediaController* m_controller;
DOMPromise<IDLInterface<MediaStream>> m_promise;
RefPtr<UserMediaRequest> m_protector;
};
}
#endif // ENABLE(MEDIA_STREAM)