Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3028fdda999a0597d6c5cc45bae92555b9a5d36f
      
https://github.com/WebKit/WebKit/commit/3028fdda999a0597d6c5cc45bae92555b9a5d36f
  Author: Andy Estes <[email protected]>
  Date:   2026-02-03 (Tue, 03 Feb 2026)

  Changed paths:
    A 
LayoutTests/media/wireless-playback-media-player/load-url-source-element-expected.txt
    A 
LayoutTests/media/wireless-playback-media-player/load-url-source-element.html
    A 
LayoutTests/media/wireless-playback-media-player/load-url-src-attr-expected.txt
    A LayoutTests/media/wireless-playback-media-player/load-url-src-attr.html
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/html/HTMLMediaElement.h
    M Source/WebCore/platform/audio/ios/MediaDeviceRoute.h
    M Source/WebCore/platform/graphics/MediaPlaybackTargetWirelessPlayback.cpp
    M Source/WebCore/platform/graphics/MediaPlaybackTargetWirelessPlayback.h
    M Source/WebCore/platform/graphics/MediaPlayerPrivateWirelessPlayback.cpp
    M Source/WebCore/platform/graphics/MediaPlayerPrivateWirelessPlayback.h
    M 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm

  Log Message:
  -----------
  [iOS] MediaPlayerPrivateWirelessPlayback should attempt to load a media 
element's current source URL
https://bugs.webkit.org/show_bug.cgi?id=306897
rdar://169560043

Reviewed by Jer Noble.

HTMLMediaPlayer was previously taught how to fall back to an AirPlay-compatible 
<source> element
URL when a MediaDeviceRoute activated during non-AirPlay-compatible playback 
(e.g., MSE). However,
it did not know how to handle the case where a route activates when the current 
source *is*
AirPlay-compatible. This change makes it so by introducing
HTMLMediaElement::rebuildMediaEngineForWirelessPlayback. It creates a new 
MediaPlayer, then either
loads currentSrc() if the element has a src attribute, or resets 
m_currentSourceNode and
m_nextChildNodeToConsider and calls loadNextSourceChild() if the element has 
<source> element
children.

Tests: media/wireless-playback-media-player/load-url-source-element.html
       media/wireless-playback-media-player/load-url-src-attr.html

* 
LayoutTests/media/wireless-playback-media-player/load-url-source-element-expected.txt:
 Added.
* 
LayoutTests/media/wireless-playback-media-player/load-url-source-element.html: 
Added.
* 
LayoutTests/media/wireless-playback-media-player/load-url-src-attr-expected.txt:
 Added.
* LayoutTests/media/wireless-playback-media-player/load-url-src-attr.html: 
Added.
* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::checkPlaybackTargetCompatibility):
(WebCore::HTMLMediaElement::scheduleRebuildMediaEngineForWirelessPlayback):
(WebCore::inferredContentTypeFromURL):
(WebCore::HTMLMediaElement::rebuildMediaEngineForWirelessPlayback):
* Source/WebCore/html/HTMLMediaElement.h:
* Source/WebCore/platform/audio/ios/MediaDeviceRoute.h:
* Source/WebCore/platform/graphics/MediaPlaybackTargetWirelessPlayback.cpp:
(WebCore::MediaPlaybackTargetWirelessPlayback::loadURL):
* Source/WebCore/platform/graphics/MediaPlaybackTargetWirelessPlayback.h:
* Source/WebCore/platform/graphics/MediaPlayerPrivateWirelessPlayback.cpp:
(WebCore::supportsURL):
(WebCore::MediaPlayerPrivateWirelessPlayback::load):
(WebCore::MediaPlayerPrivateWirelessPlayback::setWirelessPlaybackTarget):
(WebCore::MediaPlayerPrivateWirelessPlayback::updateURLIfNeeded):
(WebCore::MediaPlayerPrivateWirelessPlayback::setNetworkState):
(WebCore::MediaPlayerPrivateWirelessPlayback::setReadyState):
(WebCore::MediaPlayerPrivateWirelessPlayback::updateURLStringIfNeeded): Deleted.
* Source/WebCore/platform/graphics/MediaPlayerPrivateWirelessPlayback.h:
* 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::isCurrentPlaybackTargetWireless 
const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetName const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldPlayToPlaybackTarget):

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



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

Reply via email to