Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 684acb93d5e6dde54932f8d17a433fd4fcc915b0
https://github.com/WebKit/WebKit/commit/684acb93d5e6dde54932f8d17a433fd4fcc915b0
Author: Andy Estes <[email protected]>
Date: 2025-12-04 (Thu, 04 Dec 2025)
Changed paths:
M Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj
A Source/WebCore/PAL/pal/ios/AVRoutingSoftLink.h
A Source/WebCore/PAL/pal/ios/AVRoutingSoftLink.mm
M Source/WebCore/Sources.txt
M Source/WebCore/SourcesCocoa.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/html/HTMLMediaElement.cpp
M Source/WebCore/html/MediaElementSession.cpp
M Source/WebCore/html/MediaElementSession.h
M Source/WebCore/platform/audio/ios/MediaDeviceRoute.h
M Source/WebCore/platform/audio/ios/MediaDeviceRoute.mm
A Source/WebCore/platform/audio/ios/MediaDeviceRouteController.h
A Source/WebCore/platform/audio/ios/MediaDeviceRouteController.mm
M Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm
M Source/WebCore/platform/graphics/MediaPlaybackTarget.h
A Source/WebCore/platform/graphics/MediaPlaybackTargetWirelessPlayback.cpp
A Source/WebCore/platform/graphics/MediaPlaybackTargetWirelessPlayback.h
M Source/WebCore/platform/graphics/MediaPlayer.cpp
M Source/WebCore/platform/graphics/MediaPlayer.h
M Source/WebCore/platform/graphics/MediaPlayerPrivate.cpp
M Source/WebCore/platform/graphics/MediaPlayerPrivate.h
M
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h
M
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp
M Source/WebKit/Platform/cocoa/MediaPlaybackTargetContextSerialized.h
M Source/WebKit/Platform/cocoa/MediaPlaybackTargetContextSerialized.mm
M
Source/WebKit/Platform/cocoa/MediaPlaybackTargetContextSerialized.serialization.in
M Source/WebKit/Platform/cocoa/MediaPlaybackTargetSerialized.h
M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp
M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h
M Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerConfiguration.h
M
Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerConfiguration.serialization.in
M Source/WebKit/WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp
Log Message:
-----------
[iOS] Introduce MediaDeviceRouteController
https://bugs.webkit.org/show_bug.cgi?id=303450
rdar://165738633
Reviewed by Eric Carlson.
Introduced MediaDeviceRouteController. Its responsibility is to observe a new
MediaDeviceRoute
becoming active, create a corresponding MediaPlaybackTargetWirelessPlayback,
and propagate that to the
Now Playing-eligible media element. In a follow-on change this playback target
will be used to
create a MediaPlayerPrivateWirelessPlayback for AirPlay playback.
Since MediaDeviceRoutes cannot be serialized from the GPU process to the
WebContent process, a UUID
is associated with each route, and MediaPlaybackTargetWirelessPlayback stores
this UUID so that the
corresponding MediaDeviceRoute can be looked up when the playback target is
sent back to the GPU
process (via RemoteMediaPlayerProxy::SetWirelessPlaybackTarget).
MediaPlaybackTargetType enumeration values were also changed to be compatible
with an OptionSet. In
a follow-on change, this will be used to determine which MediaPlayerPrivate
subclass supports
MediaPlaybackTargetWirelessPlayback.
* Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj:
* Source/WebCore/PAL/pal/ios/AVRoutingSoftLink.h: Copied from
Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerConfiguration.h.
* Source/WebCore/PAL/pal/ios/AVRoutingSoftLink.mm: Copied from
Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerConfiguration.h.
* Source/WebCore/Sources.txt:
* Source/WebCore/SourcesCocoa.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::checkPlaybackTargetCompatibility):
* Source/WebCore/html/MediaElementSession.cpp:
(WebCore::MediaElementSession::playbackTargetType const):
* Source/WebCore/html/MediaElementSession.h:
* Source/WebCore/platform/audio/ios/MediaDeviceRoute.h:
(WebCore::MediaDeviceRoute::client const): Deleted.
(WebCore::MediaDeviceRoute::setClient): Deleted.
* Source/WebCore/platform/audio/ios/MediaDeviceRoute.mm:
(WebCore::MediaDeviceRoute::MediaDeviceRoute):
(WebCore::MediaDeviceRoute::platformRoute const):
* Source/WebCore/platform/audio/ios/MediaDeviceRouteController.h: Added.
(WebCore::MediaDeviceRouteController::client const):
(WebCore::MediaDeviceRouteController::setClient):
* Source/WebCore/platform/audio/ios/MediaDeviceRouteController.mm: Added.
(WebCore::MediaDeviceRouteController::singleton):
(WebCore::MediaDeviceRouteController::MediaDeviceRouteController):
(WebCore::MediaDeviceRouteController::mostRecentActiveRoute const):
(WebCore::MediaDeviceRouteController::routeForIdentifier const):
(WebCore::MediaDeviceRouteController::handleEvent):
(WebCore::MediaDeviceRouteController::activateRoute):
(WebCore::MediaDeviceRouteController::deactivateRoute):
* Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm:
(MediaSessionHelperIOS::MediaSessionHelperIOS):
(MediaSessionHelperIOS::activeRoutesDidChange):
* Source/WebCore/platform/graphics/MediaPlaybackTarget.h:
(WebCore::MediaPlaybackTarget::targetType const):
* Source/WebCore/platform/graphics/MediaPlaybackTargetWirelessPlayback.cpp:
Added.
(WebCore::MediaPlaybackTargetWirelessPlayback::create):
(WebCore::MediaPlaybackTargetWirelessPlayback::MediaPlaybackTargetWirelessPlayback):
(WebCore::MediaPlaybackTargetWirelessPlayback::identifier const):
(WebCore::MediaPlaybackTargetWirelessPlayback::deviceName const):
(WebCore::MediaPlaybackTargetWirelessPlayback::hasActiveRoute const):
* Source/WebCore/platform/graphics/MediaPlaybackTargetWirelessPlayback.h:
Copied from Source/WebKit/Platform/cocoa/MediaPlaybackTargetSerialized.h.
(isType):
* Source/WebCore/platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::supportedPlaybackTargetTypes const):
(WebCore::MediaPlayer::canPlayToWirelessPlaybackTarget const): Deleted.
* Source/WebCore/platform/graphics/MediaPlayer.h:
* Source/WebCore/platform/graphics/MediaPlayerPrivate.cpp:
(WebCore::MediaPlayerPrivateInterface::supportedPlaybackTargetTypes const):
* Source/WebCore/platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::canPlayToWirelessPlaybackTarget const):
Deleted.
*
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
*
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::supportedPlaybackTargetTypes
const):
* Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::getConfiguration):
* Source/WebKit/Platform/cocoa/MediaPlaybackTargetContextSerialized.h:
(WebKit::MediaPlaybackTargetContextSerialized::identifier const):
* Source/WebKit/Platform/cocoa/MediaPlaybackTargetContextSerialized.mm:
(WebKit::MediaPlaybackTargetContextSerialized::MediaPlaybackTargetContextSerialized):
(WebKit::MediaPlaybackTargetContextSerialized::playbackTarget const):
(WTF::isValidEnum<WebCore::MediaPlaybackTargetType>):
*
Source/WebKit/Platform/cocoa/MediaPlaybackTargetContextSerialized.serialization.in:
* Source/WebKit/Platform/cocoa/MediaPlaybackTargetSerialized.h:
* Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::supportedPlaybackTargetTypes const):
(WebKit::MediaPlayerPrivateRemote::canPlayToWirelessPlaybackTarget const):
Deleted.
* Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
* Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerConfiguration.h:
*
Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerConfiguration.serialization.in:
* Source/WebKit/WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp:
(WebKit::RemoteMediaSessionHelper::activeVideoRouteDidChange):
Canonical link: https://commits.webkit.org/303947@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications