[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