Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d8e8c92dd2f4acf36a04a258f30b745c9a67ed25 https://github.com/WebKit/WebKit/commit/d8e8c92dd2f4acf36a04a258f30b745c9a67ed25 Author: Andy Estes <aes...@apple.com> Date: 2024-06-13 (Thu, 13 Jun 2024)
Changed paths: M Source/WebCore/html/HTMLMediaElement.cpp M Source/WebCore/page/ChromeClient.h M Source/WebCore/page/Page.cpp M Source/WebCore/page/Page.h M Source/WebCore/platform/cocoa/PlaybackSessionModel.h M Source/WebCore/platform/graphics/MediaPlayer.cpp M Source/WebCore/platform/graphics/MediaPlayer.h M Source/WebCore/platform/graphics/MediaPlayerPrivate.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.h M Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in M Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm M Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h M Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm Log Message: ----------- [LinearMediaPlayer] Disallow LMK fullscreen for media engines that don't support entity rendering https://bugs.webkit.org/show_bug.cgi?id=275416 rdar://126329588 Reviewed by Jean-Yves Avenard. LinearMediaPlayer requires a video element's media engine to support rendering to a FigVideoTarget, but not all media engines used on visionOS support this rendering mode. Notably the WebM and MediaStream engines do not, so no video is rendered when entering LinearMediaPlayer fullscreen for a video element using one of these engines. While these engines can and ultimately should support FigVideoTarget rendering, since they currently do not we should disable LinearMediaPlayer fullscreen in these cases and fall back to a supported fullscreen interface (either element fullscreen or AVKit fullscreen). To enable this fallback, MediaPlayer can now tell clients whether its current media engine supports LinearMediaPlayer, and this influences the return value of HTMLMediaElement::videoUsesElementFullscreen. It is also set on the media element's PlaybackSessionModel, and WKFullscreenViewController uses this value to determine whether to show an environment picker button in element fullscreen. * Source/WebCore/html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::mediaEngineWasUpdated): (WebCore::HTMLMediaElement::videoUsesElementFullscreen const): * Source/WebCore/page/ChromeClient.h: (WebCore::ChromeClient::mediaEngineChanged): (WebCore::ChromeClient::playbackControlsMediaEngineChanged): Deleted. * Source/WebCore/page/Page.cpp: (WebCore::Page::mediaEngineChanged): (WebCore::Page::playbackControlsMediaEngineChanged): Deleted. * Source/WebCore/page/Page.h: * Source/WebCore/platform/cocoa/PlaybackSessionModel.h: (WebCore::PlaybackSessionModel::supportsLinearMediaPlayer const): (WebCore::PlaybackSessionModelClient::supportsLinearMediaPlayerChanged): * Source/WebCore/platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::supportsLinearMediaPlayer const): * Source/WebCore/platform/graphics/MediaPlayer.h: * Source/WebCore/platform/graphics/MediaPlayerPrivate.h: (WebCore::MediaPlayerPrivateInterface::supportsLinearMediaPlayer const): * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h: * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.h: * Source/WebKit/Platform/ios/PlaybackSessionInterfaceLMK.mm: (WebKit::PlaybackSessionInterfaceLMK::supportsLinearMediaPlayerChanged): * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h: * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in: * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionModelContext::supportsLinearMediaPlayerChanged): (WebKit::PlaybackSessionManagerProxy::supportsLinearMediaPlayerChanged): (WebKit::PlaybackSessionManagerProxy::updateVideoControlsManager): * Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm: (-[WKFullScreenViewController configureEnvironmentPickerButtonView]): (-[WKFullScreenViewController _removeEnvironmentPickerButtonView]): * Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::supportsLinearMediaPlayer const): * Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h: * Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::mediaEngineChanged): (WebKit::WebChromeClient::playbackControlsMediaEngineChanged): Deleted. * Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h: * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h: * Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.mm: (WebKit::PlaybackSessionManager::mediaEngineChanged): * Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h: * Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm: (WebChromeClient::mediaEngineChanged): (WebChromeClient::playbackControlsMediaEngineChanged): Deleted. Canonical link: https://commits.webkit.org/279997@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes