UserMediaPermissionRequestManager.h [plain text]
#ifndef UserMediaPermissionRequestManager_h
#define UserMediaPermissionRequestManager_h
#if ENABLE(MEDIA_STREAM)
#include "MediaDeviceSandboxExtensions.h"
#include "SandboxExtension.h"
#include <WebCore/MediaCanStartListener.h>
#include <WebCore/MediaConstraints.h>
#include <WebCore/MediaDevicesEnumerationRequest.h>
#include <WebCore/UserMediaClient.h>
#include <WebCore/UserMediaRequest.h>
#include <wtf/HashMap.h>
#include <wtf/Ref.h>
#include <wtf/RefPtr.h>
namespace WebKit {
class WebPage;
class UserMediaPermissionRequestManager
: private WebCore::MediaCanStartListener {
public:
explicit UserMediaPermissionRequestManager(WebPage&);
~UserMediaPermissionRequestManager();
void startUserMediaRequest(WebCore::UserMediaRequest&);
void cancelUserMediaRequest(WebCore::UserMediaRequest&);
void userMediaAccessWasGranted(uint64_t, WebCore::CaptureDevice&& audioDevice, WebCore::CaptureDevice&& videoDevice, String&& deviceIdentifierHashSalt);
void userMediaAccessWasDenied(uint64_t, WebCore::UserMediaRequest::MediaAccessDenialReason, String&&);
void enumerateMediaDevices(WebCore::MediaDevicesEnumerationRequest&);
void cancelMediaDevicesEnumeration(WebCore::MediaDevicesEnumerationRequest&);
void didCompleteMediaDeviceEnumeration(uint64_t, const Vector<WebCore::CaptureDevice>& deviceList, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess);
void grantUserMediaDeviceSandboxExtensions(MediaDeviceSandboxExtensions&&);
void revokeUserMediaDeviceSandboxExtensions(const Vector<String>&);
private:
void sendUserMediaRequest(WebCore::UserMediaRequest&);
void mediaCanStart(WebCore::Document&) override;
void removeMediaRequestFromMaps(WebCore::UserMediaRequest&);
WebPage& m_page;
HashMap<uint64_t, RefPtr<WebCore::UserMediaRequest>> m_idToUserMediaRequestMap;
HashMap<RefPtr<WebCore::UserMediaRequest>, uint64_t> m_userMediaRequestToIDMap;
HashMap<RefPtr<WebCore::Document>, Vector<RefPtr<WebCore::UserMediaRequest>>> m_blockedUserMediaRequests;
HashMap<uint64_t, RefPtr<WebCore::MediaDevicesEnumerationRequest>> m_idToMediaDevicesEnumerationRequestMap;
HashMap<RefPtr<WebCore::MediaDevicesEnumerationRequest>, uint64_t> m_mediaDevicesEnumerationRequestToIDMap;
HashMap<String, RefPtr<SandboxExtension>> m_userMediaDeviceSandboxExtensions;
};
}
#endif // ENABLE(MEDIA_STREAM)
#endif // UserMediaPermissionRequestManager_h