Title: [273212] trunk
Revision
273212
Author
[email protected]
Date
2021-02-20 17:06:59 -0800 (Sat, 20 Feb 2021)

Log Message

Add support for adding/removing/clearing mock devices in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=222174

Reviewed by Eric Carlson.

Source/WebKit:

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):

LayoutTests:

* fast/mediastream/device-change-event-2.html:

Modified Paths

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()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to