Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e64627c9a4d48063a2c59af1f39fdb0195fc83cf
https://github.com/WebKit/WebKit/commit/e64627c9a4d48063a2c59af1f39fdb0195fc83cf
Author: Jer Noble <[email protected]>
Date: 2023-03-03 (Fri, 03 Mar 2023)
Changed paths:
M Source/WebCore/platform/cocoa/VideoFullscreenChangeObserver.h
M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
M Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm
M Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h
M Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm
Log Message:
-----------
REGRESSION(260774@main): [iPad] Video turns black after entering element
fullscreen
https://bugs.webkit.org/show_bug.cgi?id=253225
rdar://105990736
Reviewed by Tim Horton.
Prior to "no-double-layer-hosting", the fullscreen machinery would create an
AVPlayerLayerView and AVPlayerLayerViewController
simply to handle the case where the user might exit _element_ fullscreen when
playing a video, and that video may need to
immediately enter picture-in-picture mode. As part of that process, the new
AVPlayerLayerView would "steal" the video
content from an existing layer. This wasn't a problem in the double layer
hosting world; there wasn't anything to steal then,
as the video layer being stolen was empty.
However, in the "no-double-layer-hosting" world, stealing the video layer
results in no video being visible in the WKWebView,
as that video layer is the one inserted into the UI-side compositing tree. This
code could benefit from a complete re-write,
now that there's a pre-existing AVPlayerLayerView in the web compositing
hierarchy. For now, simply work around the problem
by not stealing the video layer prematurely, and by notifying the
VideoFullscreenManagerProxy when PiP has ended and the
video layer can be returned to its rightful owner.
* Source/WebCore/platform/cocoa/VideoFullscreenChangeObserver.h:
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::doSetup):
(VideoFullscreenInterfaceAVKit::returnToStandby):
* Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:
* Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(WebKit::VideoFullscreenModelContext::returnToStandby):
(WebKit::VideoFullscreenManagerProxy::returnToStandby):
Canonical link: https://commits.webkit.org/261143@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes