Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8961db671cf41e2c1b7c07888887e0e9da3388cd
https://github.com/WebKit/WebKit/commit/8961db671cf41e2c1b7c07888887e0e9da3388cd
Author: Andy Estes <[email protected]>
Date: 2025-12-05 (Fri, 05 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:
-----------
Take 2: [iOS] Introduce MediaDeviceRouteController
https://bugs.webkit.org/show_bug.cgi?id=303668
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/304035@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications