Changeset 286037 in webkit
- Timestamp:
- Nov 18, 2021, 3:54:17 PM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 2 added
- 11 edited
-
ChangeLog (modified) (1 diff)
-
GPUProcess/GPUProcess.h (modified) (2 diffs)
-
GPUProcess/GPUProcess.messages.in (modified) (1 diff)
-
GPUProcess/cocoa/GPUProcessCocoa.mm (modified) (2 diffs)
-
GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in (modified) (1 diff)
-
Shared/Cocoa/AudioComponentRegistration.cpp (added)
-
Shared/Cocoa/AudioComponentRegistration.h (added)
-
UIProcess/Cocoa/WebProcessProxyCocoa.mm (modified) (3 diffs)
-
UIProcess/GPU/GPUProcessProxy.cpp (modified) (2 diffs)
-
UIProcess/WebProcessPool.cpp (modified) (2 diffs)
-
UIProcess/WebProcessProxy.h (modified) (1 diff)
-
WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in (modified) (1 diff)
-
WebKit.xcodeproj/project.pbxproj (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r286032 r286037 1 2021-11-18 Per Arne Vollan <pvollan@apple.com> 2 3 [macOS][GPUP] Remove access in sandbox to com.apple.audio.AudioComponentRegistrar 4 https://bugs.webkit.org/show_bug.cgi?id=231694 5 <rdar://75225923> 6 7 Reviewed by Brent Fulgham. 8 9 After https://trac.webkit.org/changeset/274435/webkit, there is no need to allow access to this service. This patch also implements sending 10 the Audio component registrations to the GPU process, which is a requirement before blocking the service in the GPU process. 11 12 * GPUProcess/GPUProcess.h: 13 * GPUProcess/GPUProcess.messages.in: 14 * GPUProcess/cocoa/GPUProcessCocoa.mm: 15 (WebKit::GPUProcess::consumeAudioComponentRegistrations): 16 * GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in: 17 * Shared/Cocoa/AudioComponentRegistration.cpp: Added. 18 (WebKit::consumeAudioComponentRegistrations): 19 * Shared/Cocoa/AudioComponentRegistration.h: Added. 20 (WebKit::sendAudioComponentRegistrations): 21 * UIProcess/Cocoa/WebProcessProxyCocoa.mm: 22 (WebKit::WebProcessProxy::sendAudioComponentRegistrations): Deleted. 23 * UIProcess/GPU/GPUProcessProxy.cpp: 24 (WebKit::GPUProcessProxy::didFinishLaunching): 25 * UIProcess/WebProcessPool.cpp: 26 (WebKit::WebProcessPool::initializeNewWebProcess): 27 * UIProcess/WebProcessProxy.h: 28 (WebKit::WebProcessProxy::revokeAudioCaptureExtension): 29 * WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in: 30 * WebKit.xcodeproj/project.pbxproj: 31 * WebProcess/cocoa/WebProcessCocoa.mm: 32 (WebKit::WebProcess::consumeAudioComponentRegistrations): 33 1 34 2021-11-18 Per Arne Vollan <pvollan@apple.com> 2 35 -
trunk/Source/WebKit/GPUProcess/GPUProcess.h
r285479 r286037 29 29 30 30 #include "AuxiliaryProcess.h" 31 #include "DataReference.h" 31 32 #include "SandboxExtension.h" 32 33 #include "WebPageProxyIdentifier.h" … … 109 110 110 111 const String& applicationVisibleName() const { return m_applicationVisibleName; } 112 113 #if PLATFORM(COCOA) 114 void consumeAudioComponentRegistrations(const IPC::DataReference&); 115 #endif 111 116 112 117 void webProcessConnectionCountForTesting(CompletionHandler<void(uint64_t)>&&); -
trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in
r285479 r286037 77 77 #endif 78 78 79 #if PLATFORM(COCOA) 80 ConsumeAudioComponentRegistrations(IPC::SharedBufferDataReference registrationData) 81 #endif 82 79 83 WebProcessConnectionCountForTesting() -> (uint64_t count) Async 80 84 } -
trunk/Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm
r285479 r286037 31 31 #if ENABLE(GPU_PROCESS) && PLATFORM(COCOA) 32 32 33 #import "AudioComponentRegistration.h" 33 34 #import "GPUConnectionToWebProcess.h" 34 35 #import "RemoteRenderingBackend.h" … … 76 77 #endif // ENABLE(CFPREFS_DIRECT_MODE) 77 78 79 void GPUProcess::consumeAudioComponentRegistrations(const IPC::DataReference& data) 80 { 81 WebKit::consumeAudioComponentRegistrations(data); 82 } 83 78 84 } // namespace WebKit 79 85 -
trunk/Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in
r286031 r286037 629 629 (ipc-posix-name-prefix "AudioIO")) 630 630 631 #if __MAC_OS_X_VERSION_MIN_REQUIRED < 120000 631 632 (allow mach-lookup 632 633 (global-name "com.apple.audio.AudioComponentRegistrar")) 634 #endif 633 635 634 636 #if !ENABLE(CFPREFS_DIRECT_MODE) -
trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm
r285479 r286037 40 40 #import "WebProcessPool.h" 41 41 #import <WebCore/RuntimeApplicationChecks.h> 42 #import <WebCore/WebMAudioUtilitiesCocoa.h>43 42 #import <sys/sysctl.h> 44 43 #import <wtf/NeverDestroyed.h> … … 65 64 #endif 66 65 67 #import <pal/cf/AudioToolboxSoftLink.h>68 69 66 namespace WebKit { 70 67 … … 290 287 #endif 291 288 292 void WebProcessProxy::sendAudioComponentRegistrations()293 {294 using namespace PAL;295 296 if (!PAL::isAudioToolboxCoreFrameworkAvailable() || !PAL::canLoad_AudioToolboxCore_AudioComponentFetchServerRegistrations())297 return;298 299 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), [weakThis = WeakPtr { *this }] () mutable {300 CFDataRef registrations { nullptr };301 302 WebCore::registerOpusDecoderIfNeeded();303 WebCore::registerVorbisDecoderIfNeeded();304 if (noErr != AudioComponentFetchServerRegistrations(®istrations) || !registrations)305 return;306 307 RunLoop::main().dispatch([weakThis = WTFMove(weakThis), registrations = adoptCF(registrations)] () mutable {308 if (!weakThis)309 return;310 311 auto registrationData = WebCore::SharedBuffer::create(registrations.get());312 weakThis->send(Messages::WebProcess::ConsumeAudioComponentRegistrations({ registrationData }), 0);313 });314 });315 }316 317 289 bool WebProcessProxy::messageSourceIsValidWebContentProcess() 318 290 { -
trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
r285479 r286037 64 64 #endif 65 65 66 #if PLATFORM(COCOA) 67 #include "AudioComponentRegistration.h" 68 #endif 69 66 70 #define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, this->connection()) 67 71 … … 440 444 441 445 #if PLATFORM(COCOA) 446 sendAudioComponentRegistrations<Messages::GPUProcess::ConsumeAudioComponentRegistrations>(*this); 447 442 448 // Use any session ID to get any Website data store. It is OK to use any Website data store, 443 449 // since we are using it to access any Networking process, which all have the XPC endpoint. -
trunk/Source/WebKit/UIProcess/WebProcessPool.cpp
r286012 r286037 131 131 132 132 #if PLATFORM(COCOA) 133 #include "AudioComponentRegistration.h" 133 134 #include "DefaultWebBrowserChecks.h" 134 135 #include <WebCore/GameControllerGamepadProvider.h> … … 879 880 880 881 #if PLATFORM(COCOA) 881 process.sendAudioComponentRegistrations();882 sendAudioComponentRegistrations<Messages::WebProcess::ConsumeAudioComponentRegistrations>(process); 882 883 #endif 883 884 -
trunk/Source/WebKit/UIProcess/WebProcessProxy.h
r286012 r286037 340 340 void grantAudioCaptureExtension() { m_mediaCaptureSandboxExtensions |= Audio; } 341 341 void revokeAudioCaptureExtension() { m_mediaCaptureSandboxExtensions &= ~Audio; } 342 343 void sendAudioComponentRegistrations();344 342 #endif 345 343 -
trunk/Source/WebKit/WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in
r285612 r286037 327 327 (with report) (with telemetry) 328 328 #endif 329 (global-name "com.apple.audio.AudioComponentRegistrar")330 329 (global-name "com.apple.awdd") 331 330 #if !ENABLE(CFPREFS_DIRECT_MODE) -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r286019 r286037 1946 1946 E39628DD23960CC600658ECD /* WebDeviceOrientationUpdateProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E39628DB23960CC500658ECD /* WebDeviceOrientationUpdateProvider.h */; }; 1947 1947 E39628DE23960CC600658ECD /* WebDeviceOrientationUpdateProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E39628DC23960CC600658ECD /* WebDeviceOrientationUpdateProvider.cpp */; }; 1948 E3C2396D2721C9C200E37537 /* AudioComponentRegistration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3C2396B2721C9C100E37537 /* AudioComponentRegistration.cpp */; }; 1949 E3C2396E2721C9C200E37537 /* AudioComponentRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = E3C2396C2721C9C200E37537 /* AudioComponentRegistration.h */; }; 1948 1950 E3CAAA442413279900CED2E2 /* AccessibilitySupportSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = E3CAAA432413278A00CED2E2 /* AccessibilitySupportSPI.h */; }; 1949 1951 E413F59D1AC1ADC400345360 /* NetworkCacheEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = E413F59B1AC1ADB600345360 /* NetworkCacheEntry.h */; }; … … 6057 6059 E3BCE877267252120011D8DB /* AccessibilityPreferences.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityPreferences.cpp; sourceTree = "<group>"; }; 6058 6060 E3BCE878267252120011D8DB /* AccessibilityPreferences.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccessibilityPreferences.h; sourceTree = "<group>"; }; 6061 E3C2396B2721C9C100E37537 /* AudioComponentRegistration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioComponentRegistration.cpp; sourceTree = "<group>"; }; 6062 E3C2396C2721C9C200E37537 /* AudioComponentRegistration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioComponentRegistration.h; sourceTree = "<group>"; }; 6059 6063 E3CAAA432413278A00CED2E2 /* AccessibilitySupportSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilitySupportSPI.h; sourceTree = "<group>"; }; 6060 6064 E3EFB02C2550617C003C2F96 /* WebSystemSoundDelegate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebSystemSoundDelegate.cpp; sourceTree = "<group>"; }; … … 8553 8557 A175C44921AA3170000037D0 /* ArgumentCodersCocoa.h */, 8554 8558 A175C44B21AA331B000037D0 /* ArgumentCodersCocoa.mm */, 8559 E3C2396B2721C9C100E37537 /* AudioComponentRegistration.cpp */, 8560 E3C2396C2721C9C200E37537 /* AudioComponentRegistration.h */, 8555 8561 1A698F171E4910220064E881 /* AuxiliaryProcessCocoa.mm */, 8556 8562 CE11AD511CBC482F00681EE5 /* CodeSigning.h */, … … 12313 12319 AAFA634F234F7C6400FFA864 /* AsyncRevalidation.h in Headers */, 12314 12320 BCEE966D112FAF57006BCC24 /* Attachment.h in Headers */, 12321 E3C2396E2721C9C200E37537 /* AudioComponentRegistration.h in Headers */, 12315 12322 512F589712A8838800629530 /* AuthenticationChallengeProxy.h in Headers */, 12316 12323 512F589912A8838800629530 /* AuthenticationDecisionListener.h in Headers */, … … 14583 14590 2DEB1D2E2127473600933906 /* ArgumentCodersCF.cpp in Sources */, 14584 14591 2D92A77C212B6A7100F493FD /* Attachment.cpp in Sources */, 14592 E3C2396D2721C9C200E37537 /* AudioComponentRegistration.cpp in Sources */, 14585 14593 CD4570D424411D0F00A3DCEB /* AudioSessionRoutingArbitrator.cpp in Sources */, 14586 14594 CD4570D3244113B500A3DCEB /* AudioSessionRoutingArbitratorProxyMessageReceiver.cpp in Sources */,
Note:
See TracChangeset
for help on using the changeset viewer.