summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h')
-rw-r--r--Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h b/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h
new file mode 100644
index 000000000..e8a96c253
--- /dev/null
+++ b/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2014 Igalia S.L.
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#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, const String& audioDeviceUID, const String& videoDeviceUID);
+ void userMediaAccessWasDenied(uint64_t, WebCore::UserMediaRequest::MediaAccessDenialReason, const String&);
+
+ void enumerateMediaDevices(WebCore::MediaDevicesEnumerationRequest&);
+ void cancelMediaDevicesEnumeration(WebCore::MediaDevicesEnumerationRequest&);
+ void didCompleteMediaDeviceEnumeration(uint64_t, const Vector<WebCore::CaptureDevice>& deviceList, const String& deviceIdentifierHashSalt, bool originHasPersistentAccess);
+
+ void grantUserMediaDeviceSandboxExtensions(const MediaDeviceSandboxExtensions&);
+ void revokeUserMediaDeviceSandboxExtensions(const Vector<String>&);
+
+private:
+ void sendUserMediaRequest(WebCore::UserMediaRequest&);
+
+ // WebCore::MediaCanStartListener
+ 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<uint64_t, RefPtr<WebCore::MediaDevicesEnumerationRequest>> m_idToMediaDevicesEnumerationRequestMap;
+ HashMap<RefPtr<WebCore::MediaDevicesEnumerationRequest>, uint64_t> m_mediaDevicesEnumerationRequestToIDMap;
+
+ HashMap<String, RefPtr<SandboxExtension>> m_userMediaDeviceSandboxExtensions;
+
+ HashMap<RefPtr<WebCore::Document>, Vector<RefPtr<WebCore::UserMediaRequest>>> m_blockedRequests;
+};
+
+} // namespace WebKit
+
+#endif // ENABLE(MEDIA_STREAM)
+
+#endif // UserMediaPermissionRequestManager_h