Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4ec10f6ab8204352d7e35c0f16f8219b6688348d https://github.com/WebKit/WebKit/commit/4ec10f6ab8204352d7e35c0f16f8219b6688348d Author: Eric Carlson <eric.carl...@apple.com> Date: 2022-10-17 (Mon, 17 Oct 2022)
Changed paths: M LayoutTests/TestExpectations A LayoutTests/media/media-source/remoteplayback-from-source-element-expected.txt A LayoutTests/media/media-source/remoteplayback-from-source-element.html M LayoutTests/platform/mac/TestExpectations M Source/WebCore/Modules/remoteplayback/RemotePlayback.cpp M Source/WebCore/Modules/remoteplayback/RemotePlayback.h M Source/WebCore/html/HTMLMediaElement.cpp M Source/WebCore/html/HTMLMediaElement.h M Source/WebCore/html/MediaElementSession.cpp M Source/WebCore/platform/graphics/MediaPlayer.cpp M Source/WebCore/platform/graphics/MediaPlayer.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm M Source/WebCore/testing/Internals.cpp M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp M Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.cpp M Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.h Log Message: ----------- Switch to alternate <source> element for AirPlay when necessary https://bugs.webkit.org/show_bug.cgi?id=246466 <rdar://101136233> Reviewed by Jer Noble. * LayoutTests/media/media-source/remoteplayback-from-source-element-expected.txt: Added. * LayoutTests/media/media-source/remoteplayback-from-source-element.html: Added. * LayoutTests/TestExpectations: New test skipped everywhere. * LayoutTests/platform/mac/TestExpectations: New test enabled. * Source/WebCore/Modules/remoteplayback/RemotePlayback.cpp: (WebCore::RemotePlayback::watchAvailability): Add runtime logging. (WebCore::RemotePlayback::cancelWatchAvailability): Ditto. (WebCore::RemotePlayback::prompt): Ditto. (WebCore::RemotePlayback::shouldPlayToRemoteTargetChanged): Ditto. (WebCore::RemotePlayback::setState): Ditto. (WebCore::RemotePlayback::disconnect): Ditto. (WebCore::RemotePlayback::availabilityChanged): Ditto. (WebCore::RemotePlayback::setLogger): Ditto. (WebCore::RemotePlayback::logChannel const): Ditto. * Source/WebCore/Modules/remoteplayback/RemotePlayback.h: * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::HTMLMediaElement): Set remote logger. (WebCore::HTMLMediaElement::checkPlaybackTargetCompatibility): If loaded from a <source> element and is another <source> uses a media engine that supports remote playback, try loading that. (WebCore::HTMLMediaElement::loadResource): Don't bother trying MSE, MediaStream, or blob if the load requires remote playback. (WebCore::HTMLMediaElement::applyConfiguration): Apply the stored configuration. (WebCore::HTMLMediaElement::setReadyState): Apply the remote configuration once HAVE_FUTURE_DATA is reached. (WebCore::HTMLMediaElement::selectNextSourceChild): Set parameter `requiresRemotePlayback` field. (WebCore::HTMLMediaElement::clearMediaPlayer): Force a target availability event. (WebCore::HTMLMediaElement::wirelessRoutesAvailableDidChange): Only post availability event when availability actually changes. (WebCore::HTMLMediaElement::setIsPlayingToWirelessTarget): (WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent): Add parameter so we don't necessarily post events when availability doesn't change. (WebCore::HTMLMediaElement::addEventListener): Force a target availability event. * Source/WebCore/html/HTMLMediaElement.h: * Source/WebCore/html/MediaElementSession.cpp: (WebCore::MediaElementSession::showPlaybackTargetPicker): Always log. * Source/WebCore/platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::load): Add `requiresRemotePlayback` parameter. * Source/WebCore/platform/graphics/MediaPlayer.h: (WebCore::MediaEngineSupportParameters::encode const): (WebCore::MediaEngineSupportParameters::decode): * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::supportsType): Consider new support field. * Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm: (WebCore::MediaPlayerPrivateWebM::supportsType): Ditto. * Source/WebCore/testing/Internals.cpp: (WebCore::Internals::setMockMediaPlaybackTargetPickerEnabled): NULL-check frame and page. (WebCore::Internals::setMockMediaPlaybackTargetPickerState): Ditto. (WebCore::Internals::mockMediaPlaybackTargetPickerDismissPopup): Ditto. * Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp: (WebKit::RemoteMediaPlayerProxy::load): Add "requires remote playback" parameter. * Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h: * Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in: Ditto. * Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::load): Ditto. * Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.cpp: (WebKit::RemoteMediaPlayerMIMETypeCache::supportsTypeAndCodecs): Ditto. * Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.h: Canonical link: https://commits.webkit.org/255624@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes