Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 085e9056ed41b3fcea8d615a7c27a77ad9753038
https://github.com/WebKit/WebKit/commit/085e9056ed41b3fcea8d615a7c27a77ad9753038
Author: Eric Carlson <[email protected]>
Date: 2025-12-05 (Fri, 05 Dec 2025)
Changed paths:
M Source/WebCore/Modules/webaudio/AudioContext.cpp
M Source/WebCore/Modules/webaudio/AudioContext.h
M Source/WebCore/html/HTMLMediaElement.cpp
M Source/WebCore/html/HTMLMediaElement.h
M Source/WebCore/html/MediaElementSession.cpp
M Source/WebCore/html/MediaElementSession.h
M Source/WebCore/platform/audio/MediaSessionManagerInterface.cpp
M Source/WebCore/platform/audio/MediaSessionManagerInterface.h
M Source/WebCore/platform/audio/PlatformMediaSession.cpp
M Source/WebCore/platform/audio/PlatformMediaSession.h
M Source/WebCore/platform/audio/PlatformMediaSession.serialization.in
M Source/WebCore/platform/audio/PlatformMediaSessionInterface.h
M Source/WebCore/platform/audio/PlatformMediaSessionTypes.h
M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h
M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm
M Source/WebCore/platform/audio/glib/MediaSessionManagerGLib.cpp
M Source/WebCore/platform/audio/glib/MediaSessionManagerGLib.h
M Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h
M Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/UIProcess/Media/RemoteMediaSessionClientProxy.h
M Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.cpp
M Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.h
M Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.messages.in
M Source/WebKit/UIProcess/Media/RemoteMediaSessionProxy.cpp
M Source/WebKit/UIProcess/Media/RemoteMediaSessionProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebPageProxy.messages.in
M Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.cpp
M Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.h
M Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.messages.in
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
Log Message:
-----------
[Site isolation] Make clientWillBeginPlayback and sessionWillBeginPlayback
asynchronous
https://bugs.webkit.org/show_bug.cgi?id=303564
rdar://165856127
Reviewed by Andy Estes.
Make PlatformMediaSessionInterface::clientWillBeginPlayback and
MediaSessionManagerInterface::sessionWillBeginPlayback async by adding a
CompletionHandler
parameter and implement them in the remote managers and clients.
Tested manually.
* Source/WebCore/Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::resumeRendering):
(WebCore::AudioContext::startRendering):
(WebCore::AudioContext::mayResumePlayback):
(WebCore::AudioContext::willBeginPlayback):
* Source/WebCore/Modules/webaudio/AudioContext.h:
* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::completePlayInternal):
(WebCore::HTMLMediaElement::playInternal):
(WebCore::HTMLMediaElement::updatePlayState):
* Source/WebCore/html/HTMLMediaElement.h:
* Source/WebCore/html/MediaElementSession.cpp:
(WebCore::MediaElementSession::clientWillBeginPlayback):
* Source/WebCore/html/MediaElementSession.h:
* Source/WebCore/platform/audio/MediaSessionManagerInterface.cpp:
(WebCore::MediaSessionManagerInterface::sessionWillBeginPlayback):
* Source/WebCore/platform/audio/MediaSessionManagerInterface.h:
* Source/WebCore/platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::clientWillBeginPlayback):
* Source/WebCore/platform/audio/PlatformMediaSession.h:
(WebCore::PlatformMediaSession::state const):
* Source/WebCore/platform/audio/PlatformMediaSession.serialization.in:
* Source/WebCore/platform/audio/PlatformMediaSessionInterface.h:
(WebCore::PlatformMediaSessionClient::isRemoteSessionClientProxy const):
(WebCore::PlatformMediaSessionInterface::isRemoteSessionProxy const):
* Source/WebCore/platform/audio/PlatformMediaSessionTypes.h:
* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h:
* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:
(WebCore::MediaSessionManagerCocoa::sessionWillBeginPlayback):
* Source/WebCore/platform/audio/glib/MediaSessionManagerGLib.cpp:
(WebCore::MediaSessionManagerGLib::sessionWillBeginPlayback):
* Source/WebCore/platform/audio/glib/MediaSessionManagerGLib.h:
* Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h:
* Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm:
(WebCore::MediaSessionManageriOS::sessionWillBeginPlayback):
* Source/WebKit/Scripts/webkit/messages.py:
(types_that_cannot_be_forward_declared):
(headers_for_type):
* Source/WebKit/UIProcess/Media/RemoteMediaSessionClientProxy.h:
(isType):
* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.cpp:
(WebKit::RemoteMediaSessionManagerProxy::RemoteMediaSessionManagerProxy):
(WebKit::RemoteMediaSessionManagerProxy::~RemoteMediaSessionManagerProxy):
(WebKit::RemoteMediaSessionManagerProxy::addRemoteMediaSessionManager):
(WebKit::RemoteMediaSessionManagerProxy::removeRemoteMediaSessionManager):
(WebKit::RemoteMediaSessionManagerProxy::removeMediaSession):
(WebKit::RemoteMediaSessionManagerProxy::setCurrentMediaSession):
(WebKit::RemoteMediaSessionManagerProxy::mediaSessionStateChanged):
(WebKit::RemoteMediaSessionManagerProxy::forEachRemoteSessionManager):
(WebKit::RemoteMediaSessionManagerProxy::setCurrentSession):
(WebKit::RemoteMediaSessionManagerProxy::mediaSessionWillBeginPlayback):
(WebKit::RemoteMediaSessionManagerProxy::addMediaSessionRestriction):
(WebKit::RemoteMediaSessionManagerProxy::removeMediaSessionRestriction):
(WebKit::RemoteMediaSessionManagerProxy::resetMediaSessionRestrictions):
(WebKit::RemoteMediaSessionManagerProxy::findAndUpdateSession):
(WebKit::RemoteMediaSessionManagerProxy::messageSenderDestinationID const):
(WebKit::RemoteMediaSessionManagerProxy::findSession): Deleted.
* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.h:
* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.messages.in:
* Source/WebKit/UIProcess/Media/RemoteMediaSessionProxy.cpp:
(WebKit::RemoteMediaSessionProxy::RemoteMediaSessionProxy):
(WebKit::RemoteMediaSessionProxy::updateState):
(WebKit::RemoteMediaSessionProxy::setState):
(WebKit::RemoteMediaSessionProxy::selectBestMediaSession):
* Source/WebKit/UIProcess/Media/RemoteMediaSessionProxy.h:
(isType):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::addRemoteMediaSessionManager):
(WebKit::WebPageProxy::removeRemoteMediaSessionManager):
(WebKit::WebPageProxy::ensureRemoteMediaSessionManagerProxy): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.cpp:
(WebKit::RemoteMediaSessionManager::RemoteMediaSessionManager):
(WebKit::RemoteMediaSessionManager::~RemoteMediaSessionManager):
(WebKit::RemoteMediaSessionManager::sessionWillBeginPlayback):
(WebKit::RemoteMediaSessionManager::addRestriction):
(WebKit::RemoteMediaSessionManager::removeRestriction):
(WebKit::RemoteMediaSessionManager::resetRestrictions):
(WebKit::RemoteMediaSessionManager::sessionStateChanged):
(WebKit::RemoteMediaSessionManager::setCurrentMediaSession):
(WebKit::RemoteMediaSessionManager::updateCachedSessionState):
* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.h:
* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.messages.in:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_toolbarsAreVisible):
Canonical link: https://commits.webkit.org/304036@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications