[webkit-changes] [WebKit/WebKit] d8e8c9: [LinearMediaPlayer] Disallow LMK fullscreen for me...
aestes
noreply at github.com
Thu Jun 13 20:46:34 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d8e8c92dd2f4acf36a04a258f30b745c9a67ed25
https://github.com/WebKit/WebKit/commit/d8e8c92dd2f4acf36a04a258f30b745c9a67ed25
Author: Andy Estes <aestes at 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
More information about the webkit-changes
mailing list