[webkit-changes] [WebKit/WebKit] 3febba: [tvOS] Add experimental runtime support for AVKit ...

aestes noreply at github.com
Fri Oct 6 22:48:08 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3febba3bf25a780da0665130a8bd14df6975fe65
      https://github.com/WebKit/WebKit/commit/3febba3bf25a780da0665130a8bd14df6975fe65
  Author: Andy Estes <aestes at apple.com>
  Date:   2023-10-06 (Fri, 06 Oct 2023)

  Changed paths:
    M Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp
    M Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.h
    M Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.mm
    M Source/WebCore/PAL/pal/spi/cocoa/AVKitSPI.h
    M Source/WebCore/PAL/pal/spi/cocoa/FoundationSPI.h
    M Source/WebCore/platform/cocoa/WebAVPlayerLayer.h
    M Source/WebCore/platform/cocoa/WebAVPlayerLayer.mm
    M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
    M Source/WebCore/platform/ios/WebAVPlayerController.h
    M Source/WebCore/platform/ios/WebAVPlayerController.mm
    M Source/WebKit/UIProcess/WebPageProxy.cpp

  Log Message:
  -----------
  [tvOS] Add experimental runtime support for AVKit fullscreen
https://bugs.webkit.org/show_bug.cgi?id=262814
rdar://116599008

Reviewed by Jer Noble.

Added experimental support for AVKit fullscreen on tvOS. Full support cannot be implemented until
new APIs are available (see rdar://116592344), but this provides a proof-of-concept implementation
by implementing the AVPlayerController interface expected by tvOS's AVPlayerViewController and
injecting a custom AVPlayerLayerView into AVPlayerViewController's view hierarchy.

This change also opts tvOS into iOS media controls layout traits and works around an issue related
to WKWebView visibility when AVPlayerViewController is modally presented on top of it.

* Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp:
(WebCore::MediaControlsHost::layoutTraitsClassName const):
* Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.h:
* Source/WebCore/PAL/pal/cocoa/AVFoundationSoftLink.mm:
* Source/WebCore/PAL/pal/spi/cocoa/AVKitSPI.h:
* Source/WebCore/PAL/pal/spi/cocoa/FoundationSPI.h:
* Source/WebCore/platform/cocoa/WebAVPlayerLayer.h:
* Source/WebCore/platform/cocoa/WebAVPlayerLayer.mm:
(-[WebAVPlayerLayer legibleContentInsets]):
(-[WebAVPlayerLayer setLegibleContentInsets:]):
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerViewController initWithFullscreenInterface:]):
(-[WebAVPlayerViewController configurePlayerViewControllerWithFullscreenInterface:]):
* Source/WebCore/platform/ios/WebAVPlayerController.h:
* Source/WebCore/platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController init]):
(-[WebAVPlayerController player]):
(-[WebAVPlayerController currentItem]):
(+[WebAVPlayerController keyPathsForValuesAffectingEffectiveRateNonZero]):
(-[WebAVPlayerController effectiveRateNonZero]):
(-[WebAVPlayerController forwardPlaybackEndTime]):
(-[WebAVPlayerController backwardPlaybackEndTime]):
(+[WebAVPlayerController keyPathsForValuesAffectingIsSeekingTV]):
(-[WebAVPlayerController isSeekingTV]):
(-[WebAVPlayerController hasStartAndEndDates]):
(-[WebAVPlayerController timeRangeSeekable]):
(-[WebAVPlayerController hasItem]):
(-[WebAVPlayerController isPlaybackLikelyToKeepUp]):
(-[WebAVPlayerController overrideForForwardPlaybackEndTime]):
(-[WebAVPlayerController overrideForReversePlaybackEndTime]):
(-[WebAVPlayerController timebaseRate]):
(-[WebAVPlayerController externalMetadata]):
(+[WebAVPlayerController keyPathsForValuesAffectingTimeControlStatus]):
(-[WebAVPlayerController timeControlStatus]):
(+[WebAVPlayerController keyPathsForValuesAffectingDisplayedDuration]):
(-[WebAVPlayerController displayedDuration]):
(-[WebAVPlayerController contentDurationCached]):
(-[WebAVPlayerController currentDisplayTime]):
(-[WebAVPlayerController currentOrEstimatedDate]):
(+[WebAVPlayerController keyPathsForValuesAffectingCurrentTime]):
(-[WebAVPlayerController currentTime]):
(-[WebAVPlayerController displayTimeRangeForNavigation]):
(-[WebAVPlayerController isAtMaxTime]):
(-[WebAVPlayerController isContentDurationIndefinite]):
(-[WebAVPlayerController timeRangeForNavigation]):
(-[WebAVPlayerController timeFromDisplayTime:]):
(-[WebAVPlayerController displayTimeFromTime:]):
(-[WebAVPlayerController activeRate]):
(-[WebAVPlayerController setActiveRate:]):
(-[WebAVPlayerController requestNavigateToTime:fromTime:reason:playWhenReady:permissionHandler:seekCompleti
(-[WebAVPlayerController seekToTime:seekReason:completionHandler:]):
(-[WebAVPlayerController requestSeekToTime:seekReason:permissionHandler:completionHandler:]):
(-[WebAVPlayerController requestPauseWithCompletion:]):
(-[WebAVPlayerController requestPlayWithCompletion:]):
(-[WebAVPlayerController requestSeekToTime:reason:playWhenReady:]):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::viewDidLeaveWindow):

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




More information about the webkit-changes mailing list