Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 79dad443efe68f5aee4f3d4dd15cfa1232978c63
      
https://github.com/WebKit/WebKit/commit/79dad443efe68f5aee4f3d4dd15cfa1232978c63
  Author: Andy Estes <[email protected]>
  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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to