Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a428fb0a4209061f8d73cffbeb955556f7a0147d
      
https://github.com/WebKit/WebKit/commit/a428fb0a4209061f8d73cffbeb955556f7a0147d
  Author: Jer Noble <jer.no...@apple.com>
  Date:   2023-07-23 (Sun, 23 Jul 2023)

  Changed paths:
    M 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
    M Source/WebCore/platform/graphics/cocoa/NullVideoFullscreenInterface.h
    M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h
    M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
    M Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm
    M Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm

  Log Message:
  -----------
  [iOS] Exiting PiP by navigation then restoring page from back/forward cache 
results in missing video content
https://bugs.webkit.org/show_bug.cgi?id=259377
rdar://112448871

Reviewed by Eric Carlson.

A few interrelated fixes are needed to resolve this behavior:

- Add a new method to VideoFullscreenInterfaceAVKit, 
exitFullscreenWithoutAnimationToMode(),
  which will tear down fullscreen and PiP without invalidating the interface 
itself.
- In MediaPlayerPrivateAVFoundationObjC, reset m_haveBeenAskedToCreateLayer to 
false when
  destroying the video layer so that the next creation request won't bail out 
early.
- A refcount mismatch occurs when moving from video fullscreen to pip, as the 
WebContent
  process calls setupFullscreenWithID() again in this case, but does not call
  removeClientForContext(). Only add an additional refcount if the interface is 
not already
  in fullscreen mode.
- Remove the iOS-only direct call of removeClientForContext() from
  exitVideoFullscreenToModeWithoutAnimation(). This call will now correctly 
result in
  the interface calling removeClientForContext() on both macOS and iOS.

* 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyVideoLayer):
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h:
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::exitFullscreen):
(VideoFullscreenInterfaceAVKit::exitFullscreenWithoutAnimationToMode):
* Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
(WebKit::VideoFullscreenManagerProxy::exitFullscreenWithoutAnimationToMode):
* Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to