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

Reply via email to