Title: [255133] trunk/Source
Revision
255133
Author
[email protected]
Date
2020-01-26 14:47:06 -0800 (Sun, 26 Jan 2020)

Log Message

Use ObjectIdentifier for remote RealtimeMediaSource
https://bugs.webkit.org/show_bug.cgi?id=206808
<rdar://problem/58705405>

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior.

* WebCore.xcodeproj/project.pbxproj:
* platform/mediastream/RealtimeMediaSourceIdentifier.h: Added.

Source/WebKit:

Use ObjectIdentifier instead of uint64_t.
This is clearer and prevents receiving identifier of value zero from IPC.
Remove related message checks.

* Scripts/webkit/messages.py:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
(WebKit::UserMediaCaptureManagerProxy::startProducingData):
(WebKit::UserMediaCaptureManagerProxy::stopProducingData):
(WebKit::UserMediaCaptureManagerProxy::end):
(WebKit::UserMediaCaptureManagerProxy::capabilities):
(WebKit::UserMediaCaptureManagerProxy::setMuted):
(WebKit::UserMediaCaptureManagerProxy::applyConstraints):
(WebKit::UserMediaCaptureManagerProxy::clone):
(WebKit::UserMediaCaptureManagerProxy::requestToEnd):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::Source):
(WebKit::UserMediaCaptureManager::Source::sourceID const):
(WebKit::UserMediaCaptureManager::createCaptureSource):
(WebKit::UserMediaCaptureManager::sourceStopped):
(WebKit::UserMediaCaptureManager::captureFailed):
(WebKit::UserMediaCaptureManager::sourceMutedChanged):
(WebKit::UserMediaCaptureManager::sourceSettingsChanged):
(WebKit::UserMediaCaptureManager::storageChanged):
(WebKit::UserMediaCaptureManager::ringBufferFrameBoundsChanged):
(WebKit::UserMediaCaptureManager::audioSamplesAvailable):
(WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable):
(WebKit::UserMediaCaptureManager::sourceEnded):
(WebKit::UserMediaCaptureManager::applyConstraintsSucceeded):
(WebKit::UserMediaCaptureManager::applyConstraintsFailed):
(WebKit::UserMediaCaptureManager::cloneVideoSource):
* WebProcess/cocoa/UserMediaCaptureManager.h:
* WebProcess/cocoa/UserMediaCaptureManager.messages.in:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (255132 => 255133)


--- trunk/Source/WebCore/ChangeLog	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebCore/ChangeLog	2020-01-26 22:47:06 UTC (rev 255133)
@@ -1,3 +1,16 @@
+2020-01-26  youenn fablet  <[email protected]>
+
+        Use ObjectIdentifier for remote RealtimeMediaSource
+        https://bugs.webkit.org/show_bug.cgi?id=206808
+        <rdar://problem/58705405>
+
+        Reviewed by Eric Carlson.
+
+        No change of behavior.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/mediastream/RealtimeMediaSourceIdentifier.h: Added.
+
 2020-01-26  Said Abou-Hallawa  <[email protected]>
 
         Throttling requestAnimationFrame should be controlled by RenderingUpdateScheduler

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (255132 => 255133)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2020-01-26 22:47:06 UTC (rev 255133)
@@ -1134,6 +1134,7 @@
 		41B28B151F8501D300FB52AC /* MediaEndpointConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 41B28B121F8501A300FB52AC /* MediaEndpointConfiguration.h */; };
 		41B28B3D1F860EF300FB52AC /* LibWebRTCProviderCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 41B28B361F860BD000FB52AC /* LibWebRTCProviderCocoa.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41B2A6261EF1BF6D002B9D7A /* WebAudioSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 41B2A6251EF1BF60002B9D7A /* WebAudioSourceProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		41B8776223DE1045003638B8 /* RealtimeMediaSourceIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 41B8776023DE1042003638B8 /* RealtimeMediaSourceIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41BF204922BA7BE80004F812 /* RealtimeVideoSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 41BF204022B947160004F812 /* RealtimeVideoSource.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41C760B10EDE03D300C1655F /* ScriptState.h in Headers */ = {isa = PBXBuildFile; fileRef = 41C760B00EDE03D300C1655F /* ScriptState.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41D015CA0F4B5C71004A662F /* ContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 41D015C80F4B5C71004A662F /* ContentType.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -7515,6 +7516,7 @@
 		41B2A6251EF1BF60002B9D7A /* WebAudioSourceProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebAudioSourceProvider.h; sourceTree = "<group>"; };
 		41B459DA1F4CADB90000F6FD /* ReadableStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStream.h; sourceTree = "<group>"; };
 		41B459ED1F55EBC70000F6FD /* ReadableStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReadableStream.cpp; sourceTree = "<group>"; };
+		41B8776023DE1042003638B8 /* RealtimeMediaSourceIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RealtimeMediaSourceIdentifier.h; sourceTree = "<group>"; };
 		41B9137623584D0E0025BFA3 /* MockAudioDestinationCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MockAudioDestinationCocoa.h; sourceTree = "<group>"; };
 		41B9137823584D0F0025BFA3 /* MockAudioDestinationCocoa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MockAudioDestinationCocoa.cpp; sourceTree = "<group>"; };
 		41BF204022B947160004F812 /* RealtimeVideoSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RealtimeVideoSource.h; sourceTree = "<group>"; };
@@ -16242,6 +16244,7 @@
 				4A0FFAA01AAF5EA20062803B /* RealtimeMediaSourceCenter.h */,
 				0754A5EB215EADF3002D3A99 /* RealtimeMediaSourceFactory.cpp */,
 				0754A5E8215EA3B7002D3A99 /* RealtimeMediaSourceFactory.h */,
+				41B8776023DE1042003638B8 /* RealtimeMediaSourceIdentifier.h */,
 				4A4F656E1AA997F100E38CDD /* RealtimeMediaSourceSettings.cpp */,
 				4A4F656F1AA997F100E38CDD /* RealtimeMediaSourceSettings.h */,
 				2EC41DE21C0410A300D294FE /* RealtimeMediaSourceSupportedConstraints.cpp */,
@@ -30906,6 +30909,7 @@
 				7C193C011F5E11050088F3E6 /* JSImageSmoothingQuality.h in Headers */,
 				A86629D309DA2B48009633A6 /* JSInputEvent.h in Headers */,
 				9175CE5E21E281ED00DF2C28 /* JSInspectorAuditAccessibilityObject.h in Headers */,
+				41B8776223DE1045003638B8 /* RealtimeMediaSourceIdentifier.h in Headers */,
 				9175CE5C21E281ED00DF2C28 /* JSInspectorAuditDOMObject.h in Headers */,
 				9109E9C8222CABCA00BB6265 /* JSInspectorAuditResourcesObject.h in Headers */,
 				7A0E771F10C00DB100A0276E /* JSInspectorFrontendHost.h in Headers */,

Added: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceIdentifier.h (0 => 255133)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceIdentifier.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceIdentifier.h	2020-01-26 22:47:06 UTC (rev 255133)
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2020 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/ObjectIdentifier.h>
+
+namespace WebCore {
+
+enum RealtimeMediaSourceIdentifierType { };
+using RealtimeMediaSourceIdentifier = ObjectIdentifier<RealtimeMediaSourceIdentifierType>;
+
+}

Modified: trunk/Source/WebKit/ChangeLog (255132 => 255133)


--- trunk/Source/WebKit/ChangeLog	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebKit/ChangeLog	2020-01-26 22:47:06 UTC (rev 255133)
@@ -1,3 +1,48 @@
+2020-01-26  youenn fablet  <[email protected]>
+
+        Use ObjectIdentifier for remote RealtimeMediaSource
+        https://bugs.webkit.org/show_bug.cgi?id=206808
+        <rdar://problem/58705405>
+
+        Reviewed by Eric Carlson.
+
+        Use ObjectIdentifier instead of uint64_t.
+        This is clearer and prevents receiving identifier of value zero from IPC.
+        Remove related message checks.
+
+        * Scripts/webkit/messages.py:
+        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
+        (WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy):
+        (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
+        (WebKit::UserMediaCaptureManagerProxy::startProducingData):
+        (WebKit::UserMediaCaptureManagerProxy::stopProducingData):
+        (WebKit::UserMediaCaptureManagerProxy::end):
+        (WebKit::UserMediaCaptureManagerProxy::capabilities):
+        (WebKit::UserMediaCaptureManagerProxy::setMuted):
+        (WebKit::UserMediaCaptureManagerProxy::applyConstraints):
+        (WebKit::UserMediaCaptureManagerProxy::clone):
+        (WebKit::UserMediaCaptureManagerProxy::requestToEnd):
+        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
+        * UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
+        * WebProcess/cocoa/UserMediaCaptureManager.cpp:
+        (WebKit::UserMediaCaptureManager::Source::Source):
+        (WebKit::UserMediaCaptureManager::Source::sourceID const):
+        (WebKit::UserMediaCaptureManager::createCaptureSource):
+        (WebKit::UserMediaCaptureManager::sourceStopped):
+        (WebKit::UserMediaCaptureManager::captureFailed):
+        (WebKit::UserMediaCaptureManager::sourceMutedChanged):
+        (WebKit::UserMediaCaptureManager::sourceSettingsChanged):
+        (WebKit::UserMediaCaptureManager::storageChanged):
+        (WebKit::UserMediaCaptureManager::ringBufferFrameBoundsChanged):
+        (WebKit::UserMediaCaptureManager::audioSamplesAvailable):
+        (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable):
+        (WebKit::UserMediaCaptureManager::sourceEnded):
+        (WebKit::UserMediaCaptureManager::applyConstraintsSucceeded):
+        (WebKit::UserMediaCaptureManager::applyConstraintsFailed):
+        (WebKit::UserMediaCaptureManager::cloneVideoSource):
+        * WebProcess/cocoa/UserMediaCaptureManager.h:
+        * WebProcess/cocoa/UserMediaCaptureManager.messages.in:
+
 2020-01-26  Darin Adler  <[email protected]>
 
         Protect against crashes during WKWebView init function when methods are called before the view is fully initialized

Modified: trunk/Source/WebKit/Scripts/webkit/messages.py (255132 => 255133)


--- trunk/Source/WebKit/Scripts/webkit/messages.py	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebKit/Scripts/webkit/messages.py	2020-01-26 22:47:06 UTC (rev 255133)
@@ -211,6 +211,7 @@
         'WebCore::PageIdentifier',
         'WebCore::PointerID',
         'WebCore::ProcessIdentifier',
+        'WebCore::RealtimeMediaSourceIdentifier',
         'WebCore::ServiceWorkerIdentifier',
         'WebCore::ServiceWorkerJobIdentifier',
         'WebCore::ServiceWorkerOrClientData',

Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp (255132 => 255133)


--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp	2020-01-26 22:47:06 UTC (rev 255133)
@@ -48,7 +48,7 @@
 class UserMediaCaptureManagerProxy::SourceProxy : public RealtimeMediaSource::Observer, public SharedRingBufferStorage::Client {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    SourceProxy(uint64_t id, Ref<IPC::Connection>&& connection, Ref<RealtimeMediaSource>&& source)
+    SourceProxy(RealtimeMediaSourceIdentifier id, Ref<IPC::Connection>&& connection, Ref<RealtimeMediaSource>&& source)
         : m_id(id)
         , m_connection(WTFMove(connection))
         , m_source(WTFMove(source))
@@ -146,7 +146,7 @@
         return !m_isEnded;
     }
 
-    uint64_t m_id;
+    RealtimeMediaSourceIdentifier m_id;
     Ref<IPC::Connection> m_connection;
     Ref<RealtimeMediaSource> m_source;
     CARingBuffer m_ringBuffer;
@@ -166,10 +166,8 @@
     m_connectionProxy->removeMessageReceiver(Messages::UserMediaCaptureManagerProxy::messageReceiverName());
 }
 
-void UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints(uint64_t id, const CaptureDevice& device, String&& hashSalt, const MediaConstraints& constraints, CompletionHandler<void(bool succeeded, String invalidConstraints, WebCore::RealtimeMediaSourceSettings&&)>&& completionHandler)
+void UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints(RealtimeMediaSourceIdentifier id, const CaptureDevice& device, String&& hashSalt, const MediaConstraints& constraints, CompletionHandler<void(bool succeeded, String invalidConstraints, WebCore::RealtimeMediaSourceSettings&&)>&& completionHandler)
 {
-    MESSAGE_CHECK_CONTEXTID(id);
-
     CaptureSourceOrError sourceOrError;
     switch (device.type()) {
     case WebCore::CaptureDevice::DeviceType::Microphone:
@@ -202,29 +200,25 @@
     completionHandler(succeeded, invalidConstraints, WTFMove(settings));
 }
 
-void UserMediaCaptureManagerProxy::startProducingData(uint64_t id)
+void UserMediaCaptureManagerProxy::startProducingData(RealtimeMediaSourceIdentifier id)
 {
-    MESSAGE_CHECK_CONTEXTID(id);
     if (auto* proxy = m_proxies.get(id))
         proxy->start();
 }
 
-void UserMediaCaptureManagerProxy::stopProducingData(uint64_t id)
+void UserMediaCaptureManagerProxy::stopProducingData(RealtimeMediaSourceIdentifier id)
 {
-    MESSAGE_CHECK_CONTEXTID(id);
     if (auto* proxy = m_proxies.get(id))
         proxy->stop();
 }
 
-void UserMediaCaptureManagerProxy::end(uint64_t id)
+void UserMediaCaptureManagerProxy::end(RealtimeMediaSourceIdentifier id)
 {
-    MESSAGE_CHECK_CONTEXTID(id);
     m_proxies.remove(id);
 }
 
-void UserMediaCaptureManagerProxy::capabilities(uint64_t id, CompletionHandler<void(WebCore::RealtimeMediaSourceCapabilities&&)>&& completionHandler)
+void UserMediaCaptureManagerProxy::capabilities(RealtimeMediaSourceIdentifier id, CompletionHandler<void(WebCore::RealtimeMediaSourceCapabilities&&)>&& completionHandler)
 {
-    MESSAGE_CHECK_CONTEXTID(id);
     WebCore::RealtimeMediaSourceCapabilities capabilities;
     if (auto* proxy = m_proxies.get(id))
         capabilities = proxy->source().capabilities();
@@ -231,16 +225,14 @@
     completionHandler(WTFMove(capabilities));
 }
 
-void UserMediaCaptureManagerProxy::setMuted(uint64_t id, bool muted)
+void UserMediaCaptureManagerProxy::setMuted(RealtimeMediaSourceIdentifier id, bool muted)
 {
-    MESSAGE_CHECK_CONTEXTID(id);
     if (auto* proxy = m_proxies.get(id))
         proxy->source().setMuted(muted);
 }
 
-void UserMediaCaptureManagerProxy::applyConstraints(uint64_t id, const WebCore::MediaConstraints& constraints)
+void UserMediaCaptureManagerProxy::applyConstraints(RealtimeMediaSourceIdentifier id, const WebCore::MediaConstraints& constraints)
 {
-    MESSAGE_CHECK_CONTEXTID(id);
     auto* proxy = m_proxies.get(id);
     if (!proxy)
         return;
@@ -253,7 +245,7 @@
         m_connectionProxy->connection().send(Messages::UserMediaCaptureManager::ApplyConstraintsFailed(id, result->badConstraint, result->message), 0);
 }
 
-void UserMediaCaptureManagerProxy::clone(uint64_t clonedID, uint64_t newSourceID)
+void UserMediaCaptureManagerProxy::clone(RealtimeMediaSourceIdentifier clonedID, RealtimeMediaSourceIdentifier newSourceID)
 {
     ASSERT(m_proxies.contains(clonedID));
     ASSERT(!m_proxies.contains(newSourceID));
@@ -261,7 +253,7 @@
         m_proxies.add(newSourceID, makeUnique<SourceProxy>(newSourceID, m_connectionProxy->connection(), proxy->source().clone()));
 }
 
-void UserMediaCaptureManagerProxy::requestToEnd(uint64_t sourceID)
+void UserMediaCaptureManagerProxy::requestToEnd(RealtimeMediaSourceIdentifier sourceID)
 {
     if (auto* proxy = m_proxies.get(sourceID))
         proxy->requestToEnd();

Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h (255132 => 255133)


--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h	2020-01-26 22:47:06 UTC (rev 255133)
@@ -32,6 +32,7 @@
 #include "UserMediaCaptureManager.h"
 #include <WebCore/OrientationNotifier.h>
 #include <WebCore/RealtimeMediaSource.h>
+#include <WebCore/RealtimeMediaSourceIdentifier.h>
 #include <wtf/UniqueRef.h>
 
 namespace WebKit {
@@ -64,19 +65,19 @@
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
     void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) final;
 
-    void createMediaSourceForCaptureDeviceWithConstraints(uint64_t id, const WebCore::CaptureDevice& deviceID, String&&, const WebCore::MediaConstraints&, CompletionHandler<void(bool succeeded, String invalidConstraints, WebCore::RealtimeMediaSourceSettings&&)>&&);
-    void startProducingData(uint64_t);
-    void stopProducingData(uint64_t);
-    void end(uint64_t);
-    void capabilities(uint64_t, CompletionHandler<void(WebCore::RealtimeMediaSourceCapabilities&&)>&&);
-    void setMuted(uint64_t, bool);
-    void applyConstraints(uint64_t, const WebCore::MediaConstraints&);
-    void clone(uint64_t clonedID, uint64_t cloneID);
-    void requestToEnd(uint64_t);
+    void createMediaSourceForCaptureDeviceWithConstraints(WebCore::RealtimeMediaSourceIdentifier, const WebCore::CaptureDevice& deviceID, String&&, const WebCore::MediaConstraints&, CompletionHandler<void(bool succeeded, String invalidConstraints, WebCore::RealtimeMediaSourceSettings&&)>&&);
+    void startProducingData(WebCore::RealtimeMediaSourceIdentifier);
+    void stopProducingData(WebCore::RealtimeMediaSourceIdentifier);
+    void end(WebCore::RealtimeMediaSourceIdentifier);
+    void capabilities(WebCore::RealtimeMediaSourceIdentifier, CompletionHandler<void(WebCore::RealtimeMediaSourceCapabilities&&)>&&);
+    void setMuted(WebCore::RealtimeMediaSourceIdentifier, bool);
+    void applyConstraints(WebCore::RealtimeMediaSourceIdentifier, const WebCore::MediaConstraints&);
+    void clone(WebCore::RealtimeMediaSourceIdentifier clonedID, WebCore::RealtimeMediaSourceIdentifier cloneID);
+    void requestToEnd(WebCore::RealtimeMediaSourceIdentifier);
 
     class SourceProxy;
     friend class SourceProxy;
-    HashMap<uint64_t, std::unique_ptr<SourceProxy>> m_proxies;
+    HashMap<WebCore::RealtimeMediaSourceIdentifier, std::unique_ptr<SourceProxy>> m_proxies;
     UniqueRef<ConnectionProxy> m_connectionProxy;
     WebCore::OrientationNotifier m_orientationNotifier { 0 };
 };

Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in (255132 => 255133)


--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in	2020-01-26 22:47:06 UTC (rev 255133)
@@ -24,15 +24,15 @@
 #if ENABLE(MEDIA_STREAM)
 
 messages -> UserMediaCaptureManagerProxy NotRefCounted {
-    CreateMediaSourceForCaptureDeviceWithConstraints(uint64_t id, WebCore::CaptureDevice device, String hashSalt, struct WebCore::MediaConstraints constraints) -> (bool success, String invalidConstraints, WebCore::RealtimeMediaSourceSettings settings) Synchronous
-    StartProducingData(uint64_t id)
-    StopProducingData(uint64_t id)
-    End(uint64_t id)
-    Capabilities(uint64_t id) -> (WebCore::RealtimeMediaSourceCapabilities capabilities) Synchronous
-    SetMuted(uint64_t id, bool muted)
-    ApplyConstraints(uint64_t id, struct WebCore::MediaConstraints constraints)
-    Clone(uint64_t clonedID, uint64_t cloneID)
-    RequestToEnd(uint64_t sourceID)
+    CreateMediaSourceForCaptureDeviceWithConstraints(WebCore::RealtimeMediaSourceIdentifier id, WebCore::CaptureDevice device, String hashSalt, struct WebCore::MediaConstraints constraints) -> (bool success, String invalidConstraints, WebCore::RealtimeMediaSourceSettings settings) Synchronous
+    StartProducingData(WebCore::RealtimeMediaSourceIdentifier id)
+    StopProducingData(WebCore::RealtimeMediaSourceIdentifier id)
+    End(WebCore::RealtimeMediaSourceIdentifier id)
+    Capabilities(WebCore::RealtimeMediaSourceIdentifier id) -> (WebCore::RealtimeMediaSourceCapabilities capabilities) Synchronous
+    SetMuted(WebCore::RealtimeMediaSourceIdentifier id, bool muted)
+    ApplyConstraints(WebCore::RealtimeMediaSourceIdentifier id, struct WebCore::MediaConstraints constraints)
+    Clone(WebCore::RealtimeMediaSourceIdentifier clonedID, WebCore::RealtimeMediaSourceIdentifier cloneID)
+    RequestToEnd(WebCore::RealtimeMediaSourceIdentifier sourceID)
 }
 
 #endif

Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp (255132 => 255133)


--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp	2020-01-26 22:47:06 UTC (rev 255133)
@@ -49,15 +49,9 @@
 using namespace PAL;
 using namespace WebCore;
 
-static uint64_t nextSessionID()
-{
-    static uint64_t nextID = 0;
-    return ++nextID;
-}
-
 class UserMediaCaptureManager::Source : public RealtimeMediaSource {
 public:
-    Source(String&& sourceID, Type type, CaptureDevice::DeviceType deviceType, String&& name, String&& hashSalt, uint64_t id, UserMediaCaptureManager& manager)
+    Source(String&& sourceID, Type type, CaptureDevice::DeviceType deviceType, String&& name, String&& hashSalt, RealtimeMediaSourceIdentifier id, UserMediaCaptureManager& manager)
         : RealtimeMediaSource(type, WTFMove(name), WTFMove(sourceID), WTFMove(hashSalt))
         , m_id(id)
         , m_manager(manager)
@@ -116,7 +110,7 @@
         return m_manager.cloneSource(*this);
     }
 
-    uint64_t sourceID() const
+    RealtimeMediaSourceIdentifier sourceID() const
     {
         return m_id;
     }
@@ -233,7 +227,7 @@
     void requestToEnd(RealtimeMediaSource::Observer&) { stopBeingObserved(); }
     void stopBeingObserved();
 
-    uint64_t m_id;
+    RealtimeMediaSourceIdentifier m_id;
     UserMediaCaptureManager& m_manager;
     mutable Optional<RealtimeMediaSourceCapabilities> m_capabilities;
     RealtimeMediaSourceSettings m_settings;
@@ -292,7 +286,7 @@
     if (!constraints)
         return { };
 
-    uint64_t id = nextSessionID();
+    auto id = RealtimeMediaSourceIdentifier::generate();
     RealtimeMediaSourceSettings settings;
     String errorMessage;
     bool succeeded;
@@ -309,7 +303,7 @@
         return WTFMove(errorMessage);
 
     auto type = device.type() == CaptureDevice::DeviceType::Microphone ? WebCore::RealtimeMediaSource::Type::Audio : WebCore::RealtimeMediaSource::Type::Video;
-    auto source = adoptRef(*new Source(String::number(id), type, device.type(), String { settings.label().string() }, WTFMove(hashSalt), id, *this));
+    auto source = adoptRef(*new Source(String::number(id.toUInt64()), type, device.type(), String { settings.label().string() }, WTFMove(hashSalt), id, *this));
     if (shouldCaptureInGPUProcess)
         source->setShouldCaptureInGPUProcess(shouldCaptureInGPUProcess);
     source->setSettings(WTFMove(settings));
@@ -317,7 +311,7 @@
     return WebCore::CaptureSourceOrError(WTFMove(source));
 }
 
-void UserMediaCaptureManager::sourceStopped(uint64_t id)
+void UserMediaCaptureManager::sourceStopped(RealtimeMediaSourceIdentifier id)
 {
     if (auto source = m_sources.get(id)) {
         source->stop();
@@ -325,7 +319,7 @@
     }
 }
 
-void UserMediaCaptureManager::captureFailed(uint64_t id)
+void UserMediaCaptureManager::captureFailed(RealtimeMediaSourceIdentifier id)
 {
     if (auto source = m_sources.get(id)) {
         source->captureFailed();
@@ -333,31 +327,31 @@
     }
 }
 
-void UserMediaCaptureManager::sourceMutedChanged(uint64_t id, bool muted)
+void UserMediaCaptureManager::sourceMutedChanged(RealtimeMediaSourceIdentifier id, bool muted)
 {
     if (auto source = m_sources.get(id))
         source->setMuted(muted);
 }
 
-void UserMediaCaptureManager::sourceSettingsChanged(uint64_t id, const RealtimeMediaSourceSettings& settings)
+void UserMediaCaptureManager::sourceSettingsChanged(RealtimeMediaSourceIdentifier id, const RealtimeMediaSourceSettings& settings)
 {
     if (auto source = m_sources.get(id))
         source->setSettings(RealtimeMediaSourceSettings(settings));
 }
 
-void UserMediaCaptureManager::storageChanged(uint64_t id, const SharedMemory::Handle& handle, const WebCore::CAAudioStreamDescription& description, uint64_t numberOfFrames)
+void UserMediaCaptureManager::storageChanged(RealtimeMediaSourceIdentifier id, const SharedMemory::Handle& handle, const WebCore::CAAudioStreamDescription& description, uint64_t numberOfFrames)
 {
     if (auto source = m_sources.get(id))
         source->setStorage(handle, description, numberOfFrames);
 }
 
-void UserMediaCaptureManager::ringBufferFrameBoundsChanged(uint64_t id, uint64_t startFrame, uint64_t endFrame)
+void UserMediaCaptureManager::ringBufferFrameBoundsChanged(RealtimeMediaSourceIdentifier id, uint64_t startFrame, uint64_t endFrame)
 {
     if (auto source = m_sources.get(id))
         source->setRingBufferFrameBounds(startFrame, endFrame);
 }
 
-void UserMediaCaptureManager::audioSamplesAvailable(uint64_t id, MediaTime time, uint64_t numberOfFrames, uint64_t startFrame, uint64_t endFrame)
+void UserMediaCaptureManager::audioSamplesAvailable(RealtimeMediaSourceIdentifier id, MediaTime time, uint64_t numberOfFrames, uint64_t startFrame, uint64_t endFrame)
 {
     if (auto source = m_sources.get(id)) {
         source->setRingBufferFrameBounds(startFrame, endFrame);
@@ -366,13 +360,13 @@
 }
 
 #if HAVE(IOSURFACE)
-void UserMediaCaptureManager::remoteVideoSampleAvailable(uint64_t id, RemoteVideoSample&& sample)
+void UserMediaCaptureManager::remoteVideoSampleAvailable(RealtimeMediaSourceIdentifier id, RemoteVideoSample&& sample)
 {
     if (auto source = m_sources.get(id))
         source->remoteVideoSampleAvailable(WTFMove(sample));
 }
 #else
-NO_RETURN_DUE_TO_ASSERT void UserMediaCaptureManager::remoteVideoSampleAvailable(uint64_t, RemoteVideoSample&&)
+NO_RETURN_DUE_TO_ASSERT void UserMediaCaptureManager::remoteVideoSampleAvailable(RealtimeMediaSourceIdentifier, RemoteVideoSample&&)
 {
     ASSERT_NOT_REACHED();
 }
@@ -414,7 +408,7 @@
     connection()->send(Messages::UserMediaCaptureManagerProxy::ApplyConstraints(m_id, constraints), 0);
 }
 
-void UserMediaCaptureManager::sourceEnded(uint64_t id)
+void UserMediaCaptureManager::sourceEnded(RealtimeMediaSourceIdentifier id)
 {
     m_sources.remove(id);
 }
@@ -425,13 +419,13 @@
     m_manager.sourceEnded(m_id);
 }
 
-void UserMediaCaptureManager::applyConstraintsSucceeded(uint64_t id, const WebCore::RealtimeMediaSourceSettings& settings)
+void UserMediaCaptureManager::applyConstraintsSucceeded(RealtimeMediaSourceIdentifier id, const WebCore::RealtimeMediaSourceSettings& settings)
 {
     if (auto source = m_sources.get(id))
         source->applyConstraintsSucceeded(settings);
 }
 
-void UserMediaCaptureManager::applyConstraintsFailed(uint64_t id, String&& failedConstraint, String&& message)
+void UserMediaCaptureManager::applyConstraintsFailed(RealtimeMediaSourceIdentifier id, String&& failedConstraint, String&& message)
 {
     if (auto source = m_sources.get(id))
         source->applyConstraintsFailed(WTFMove(failedConstraint), WTFMove(message));
@@ -452,12 +446,12 @@
 
 Ref<RealtimeMediaSource> UserMediaCaptureManager::cloneVideoSource(Source& source)
 {
-    uint64_t id = nextSessionID();
+    auto id = RealtimeMediaSourceIdentifier::generate();
     if (!m_process.send(Messages::UserMediaCaptureManagerProxy::Clone { source.sourceID(), id }, 0))
         return makeRef(source);
 
     auto settings = source.settings();
-    auto cloneSource = adoptRef(*new Source(String::number(id), source.type(), source.deviceType(), String { settings.label().string() }, source.deviceIDHashSalt(), id, *this));
+    auto cloneSource = adoptRef(*new Source(String::number(id.toUInt64()), source.type(), source.deviceType(), String { settings.label().string() }, source.deviceIDHashSalt(), id, *this));
     cloneSource->setSettings(WTFMove(settings));
     m_sources.add(id, cloneSource.copyRef());
     return cloneSource;

Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h (255132 => 255133)


--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h	2020-01-26 22:47:06 UTC (rev 255133)
@@ -33,6 +33,7 @@
 #include <WebCore/CaptureDeviceManager.h>
 #include <WebCore/RealtimeMediaSource.h>
 #include <WebCore/RealtimeMediaSourceFactory.h>
+#include <WebCore/RealtimeMediaSourceIdentifier.h>
 #include <wtf/HashMap.h>
 
 namespace WebCore {
@@ -118,31 +119,25 @@
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
 
     // Messages::UserMediaCaptureManager
-    void captureFailed(uint64_t id);
-    void sourceStopped(uint64_t id);
-    void sourceEnded(uint64_t id);
-    void sourceMutedChanged(uint64_t id, bool muted);
-    void sourceSettingsChanged(uint64_t id, const WebCore::RealtimeMediaSourceSettings&);
-    void storageChanged(uint64_t id, const SharedMemory::Handle&, const WebCore::CAAudioStreamDescription&, uint64_t numberOfFrames);
-    void ringBufferFrameBoundsChanged(uint64_t id, uint64_t startFrame, uint64_t endFrame);
-    void audioSamplesAvailable(uint64_t id, MediaTime, uint64_t numberOfFrames, uint64_t startFrame, uint64_t endFrame);
-    void remoteVideoSampleAvailable(uint64_t id, WebCore::RemoteVideoSample&&);
+    void captureFailed(WebCore::RealtimeMediaSourceIdentifier);
+    void sourceStopped(WebCore::RealtimeMediaSourceIdentifier);
+    void sourceEnded(WebCore::RealtimeMediaSourceIdentifier);
+    void sourceMutedChanged(WebCore::RealtimeMediaSourceIdentifier, bool muted);
+    void sourceSettingsChanged(WebCore::RealtimeMediaSourceIdentifier, const WebCore::RealtimeMediaSourceSettings&);
+    void storageChanged(WebCore::RealtimeMediaSourceIdentifier, const SharedMemory::Handle&, const WebCore::CAAudioStreamDescription&, uint64_t numberOfFrames);
+    void ringBufferFrameBoundsChanged(WebCore::RealtimeMediaSourceIdentifier, uint64_t startFrame, uint64_t endFrame);
+    void audioSamplesAvailable(WebCore::RealtimeMediaSourceIdentifier, MediaTime, uint64_t numberOfFrames, uint64_t startFrame, uint64_t endFrame);
+    void remoteVideoSampleAvailable(WebCore::RealtimeMediaSourceIdentifier, WebCore::RemoteVideoSample&&);
+    void applyConstraintsSucceeded(WebCore::RealtimeMediaSourceIdentifier, const WebCore::RealtimeMediaSourceSettings&);
+    void applyConstraintsFailed(WebCore::RealtimeMediaSourceIdentifier, String&&, String&&);
 
-    void startProducingData(uint64_t);
-    void stopProducingData(uint64_t);
-    WebCore::RealtimeMediaSourceCapabilities capabilities(uint64_t);
-    void applyConstraints(uint64_t, const WebCore::MediaConstraints&);
-    void applyConstraintsSucceeded(uint64_t, const WebCore::RealtimeMediaSourceSettings&);
-    void applyConstraintsFailed(uint64_t, String&&, String&&);
-
     class Source;
     friend class Source;
 
-    void requestToEnd(uint64_t sourceID);
     Ref<WebCore::RealtimeMediaSource> cloneSource(Source&);
     Ref<WebCore::RealtimeMediaSource> cloneVideoSource(Source&);
 
-    HashMap<uint64_t, RefPtr<Source>> m_sources;
+    HashMap<WebCore::RealtimeMediaSourceIdentifier, Ref<Source>> m_sources;
     WebProcess& m_process;
     NoOpCaptureDeviceManager m_noOpCaptureDeviceManager;
     AudioFactory m_audioFactory;

Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.messages.in (255132 => 255133)


--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.messages.in	2020-01-26 22:15:17 UTC (rev 255132)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.messages.in	2020-01-26 22:47:06 UTC (rev 255133)
@@ -24,15 +24,15 @@
 #if ENABLE(MEDIA_STREAM)
 
 messages -> UserMediaCaptureManager NotRefCounted {
-    CaptureFailed(uint64_t id)
-    SourceStopped(uint64_t id)
-    SourceMutedChanged(uint64_t id, bool muted)
-    SourceSettingsChanged(uint64_t id, WebCore::RealtimeMediaSourceSettings settings)
-    StorageChanged(uint64_t id, WebKit::SharedMemory::Handle storageHandle, WebCore::CAAudioStreamDescription description, uint64_t numberOfFrames)
-    AudioSamplesAvailable(uint64_t id, MediaTime time, uint64_t numberOfFrames, uint64_t startFrame, uint64_t endFrame)
-    ApplyConstraintsSucceeded(uint64_t id, WebCore::RealtimeMediaSourceSettings settings)
-    ApplyConstraintsFailed(uint64_t id, String failedConstraint, String message)
-    RemoteVideoSampleAvailable(uint64_t id, WebCore::RemoteVideoSample sample)
+    CaptureFailed(WebCore::RealtimeMediaSourceIdentifier id)
+    SourceStopped(WebCore::RealtimeMediaSourceIdentifier id)
+    SourceMutedChanged(WebCore::RealtimeMediaSourceIdentifier id, bool muted)
+    SourceSettingsChanged(WebCore::RealtimeMediaSourceIdentifier id, WebCore::RealtimeMediaSourceSettings settings)
+    StorageChanged(WebCore::RealtimeMediaSourceIdentifier id, WebKit::SharedMemory::Handle storageHandle, WebCore::CAAudioStreamDescription description, uint64_t numberOfFrames)
+    AudioSamplesAvailable(WebCore::RealtimeMediaSourceIdentifier id, MediaTime time, uint64_t numberOfFrames, uint64_t startFrame, uint64_t endFrame)
+    ApplyConstraintsSucceeded(WebCore::RealtimeMediaSourceIdentifier id, WebCore::RealtimeMediaSourceSettings settings)
+    ApplyConstraintsFailed(WebCore::RealtimeMediaSourceIdentifier id, String failedConstraint, String message)
+    RemoteVideoSampleAvailable(WebCore::RealtimeMediaSourceIdentifier id, WebCore::RemoteVideoSample sample)
 }
 
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to