[webkit-changes] [WebKit/WebKit] 79dad4: [iOS] It should be possible to change presentingAp...
aestes
noreply at github.com
Thu Dec 12 20:32:12 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 79dad443efe68f5aee4f3d4dd15cfa1232978c63
https://github.com/WebKit/WebKit/commit/79dad443efe68f5aee4f3d4dd15cfa1232978c63
Author: Andy Estes <aestes at apple.com>
Date: 2024-12-12 (Thu, 12 Dec 2024)
Changed paths:
M Source/WTF/wtf/RuntimeApplicationChecks.cpp
M Source/WTF/wtf/RuntimeApplicationChecks.h
M Source/WebCore/Modules/mediastream/UserMediaRequest.cpp
M Source/WebCore/Modules/webaudio/AudioContext.cpp
M Source/WebCore/Modules/webaudio/AudioContext.h
M Source/WebCore/accessibility/AccessibilityObject.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
M Source/WebCore/html/HTMLMediaElement.cpp
M Source/WebCore/html/HTMLMediaElement.h
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/Page.h
M Source/WebCore/page/PageConfiguration.h
M Source/WebCore/platform/audio/PlatformMediaSession.cpp
M Source/WebCore/platform/audio/PlatformMediaSession.h
M Source/WebCore/platform/audio/PlatformMediaSessionManager.h
M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h
M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm
M Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h
M Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm
M Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm
M Source/WebCore/platform/mediastream/ios/MediaCaptureStatusBarManager.mm
M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp
M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/GPUProcess.h
M Source/WebKit/GPUProcess/GPUProcess.messages.in
M Source/WebKit/GPUProcess/GPUProcessCreationParameters.h
M Source/WebKit/GPUProcess/GPUProcessCreationParameters.serialization.in
M Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp
M Source/WebKit/GPUProcess/media/ios/RemoteMediaSessionHelperProxy.cpp
M Source/WebKit/GPUProcess/media/ios/RemoteMediaSessionHelperProxy.h
M Source/WebKit/GPUProcess/media/ios/RemoteMediaSessionHelperProxy.messages.in
M Source/WebKit/ModelProcess/ModelProcess.cpp
M Source/WebKit/ModelProcess/ModelProcessCreationParameters.h
M Source/WebKit/ModelProcess/ModelProcessCreationParameters.serialization.in
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Shared/Cocoa/CoreIPCAuditToken.h
M Source/WebKit/Shared/Cocoa/CoreIPCAuditToken.serialization.in
M Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.serialization.in
M Source/WebKit/Shared/GPUProcessConnectionParameters.h
M Source/WebKit/Shared/GPUProcessConnectionParameters.serialization.in
M Source/WebKit/Shared/WebPageCreationParameters.h
M Source/WebKit/Shared/WebPageCreationParameters.serialization.in
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp
M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Source/WebKit/UIProcess/WebProcessProxy.cpp
M Source/WebKit/UIProcess/WebProcessProxy.h
M Source/WebKit/WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp
M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
M Source/WebKit/WebProcess/Plugins/PDF/WKAccessibilityPDFDocumentObject.mm
M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
M Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm
M Source/WebKit/WebProcess/WebProcess.cpp
Log Message:
-----------
[iOS] It should be possible to change presentingApplicationAuditToken after a WKWebView is created
https://bugs.webkit.org/show_bug.cgi?id=284483
rdar://137618821
Reviewed by Youenn Fablet.
_WKProcessPoolConfiguration has a presentingApplicationProcessToken SPI that allows the client to
set an audit token representing the application that is presenting the web content hosted in this
process pool. This SPI is necessary because in some clients the application that presents web
content on screen differs from the UI process that owns the WKWebView.
Having this SPI on _WKProcessPoolConfiguration limits these clients in the following ways:
1. It's not possible for a client to present WKWebViews from the same process pool in two different
presenting applications.
2. If a presenting application exits and relaunches, it's not possible for a client to restore an
existing WKWebView into this new presenting application instance.
Resolved these limitations by adding a readwrite property to WKWebView for clients to set the
presenting application audit token. The audit token is stored on WebPageProxy as well as (a) on the
Page in corresponding WebContent processes and (b) on GPUConnectionToWebProcess. Media SPIs that
rely on knowing the presenting application's PID or audit token read these values when needed.
Previously the presenting application PID was read from a global value (presentingApplicationPID()),
but since this value is now per-Page, this function was renamed to legacyPresentingApplicationPID().
* Source/WTF/wtf/RuntimeApplicationChecks.cpp:
(WTF::legacyPresentingApplicationPID):
(WTF::setLegacyPresentingApplicationPID):
(WTF::presentingApplicationPID): Deleted.
(WTF::setPresentingApplicationPID): Deleted.
* Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::start):
* Source/WebCore/Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::presentingApplicationPID const):
* Source/WebCore/Modules/webaudio/AudioContext.h:
* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::presentingApplicationPID const):
* Source/WebCore/html/HTMLMediaElement.h:
* Source/WebCore/page/Page.cpp:
(WebCore::m_presentingApplicationAuditToken):
(WebCore::Page::presentingApplicationPID const):
(WebCore::Page::presentingApplicationAuditToken const):
(WebCore::Page::setPresentingApplicationAuditToken):
(WebCore::m_activeNowPlayingSessionUpdateTimer): Deleted.
* Source/WebCore/page/Page.h:
* Source/WebCore/page/PageConfiguration.h:
* Source/WebCore/platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::presentingApplicationPID const):
* Source/WebCore/platform/audio/PlatformMediaSession.h:
* Source/WebCore/platform/audio/PlatformMediaSessionManager.h:
(WebCore::PlatformMediaSessionManager::prepareToSendUserMediaPermissionRequest):
(WebCore::PlatformMediaSessionManager::updatePresentingApplicationPIDIfNecessary):
* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h:
(WebCore::MediaSessionManagerCocoa::providePresentingApplicationPIDIfNecessary):
* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(WebCore::MediaSessionManagerCocoa::prepareToSendUserMediaPermissionRequest):
(WebCore::MediaSessionManagerCocoa::updateNowPlayingInfo):
* Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h:
* Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::providePresentingApplicationPIDIfNecessary):
(WebCore::MediaSessionManageriOS::updatePresentingApplicationPIDIfNecessary):
(WebCore::MediaSessionManageriOS::sessionWillBeginPlayback):
(WebCore::MediaSessionManageriOS::providePresentingApplicationPID): Deleted.
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::overridePresentingApplicationPIDIfNeeded):
(WebKit::GPUConnectionToWebProcess::legacyCdmFactoryProxy):
(WebKit::GPUConnectionToWebProcess::presentingApplicationAuditToken const):
(WebKit::GPUConnectionToWebProcess::presentingApplicationPID const):
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:
(WebKit::GPUConnectionToWebProcess::presentingApplicationAuditTokens const):
(WebKit::GPUConnectionToWebProcess::presentingApplicationAuditToken const): Deleted.
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::initializeGPUProcess):
(WebKit::GPUProcess::setPresentingApplicationAuditToken):
* Source/WebKit/GPUProcess/GPUProcess.h:
* Source/WebKit/GPUProcess/GPUProcess.messages.in:
* Source/WebKit/GPUProcess/GPUProcessCreationParameters.h:
* Source/WebKit/GPUProcess/GPUProcessCreationParameters.serialization.in:
* Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp:
(WebKit::RemoteAudioSessionProxyManager::updatePresentingProcesses):
* Source/WebKit/GPUProcess/media/ios/RemoteMediaSessionHelperProxy.cpp:
(WebKit::RemoteMediaSessionHelperProxy::providePresentingApplicationPID):
* Source/WebKit/GPUProcess/media/ios/RemoteMediaSessionHelperProxy.h:
* Source/WebKit/GPUProcess/media/ios/RemoteMediaSessionHelperProxy.messages.in:
* Source/WebKit/ModelProcess/ModelProcess.cpp:
(WebKit::ModelProcess::initializeModelProcess):
* Source/WebKit/ModelProcess/ModelProcessCreationParameters.h:
* Source/WebKit/ModelProcess/ModelProcessCreationParameters.serialization.in:
* Source/WebKit/Scripts/webkit/messages.py:
(headers_for_type):
* Source/WebKit/Shared/Cocoa/CoreIPCAuditToken.h:
(WebKit::invalidAuditToken):
(WebKit::CoreIPCAuditToken::CoreIPCAuditToken):
* Source/WebKit/Shared/GPUProcessConnectionParameters.h:
* Source/WebKit/Shared/GPUProcessConnectionParameters.serialization.in:
* Source/WebKit/Shared/WebPageCreationParameters.h:
* Source/WebKit/Shared/WebPageCreationParameters.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView presentingApplicationAuditToken]):
(-[WKWebView setPresentingApplicationAuditToken:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
* Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::GPUProcessProxy):
(WebKit::GPUProcessProxy::setPresentingApplicationAuditToken):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::m_pageForTesting):
(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::presentingApplicationAuditToken const):
(WebKit::WebPageProxy::setPresentingApplicationAuditToken):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createGPUProcessConnection):
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::createGPUProcessConnection):
(WebKit::WebProcessProxy::presentingApplicationAuditTokens const):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp:
(WebKit::RemoteMediaSessionHelper::providePresentingApplicationPID):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::m_textAnimationController):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
Canonical link: https://commits.webkit.org/287782@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list