Skip to content

Commit 6edb769

Browse files
committed
[macOS] Create sandbox extension for AppleAVDUserClient when Media in GPU process is not enabled
https://bugs.webkit.org/show_bug.cgi?id=219740 <rdar://problem/70496905> Reviewed by Brent Fulgham. Create sandbox extension for AppleAVDUserClient for WebContent process when Media in GPU process is not enabled on macOS, since this IOKit class is only used for Media purposes. * GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in: * Shared/WebPageCreationParameters.cpp: (WebKit::WebPageCreationParameters::encode const): (WebKit::WebPageCreationParameters::decode): * Shared/WebPageCreationParameters.h: * UIProcess/WebPageProxy.cpp: (WebKit::mediaRelatedIOKitClasses): (WebKit::WebPageProxy::creationParameters): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_limitsNavigationsToAppBoundDomains): * WebProcess/com.apple.WebProcess.sb.in: Canonical link: https://commits.webkit.org/232321@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@270657 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 302e4d6 commit 6edb769

7 files changed

Lines changed: 53 additions & 1 deletion

File tree

Source/WebKit/ChangeLog

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1+
2020-12-10 Per Arne Vollan <pvollan@apple.com>
2+
3+
[macOS] Create sandbox extension for AppleAVDUserClient when Media in GPU process is not enabled
4+
https://bugs.webkit.org/show_bug.cgi?id=219740
5+
<rdar://problem/70496905>
6+
7+
Reviewed by Brent Fulgham.
8+
9+
Create sandbox extension for AppleAVDUserClient for WebContent process when Media in GPU process is not enabled on macOS,
10+
since this IOKit class is only used for Media purposes.
11+
12+
* GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
13+
* Shared/WebPageCreationParameters.cpp:
14+
(WebKit::WebPageCreationParameters::encode const):
15+
(WebKit::WebPageCreationParameters::decode):
16+
* Shared/WebPageCreationParameters.h:
17+
* UIProcess/WebPageProxy.cpp:
18+
(WebKit::mediaRelatedIOKitClasses):
19+
(WebKit::WebPageProxy::creationParameters):
20+
* WebProcess/WebPage/WebPage.cpp:
21+
(WebKit::m_limitsNavigationsToAppBoundDomains):
22+
* WebProcess/com.apple.WebProcess.sb.in:
23+
124
2020-12-10 Per Arne Vollan <pvollan@apple.com>
225

326
[macOS] Add telemetry for notification message filtering in sandbox

Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,3 +832,7 @@
832832
(allow mach-lookup
833833
(global-name "com.apple.relatived.tempest")
834834
)
835+
836+
(allow iokit-open
837+
(iokit-user-client-class "AppleAVDUserClient")
838+
)

Source/WebKit/Shared/WebPageCreationParameters.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ void WebPageCreationParameters::encode(IPC::Encoder& encoder) const
116116
encoder << additionalSupportedImageTypes;
117117
// FIXME(207716): The following should be removed when the GPU process is complete.
118118
encoder << mediaExtensionHandles;
119+
encoder << mediaIOKitExtensionHandles;
119120
encoder << gpuIOKitExtensionHandles;
120121
#endif
121122
#if HAVE(APP_ACCENT_COLORS)
@@ -375,6 +376,12 @@ Optional<WebPageCreationParameters> WebPageCreationParameters::decode(IPC::Decod
375376
if (!mediaExtensionHandles)
376377
return WTF::nullopt;
377378
parameters.mediaExtensionHandles = WTFMove(*mediaExtensionHandles);
379+
380+
Optional<SandboxExtension::HandleArray> mediaIOKitExtensionHandles;
381+
decoder >> mediaIOKitExtensionHandles;
382+
if (!mediaIOKitExtensionHandles)
383+
return WTF::nullopt;
384+
parameters.mediaIOKitExtensionHandles = WTFMove(*mediaIOKitExtensionHandles);
378385
// FIXME(207716): End region to remove.
379386

380387
Optional<SandboxExtension::HandleArray> gpuIOKitExtensionHandles;

Source/WebKit/Shared/WebPageCreationParameters.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ struct WebPageCreationParameters {
175175
bool smartInsertDeleteEnabled;
176176
Vector<String> additionalSupportedImageTypes;
177177
SandboxExtension::HandleArray mediaExtensionHandles; // FIXME(207716): Remove when GPU process is complete.
178+
SandboxExtension::HandleArray mediaIOKitExtensionHandles;
178179
SandboxExtension::HandleArray gpuIOKitExtensionHandles;
179180
#endif
180181
#if HAVE(APP_ACCENT_COLORS)

Source/WebKit/UIProcess/WebPageProxy.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7820,6 +7820,16 @@ static const Vector<ASCIILiteral>& mediaRelatedMachServices()
78207820
});
78217821
return services;
78227822
}
7823+
7824+
static const Vector<ASCIILiteral>& mediaRelatedIOKitClasses()
7825+
{
7826+
static const auto services = makeNeverDestroyed(Vector<ASCIILiteral> {
7827+
#if (PLATFORM(MAC) || PLATFORM(MACCATALYST)) && CPU(ARM64)
7828+
"AppleAVDUserClient"_s,
7829+
#endif
7830+
});
7831+
return services;
7832+
}
78237833
#endif
78247834

78257835
WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea, RefPtr<API::WebsitePolicies>&& websitePolicies)
@@ -7914,6 +7924,7 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc
79147924
if (needWebProcessExtensions) {
79157925
// FIXME(207716): The following should be removed when the GPU process is complete.
79167926
parameters.mediaExtensionHandles = SandboxExtension::createHandlesForMachLookup(mediaRelatedMachServices(), WTF::nullopt);
7927+
parameters.mediaIOKitExtensionHandles = SandboxExtension::createHandlesForIOKitClassExtensions(mediaRelatedIOKitClasses(), WTF::nullopt);
79177928
}
79187929

79197930
if (!preferences().useGPUProcessForMediaEnabled()

Source/WebKit/WebProcess/WebPage/WebPage.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,7 @@ WebPage::WebPage(PageIdentifier pageID, WebPageCreationParameters&& parameters)
589589
static bool hasConsumedMediaExtensionHandles = false;
590590
if (!hasConsumedMediaExtensionHandles && parameters.mediaExtensionHandles.size()) {
591591
SandboxExtension::consumePermanently(parameters.mediaExtensionHandles);
592+
SandboxExtension::consumePermanently(parameters.mediaIOKitExtensionHandles);
592593
hasConsumedMediaExtensionHandles = true;
593594
}
594595
static bool hasConsumedGPUIOKitExtensionHandles = false;

Source/WebKit/WebProcess/com.apple.WebProcess.sb.in

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -924,11 +924,16 @@
924924
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
925925
(with telemetry-backtrace)
926926
#endif
927-
(iokit-user-client-class "AppleAVDUserClient")
928927
(iokit-user-client-class "IOMobileFramebufferUserClient")
929928
(iokit-user-client-class "IOSurfaceAcceleratorClient") ;; <rdar://problem/63696732>
930929
(iokit-user-client-class "IOSurfaceRootUserClient") ;; <rdar://problem/63696732>
931930
)
931+
(allow iokit-open
932+
(require-all
933+
(extension "com.apple.webkit.extension.iokit")
934+
(iokit-user-client-class "AppleAVDUserClient")
935+
)
936+
)
932937
)
933938

934939
;; cookied.

0 commit comments

Comments
 (0)