UserMediaRequest.h [plain text]
#ifndef UserMediaRequest_h
#define UserMediaRequest_h
#if ENABLE(MEDIA_STREAM)
#include "ActiveDOMObject.h"
#include "MediaDevices.h"
#include "MediaStreamCreationClient.h"
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class Dictionary;
class Document;
class Frame;
class MediaConstraints;
class MediaStreamPrivate;
class UserMediaController;
class SecurityOrigin;
typedef int ExceptionCode;
class UserMediaRequest : public MediaStreamCreationClient, public ContextDestructionObserver {
public:
static void start(Document*, const Dictionary&, MediaDevices::Promise&&, ExceptionCode&);
~UserMediaRequest();
WEBCORE_EXPORT SecurityOrigin* userMediaDocumentOrigin() const;
WEBCORE_EXPORT SecurityOrigin* topLevelDocumentOrigin() const;
void start();
WEBCORE_EXPORT void userMediaAccessGranted(const String& audioDeviceUID, const String& videoDeviceUID);
WEBCORE_EXPORT void userMediaAccessDenied();
const Vector<String>& audioDeviceUIDs() const { return m_audioDeviceUIDs; }
const Vector<String>& videoDeviceUIDs() const { return m_videoDeviceUIDs; }
const String& allowedAudioDeviceUID() const { return m_audioDeviceUIDAllowed; }
const String& allowedVideoDeviceUID() const { return m_allowedVideoDeviceUID; }
private:
UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, MediaDevices::Promise&&);
void constraintsValidated(const Vector<RefPtr<RealtimeMediaSource>>& audioTracks, const Vector<RefPtr<RealtimeMediaSource>>& videoTracks) final;
void constraintsInvalid(const String& constraintName) final;
void didCreateStream(PassRefPtr<MediaStreamPrivate>) final;
void failedToCreateStreamWithConstraintsError(const String& constraintName) final;
void failedToCreateStreamWithPermissionError() final;
void contextDestroyed() final;
RefPtr<MediaConstraints> m_audioConstraints;
RefPtr<MediaConstraints> m_videoConstraints;
Vector<String> m_videoDeviceUIDs;
Vector<String> m_audioDeviceUIDs;
String m_allowedVideoDeviceUID;
String m_audioDeviceUIDAllowed;
UserMediaController* m_controller;
MediaDevices::Promise m_promise;
};
}
#endif // ENABLE(MEDIA_STREAM)
#endif // UserMediaRequest_h