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