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