Changeset 273212 in webkit


Ignore:
Timestamp:
Feb 20, 2021 5:06:59 PM (3 years ago)
Author:
youenn@apple.com
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:
Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r273211 r273212  
     12021-02-20  Youenn Fablet  <youenn@apple.com>
     2
     3        Add support for adding/removing/clearing mock devices in GPUProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=222174
     5
     6        Reviewed by Eric Carlson.
     7
     8        * fast/mediastream/device-change-event-2.html:
     9
    1102021-02-20  Sam Weinig  <weinig@apple.com>
    211
  • trunk/LayoutTests/fast/mediastream/device-change-event-2.html

    r267246 r273212  
    7070        assert_equals(devices[0].label, "my mic");
    7171
     72        const micStream = await navigator.mediaDevices.getUserMedia({ audio : { deviceId : "id2" } });
     73        assert_equals(micStream.getAudioTracks()[0].label, "my mic");
    7274    }, "'devicechange' event fired when device list changes");
    7375
  • trunk/Source/WebKit/ChangeLog

    r273209 r273212  
     12021-02-20  Youenn Fablet  <youenn@apple.com>
     2
     3        Add support for adding/removing/clearing mock devices in GPUProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=222174
     5
     6        Reviewed by Eric Carlson.
     7
     8        Make sure to forward mock device orders to GPU process so that it is kept in sync with UIProcess.
     9        Covered by updated test.
     10
     11        * GPUProcess/GPUProcess.cpp:
     12        (WebKit::GPUProcess::addMockMediaDevice):
     13        (WebKit::GPUProcess::clearMockMediaDevices):
     14        (WebKit::GPUProcess::removeMockMediaDevice):
     15        (WebKit::GPUProcess::resetMockMediaDevices):
     16        * GPUProcess/GPUProcess.h:
     17        * GPUProcess/GPUProcess.messages.in:
     18        * UIProcess/GPU/GPUProcessProxy.cpp:
     19        (WebKit::GPUProcessProxy::addMockMediaDevice):
     20        (WebKit::GPUProcessProxy::clearMockMediaDevices):
     21        (WebKit::GPUProcessProxy::removeMockMediaDevice):
     22        (WebKit::GPUProcessProxy::resetMockMediaDevices):
     23        * UIProcess/GPU/GPUProcessProxy.h:
     24        * UIProcess/WebProcessPool.cpp:
     25        (WebKit::WebProcessPool::addMockMediaDevice):
     26        (WebKit::WebProcessPool::clearMockMediaDevices):
     27        (WebKit::WebProcessPool::removeMockMediaDevice):
     28        (WebKit::WebProcessPool::resetMockMediaDevices):
     29
    1302021-02-20  Jiewen Tan  <jiewen_tan@apple.com>
    231
  • trunk/Source/WebKit/GPUProcess/GPUProcess.cpp

    r272888 r273212  
    229229    completionHandler();
    230230}
     231
     232void GPUProcess::addMockMediaDevice(const WebCore::MockMediaDevice& device)
     233{
     234    MockRealtimeMediaSourceCenter::addDevice(device);
     235}
     236
     237void GPUProcess::clearMockMediaDevices()
     238{
     239    MockRealtimeMediaSourceCenter::setDevices({ });
     240}
     241
     242void GPUProcess::removeMockMediaDevice(const String& persistentId)
     243{
     244    MockRealtimeMediaSourceCenter::removeDevice(persistentId);
     245}
     246
     247void GPUProcess::resetMockMediaDevices()
     248{
     249    MockRealtimeMediaSourceCenter::resetDevices();
     250}
    231251#endif
    232252
  • trunk/Source/WebKit/GPUProcess/GPUProcess.h

    r271526 r273212  
    3838namespace WebCore {
    3939class NowPlayingManager;
     40struct MockMediaDevice;
    4041}
    4142
     
    112113    void setOrientationForMediaCapture(uint64_t orientation);
    113114    void updateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier, CompletionHandler<void()>&&);
     115    void addMockMediaDevice(const WebCore::MockMediaDevice&);
     116    void clearMockMediaDevices();
     117    void removeMockMediaDevice(const String& persistentId);
     118    void resetMockMediaDevices();
    114119#endif
    115120
  • trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in

    r269690 r273212  
    4141    SetOrientationForMediaCapture(uint64_t orientation);
    4242    UpdateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier processID) -> () Async
     43    AddMockMediaDevice(struct WebCore::MockMediaDevice device);
     44    ClearMockMediaDevices();
     45    RemoveMockMediaDevice(String persistentId);
     46    ResetMockMediaDevices();
    4347#endif
    4448}
  • trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp

    r271482 r273212  
    189189    sendWithAsyncReply(Messages::GPUProcess::UpdateCaptureAccess { allowAudioCapture, allowVideoCapture, allowDisplayCapture, processID }, WTFMove(completionHandler));
    190190}
     191
     192
     193void GPUProcessProxy::addMockMediaDevice(const WebCore::MockMediaDevice& device)
     194{
     195    send(Messages::GPUProcess::AddMockMediaDevice { device }, 0);
     196}
     197
     198void GPUProcessProxy::clearMockMediaDevices()
     199{
     200    send(Messages::GPUProcess::ClearMockMediaDevices { }, 0);
     201}
     202
     203void GPUProcessProxy::removeMockMediaDevice(const String& persistentId)
     204{
     205    send(Messages::GPUProcess::RemoveMockMediaDevice { persistentId }, 0);
     206}
     207
     208void GPUProcessProxy::resetMockMediaDevices()
     209{
     210    send(Messages::GPUProcess::ResetMockMediaDevices { }, 0);
     211}
    191212#endif
    192213
  • trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h

    r270415 r273212  
    4242#endif
    4343
     44namespace WebCore {
     45struct MockMediaDevice;
     46}
     47
    4448namespace WebKit {
    4549
     
    6670    void setOrientationForMediaCapture(uint64_t orientation);
    6771    void updateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier, CompletionHandler<void()>&&);
     72
     73    void addMockMediaDevice(const WebCore::MockMediaDevice&);
     74    void clearMockMediaDevices();
     75    void removeMockMediaDevice(const String&);
     76    void resetMockMediaDevices();
    6877#endif
    6978
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r273183 r273212  
    19051905    MockRealtimeMediaSourceCenter::addDevice(device);
    19061906    sendToAllProcesses(Messages::WebProcess::AddMockMediaDevice { device });
     1907#if ENABLE(GPU_PROCESS)
     1908    ensureGPUProcess().addMockMediaDevice(device);
     1909#endif
    19071910#endif
    19081911}
     
    19131916    MockRealtimeMediaSourceCenter::setDevices({ });
    19141917    sendToAllProcesses(Messages::WebProcess::ClearMockMediaDevices { });
     1918#if ENABLE(GPU_PROCESS)
     1919    ensureGPUProcess().clearMockMediaDevices();
     1920#endif
    19151921#endif
    19161922}
     
    19211927    MockRealtimeMediaSourceCenter::removeDevice(persistentId);
    19221928    sendToAllProcesses(Messages::WebProcess::RemoveMockMediaDevice { persistentId });
     1929#if ENABLE(GPU_PROCESS)
     1930    ensureGPUProcess().removeMockMediaDevice(persistentId);
     1931#endif
    19231932#endif
    19241933}
     
    19291938    MockRealtimeMediaSourceCenter::resetDevices();
    19301939    sendToAllProcesses(Messages::WebProcess::ResetMockMediaDevices { });
     1940#if ENABLE(GPU_PROCESS)
     1941    ensureGPUProcess().resetMockMediaDevices();
     1942#endif
    19311943#endif
    19321944}
Note: See TracChangeset for help on using the changeset viewer.