⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 274213 in webkit


Ignore:
Timestamp:
Mar 10, 2021, 6:57:46 AM (6 years ago)
Author:
youenn@apple.com
Message:

Do not send sandbox extensions to WebProcess if capture happens in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=222961

Reviewed by Eric Carlson.

In case capture does not happen in WebProcess, we do not need to send the tccd sandbox extension.
Ditto for camera/microphone sandbox extensions if capture happens in GPUProcess.
Manually tested.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::c):
(WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest):

  • UIProcess/UserMediaProcessManager.cpp:

(WebKit::UserMediaProcessManager::willCreateMediaStream):

Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r274206 r274213  
     12021-03-10  Youenn Fablet  <youenn@apple.com>
     2
     3        Do not send sandbox extensions to WebProcess if capture happens in GPUProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=222961
     5
     6        Reviewed by Eric Carlson.
     7
     8        In case capture does not happen in WebProcess, we do not need to send the tccd sandbox extension.
     9        Ditto for camera/microphone sandbox extensions if capture happens in GPUProcess.
     10        Manually tested.
     11
     12        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
     13        (WebKit::c):
     14        (WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest):
     15        * UIProcess/UserMediaProcessManager.cpp:
     16        (WebKit::UserMediaProcessManager::willCreateMediaStream):
     17
    1182021-03-10  Youenn Fablet  <youenn@apple.com>
    219
  • trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp

    r274206 r274213  
    261261
    262262#if ENABLE(MEDIA_STREAM)
     263static bool doesPageNeedTCCD(const WebPageProxy& page)
     264{
     265    return (!page.preferences().captureAudioInGPUProcessEnabled() && !page.preferences().captureAudioInUIProcessEnabled()) || !page.preferences().captureVideoInGPUProcessEnabled();
     266}
     267
    263268void UserMediaPermissionRequestManagerProxy::finishGrantingRequest(UserMediaPermissionRequestProxy& request)
    264269{
     
    286291        SandboxExtension::Handle handle;
    287292#if PLATFORM(COCOA)
    288         if (!m_hasCreatedSandboxExtensionForTCCD) {
     293        if (!m_hasCreatedSandboxExtensionForTCCD && doesPageNeedTCCD(m_page)) {
    289294            SandboxExtension::createHandleForMachLookup("com.apple.tccd"_s, m_page.process().connection()->getAuditToken(), handle);
    290295            m_hasCreatedSandboxExtensionForTCCD = true;
  • trunk/Source/WebKit/UIProcess/UserMediaProcessManager.cpp

    r271471 r274213  
    8484    size_t extensionCount = 0;
    8585
    86     bool needsAudioSandboxExtension = withAudio && !process.hasAudioCaptureExtension() && !proxy.page().preferences().captureAudioInUIProcessEnabled();
     86    bool needsAudioSandboxExtension = withAudio && !process.hasAudioCaptureExtension() && !proxy.page().preferences().captureAudioInUIProcessEnabled() && !proxy.page().preferences().captureAudioInGPUProcessEnabled();
    8787    if (needsAudioSandboxExtension)
    8888        extensionCount++;
    8989
    90     bool needsVideoSandboxExtension = withVideo && !process.hasVideoCaptureExtension() && !proxy.page().preferences().captureVideoInUIProcessEnabled();
     90    bool needsVideoSandboxExtension = withVideo && !process.hasVideoCaptureExtension() && !proxy.page().preferences().captureVideoInUIProcessEnabled() && !proxy.page().preferences().captureVideoInGPUProcessEnabled();
    9191    if (needsVideoSandboxExtension)
    9292        extensionCount++;
Note: See TracChangeset for help on using the changeset viewer.