Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b80101a8634c8302d4b3c529bec0327b2e073eee
      
https://github.com/WebKit/WebKit/commit/b80101a8634c8302d4b3c529bec0327b2e073eee
  Author: Eric Carlson <[email protected]>
  Date:   2025-11-21 (Fri, 21 Nov 2025)

  Changed paths:
    M Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h
    M Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h
    M Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp
    M Source/WebKit/UIProcess/Media/RemoteMediaSessionClientProxy.cpp
    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/WebPageProxy.cpp
    M Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp
    M Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h
    M Source/WebKit/WebProcess/GPU/media/RemoteAudioSessionConfiguration.h
    M 
Source/WebKit/WebProcess/GPU/media/RemoteAudioSessionConfiguration.serialization.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/WebProcess.cpp
    M Source/WebKit/WebProcess/WebProcess.h

  Log Message:
  -----------
  [Site isolation] Pipe AudioSession and AudioHardwareListener between 
RemoteMediaSessionManager and RemoteMediaSessionManagerProxy
https://bugs.webkit.org/show_bug.cgi?id=302875
rdar://165134705

Reviewed by Jer Noble.

RemoteMediaSessionManagerProxy, the part of media session manager that runs in 
the UI process,
needs to read and write AudioSession and AudioHardwareListener. Both of these 
run in the
GPU process and have proxies in the Web process. Add additional proxies in
RemoteMediaSessionManagerProxy in the UI process, and pipe state changes 
between it and
RemoteMediaSessionManager in the WebProcess so all three processes stay in sync.

No new tests, the remote session manager is disabled by default and is not 
testable yet.

* Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h:
(WebCore::MediaSessionManagerCocoa::audioHardwareListener const):
(WebCore::MediaSessionManagerCocoa::audioHardwareDidBecomeActive):
(WebCore::MediaSessionManagerCocoa::audioHardwareDidBecomeInactive):
(WebCore::MediaSessionManagerCocoa::didReceiveRemoteControlCommand):
(WebCore::MediaSessionManagerCocoa::logClassName const):
* Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.h:
* Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.cpp:
(WebKit::RemoteAudioSessionProxy::RemoteAudioSessionProxy):
(WebKit::RemoteAudioSessionProxy::configuration):
* Source/WebKit/UIProcess/Media/RemoteMediaSessionClientProxy.cpp:
(WebKit::RemoteMediaSessionClientProxy::didReceiveRemoteControlCommand):
* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.cpp:
(WebKit::RemoteMediaSessionManagerProxy::RemoteMediaSessionManagerProxy):
(WebKit::RemoteMediaSessionManagerProxy::remoteAudioConfigurationChanged):
(WebKit::RemoteMediaSessionManagerProxy::setCategory):
(WebKit::RemoteMediaSessionManagerProxy::tryToSetActiveInternal):
(WebKit::RemoteMediaSessionManagerProxy::setPreferredBufferSize):
(WebKit::RemoteMediaSessionManagerProxy::remoteAudioHardwareDidBecomeActive):
(WebKit::RemoteMediaSessionManagerProxy::remoteAudioHardwareDidBecomeInactive):
(WebKit::RemoteMediaSessionManagerProxy::remoteAudioOutputDeviceChanged):
(WebKit::RemoteMediaSessionManagerProxy::ensureAudioHardwareListenerProxy):
* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.h:
(WebKit::RemoteMediaSessionManagerProxy::logClassName const):
* Source/WebKit/UIProcess/Media/RemoteMediaSessionManagerProxy.messages.in:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
* Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.cpp:
(WebKit::RemoteAudioSession::create):
(WebKit::RemoteAudioSession::RemoteAudioSession):
(WebKit::RemoteAudioSession::configurationChanged):
* Source/WebKit/WebProcess/GPU/media/RemoteAudioSession.h:
* Source/WebKit/WebProcess/GPU/media/RemoteAudioSessionConfiguration.h:
* 
Source/WebKit/WebProcess/GPU/media/RemoteAudioSessionConfiguration.serialization.in:
* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.cpp:
(WebKit::RemoteMediaSessionManager::RemoteMediaSessionManager):
(WebKit::RemoteMediaSessionManager::addSession):
(WebKit::RemoteMediaSessionManager::removeSession):
(WebKit::RemoteMediaSessionManager::setCurrentSession):
(WebKit::RemoteMediaSessionManager::audioHardwareDidBecomeActive):
(WebKit::RemoteMediaSessionManager::audioHardwareDidBecomeInactive):
(WebKit::RemoteMediaSessionManager::audioOutputDeviceChanged):
(WebKit::RemoteMediaSessionManager::setAudioSessionCategory):
(WebKit::RemoteMediaSessionManager::setAudioSessionPreferredBufferSize):
(WebKit::RemoteMediaSessionManager::tryToSetAudioSessionActive):
(WebKit::RemoteMediaSessionManager::updateCachedSessionState):
* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.h:
(WebKit::RemoteMediaSessionManager::logClassName const):
* Source/WebKit/WebProcess/Media/RemoteMediaSessionManager.messages.in:
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::remoteAudioSessionConfigurationChanged):
(WebKit::WebProcess::setUseGPUProcessForMedia):
* Source/WebKit/WebProcess/WebProcess.h:

Canonical link: https://commits.webkit.org/303417@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to