Diff
Modified: trunk/LayoutTests/ChangeLog (273211 => 273212)
--- trunk/LayoutTests/ChangeLog 2021-02-21 00:47:59 UTC (rev 273211)
+++ trunk/LayoutTests/ChangeLog 2021-02-21 01:06:59 UTC (rev 273212)
@@ -1,3 +1,12 @@
+2021-02-20 Youenn Fablet <[email protected]>
+
+ Add support for adding/removing/clearing mock devices in GPUProcess
+ https://bugs.webkit.org/show_bug.cgi?id=222174
+
+ Reviewed by Eric Carlson.
+
+ * fast/mediastream/device-change-event-2.html:
+
2021-02-20 Sam Weinig <[email protected]>
color(lab ...) should serialize as color(lab ...) not lab() according to latest CSS Color 4 spec
Modified: trunk/LayoutTests/fast/mediastream/device-change-event-2.html (273211 => 273212)
--- trunk/LayoutTests/fast/mediastream/device-change-event-2.html 2021-02-21 00:47:59 UTC (rev 273211)
+++ trunk/LayoutTests/fast/mediastream/device-change-event-2.html 2021-02-21 01:06:59 UTC (rev 273212)
@@ -69,6 +69,8 @@
assert_equals(devices[0].kind, "audioinput");
assert_equals(devices[0].label, "my mic");
+ const micStream = await navigator.mediaDevices.getUserMedia({ audio : { deviceId : "id2" } });
+ assert_equals(micStream.getAudioTracks()[0].label, "my mic");
}, "'devicechange' event fired when device list changes");
promise_test(async (test) => {
Modified: trunk/Source/WebKit/ChangeLog (273211 => 273212)
--- trunk/Source/WebKit/ChangeLog 2021-02-21 00:47:59 UTC (rev 273211)
+++ trunk/Source/WebKit/ChangeLog 2021-02-21 01:06:59 UTC (rev 273212)
@@ -1,3 +1,32 @@
+2021-02-20 Youenn Fablet <[email protected]>
+
+ Add support for adding/removing/clearing mock devices in GPUProcess
+ https://bugs.webkit.org/show_bug.cgi?id=222174
+
+ Reviewed by Eric Carlson.
+
+ Make sure to forward mock device orders to GPU process so that it is kept in sync with UIProcess.
+ Covered by updated test.
+
+ * GPUProcess/GPUProcess.cpp:
+ (WebKit::GPUProcess::addMockMediaDevice):
+ (WebKit::GPUProcess::clearMockMediaDevices):
+ (WebKit::GPUProcess::removeMockMediaDevice):
+ (WebKit::GPUProcess::resetMockMediaDevices):
+ * GPUProcess/GPUProcess.h:
+ * GPUProcess/GPUProcess.messages.in:
+ * UIProcess/GPU/GPUProcessProxy.cpp:
+ (WebKit::GPUProcessProxy::addMockMediaDevice):
+ (WebKit::GPUProcessProxy::clearMockMediaDevices):
+ (WebKit::GPUProcessProxy::removeMockMediaDevice):
+ (WebKit::GPUProcessProxy::resetMockMediaDevices):
+ * UIProcess/GPU/GPUProcessProxy.h:
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::addMockMediaDevice):
+ (WebKit::WebProcessPool::clearMockMediaDevices):
+ (WebKit::WebProcessPool::removeMockMediaDevice):
+ (WebKit::WebProcessPool::resetMockMediaDevices):
+
2021-02-20 Jiewen Tan <[email protected]>
PCM: Store and report source unlinkable tokens
Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.cpp (273211 => 273212)
--- trunk/Source/WebKit/GPUProcess/GPUProcess.cpp 2021-02-21 00:47:59 UTC (rev 273211)
+++ trunk/Source/WebKit/GPUProcess/GPUProcess.cpp 2021-02-21 01:06:59 UTC (rev 273212)
@@ -228,6 +228,26 @@
completionHandler();
}
+
+void GPUProcess::addMockMediaDevice(const WebCore::MockMediaDevice& device)
+{
+ MockRealtimeMediaSourceCenter::addDevice(device);
+}
+
+void GPUProcess::clearMockMediaDevices()
+{
+ MockRealtimeMediaSourceCenter::setDevices({ });
+}
+
+void GPUProcess::removeMockMediaDevice(const String& persistentId)
+{
+ MockRealtimeMediaSourceCenter::removeDevice(persistentId);
+}
+
+void GPUProcess::resetMockMediaDevices()
+{
+ MockRealtimeMediaSourceCenter::resetDevices();
+}
#endif
void GPUProcess::addSession(PAL::SessionID sessionID, GPUProcessSessionParameters&& parameters)
Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.h (273211 => 273212)
--- trunk/Source/WebKit/GPUProcess/GPUProcess.h 2021-02-21 00:47:59 UTC (rev 273211)
+++ trunk/Source/WebKit/GPUProcess/GPUProcess.h 2021-02-21 01:06:59 UTC (rev 273212)
@@ -37,6 +37,7 @@
namespace WebCore {
class NowPlayingManager;
+struct MockMediaDevice;
}
namespace WebKit {
@@ -111,6 +112,10 @@
void setMockCaptureDevicesEnabled(bool);
void setOrientationForMediaCapture(uint64_t orientation);
void updateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier, CompletionHandler<void()>&&);
+ void addMockMediaDevice(const WebCore::MockMediaDevice&);
+ void clearMockMediaDevices();
+ void removeMockMediaDevice(const String& persistentId);
+ void resetMockMediaDevices();
#endif
// Connections to WebProcesses.
Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in (273211 => 273212)
--- trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in 2021-02-21 00:47:59 UTC (rev 273211)
+++ trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in 2021-02-21 01:06:59 UTC (rev 273212)
@@ -40,6 +40,10 @@
SetMockCaptureDevicesEnabled(bool isEnabled)
SetOrientationForMediaCapture(uint64_t orientation);
UpdateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier processID) -> () Async
+ AddMockMediaDevice(struct WebCore::MockMediaDevice device);
+ ClearMockMediaDevices();
+ RemoveMockMediaDevice(String persistentId);
+ ResetMockMediaDevices();
#endif
}
Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (273211 => 273212)
--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2021-02-21 00:47:59 UTC (rev 273211)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2021-02-21 01:06:59 UTC (rev 273212)
@@ -188,6 +188,27 @@
{
sendWithAsyncReply(Messages::GPUProcess::UpdateCaptureAccess { allowAudioCapture, allowVideoCapture, allowDisplayCapture, processID }, WTFMove(completionHandler));
}
+
+
+void GPUProcessProxy::addMockMediaDevice(const WebCore::MockMediaDevice& device)
+{
+ send(Messages::GPUProcess::AddMockMediaDevice { device }, 0);
+}
+
+void GPUProcessProxy::clearMockMediaDevices()
+{
+ send(Messages::GPUProcess::ClearMockMediaDevices { }, 0);
+}
+
+void GPUProcessProxy::removeMockMediaDevice(const String& persistentId)
+{
+ send(Messages::GPUProcess::RemoveMockMediaDevice { persistentId }, 0);
+}
+
+void GPUProcessProxy::resetMockMediaDevices()
+{
+ send(Messages::GPUProcess::ResetMockMediaDevices { }, 0);
+}
#endif
void GPUProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOptions)
Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h (273211 => 273212)
--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h 2021-02-21 00:47:59 UTC (rev 273211)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h 2021-02-21 01:06:59 UTC (rev 273212)
@@ -41,6 +41,10 @@
#include "LayerHostingContext.h"
#endif
+namespace WebCore {
+struct MockMediaDevice;
+}
+
namespace WebKit {
class WebProcessProxy;
@@ -65,6 +69,11 @@
void setUseMockCaptureDevices(bool);
void setOrientationForMediaCapture(uint64_t orientation);
void updateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier, CompletionHandler<void()>&&);
+
+ void addMockMediaDevice(const WebCore::MockMediaDevice&);
+ void clearMockMediaDevices();
+ void removeMockMediaDevice(const String&);
+ void resetMockMediaDevices();
#endif
void removeSession(PAL::SessionID);
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (273211 => 273212)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2021-02-21 00:47:59 UTC (rev 273211)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2021-02-21 01:06:59 UTC (rev 273212)
@@ -1904,7 +1904,10 @@
#if ENABLE(MEDIA_STREAM)
MockRealtimeMediaSourceCenter::addDevice(device);
sendToAllProcesses(Messages::WebProcess::AddMockMediaDevice { device });
+#if ENABLE(GPU_PROCESS)
+ ensureGPUProcess().addMockMediaDevice(device);
#endif
+#endif
}
void WebProcessPool::clearMockMediaDevices()
@@ -1912,7 +1915,10 @@
#if ENABLE(MEDIA_STREAM)
MockRealtimeMediaSourceCenter::setDevices({ });
sendToAllProcesses(Messages::WebProcess::ClearMockMediaDevices { });
+#if ENABLE(GPU_PROCESS)
+ ensureGPUProcess().clearMockMediaDevices();
#endif
+#endif
}
void WebProcessPool::removeMockMediaDevice(const String& persistentId)
@@ -1920,7 +1926,10 @@
#if ENABLE(MEDIA_STREAM)
MockRealtimeMediaSourceCenter::removeDevice(persistentId);
sendToAllProcesses(Messages::WebProcess::RemoveMockMediaDevice { persistentId });
+#if ENABLE(GPU_PROCESS)
+ ensureGPUProcess().removeMockMediaDevice(persistentId);
#endif
+#endif
}
void WebProcessPool::resetMockMediaDevices()
@@ -1928,7 +1937,10 @@
#if ENABLE(MEDIA_STREAM)
MockRealtimeMediaSourceCenter::resetDevices();
sendToAllProcesses(Messages::WebProcess::ResetMockMediaDevices { });
+#if ENABLE(GPU_PROCESS)
+ ensureGPUProcess().resetMockMediaDevices();
#endif
+#endif
}
void WebProcessPool::sendDisplayConfigurationChangedMessageForTesting()