Title: [274213] trunk/Source/WebKit
Revision
274213
Author
[email protected]
Date
2021-03-10 06:57:46 -0800 (Wed, 10 Mar 2021)

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

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (274212 => 274213)


--- trunk/Source/WebKit/ChangeLog	2021-03-10 14:53:56 UTC (rev 274212)
+++ trunk/Source/WebKit/ChangeLog	2021-03-10 14:57:46 UTC (rev 274213)
@@ -1,5 +1,22 @@
 2021-03-10  Youenn Fablet  <[email protected]>
 
+        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):
+
+2021-03-10  Youenn Fablet  <[email protected]>
+
         Remove getUserMedia denied requests if user grants a new getUserMedia request
         https://bugs.webkit.org/show_bug.cgi?id=222962
         <rdar://74805451>

Modified: trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp (274212 => 274213)


--- trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp	2021-03-10 14:53:56 UTC (rev 274212)
+++ trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp	2021-03-10 14:57:46 UTC (rev 274213)
@@ -260,6 +260,11 @@
 }
 
 #if ENABLE(MEDIA_STREAM)
+static bool doesPageNeedTCCD(const WebPageProxy& page)
+{
+    return (!page.preferences().captureAudioInGPUProcessEnabled() && !page.preferences().captureAudioInUIProcessEnabled()) || !page.preferences().captureVideoInGPUProcessEnabled();
+}
+
 void UserMediaPermissionRequestManagerProxy::finishGrantingRequest(UserMediaPermissionRequestProxy& request)
 {
     ALWAYS_LOG(LOGIDENTIFIER, request.userMediaID());
@@ -285,7 +290,7 @@
 
         SandboxExtension::Handle handle;
 #if PLATFORM(COCOA)
-        if (!m_hasCreatedSandboxExtensionForTCCD) {
+        if (!m_hasCreatedSandboxExtensionForTCCD && doesPageNeedTCCD(m_page)) {
             SandboxExtension::createHandleForMachLookup("com.apple.tccd"_s, m_page.process().connection()->getAuditToken(), handle);
             m_hasCreatedSandboxExtensionForTCCD = true;
         }

Modified: trunk/Source/WebKit/UIProcess/UserMediaProcessManager.cpp (274212 => 274213)


--- trunk/Source/WebKit/UIProcess/UserMediaProcessManager.cpp	2021-03-10 14:53:56 UTC (rev 274212)
+++ trunk/Source/WebKit/UIProcess/UserMediaProcessManager.cpp	2021-03-10 14:57:46 UTC (rev 274213)
@@ -83,11 +83,11 @@
     auto& process = proxy.page().process();
     size_t extensionCount = 0;
 
-    bool needsAudioSandboxExtension = withAudio && !process.hasAudioCaptureExtension() && !proxy.page().preferences().captureAudioInUIProcessEnabled();
+    bool needsAudioSandboxExtension = withAudio && !process.hasAudioCaptureExtension() && !proxy.page().preferences().captureAudioInUIProcessEnabled() && !proxy.page().preferences().captureAudioInGPUProcessEnabled();
     if (needsAudioSandboxExtension)
         extensionCount++;
 
-    bool needsVideoSandboxExtension = withVideo && !process.hasVideoCaptureExtension() && !proxy.page().preferences().captureVideoInUIProcessEnabled();
+    bool needsVideoSandboxExtension = withVideo && !process.hasVideoCaptureExtension() && !proxy.page().preferences().captureVideoInUIProcessEnabled() && !proxy.page().preferences().captureVideoInGPUProcessEnabled();
     if (needsVideoSandboxExtension)
         extensionCount++;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to