[webkit-changes] [WebKit/WebKit] f40d48: Text tracks are not visible in fullscreen

Per Arne Vollan noreply at github.com
Sat Apr 1 20:59:36 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f40d4830b8c1a420d53cc9aabd15c35d4414e711
      https://github.com/WebKit/WebKit/commit/f40d4830b8c1a420d53cc9aabd15c35d4414e711
  Author: Per Arne Vollan <pvollan at apple.com>
  Date:   2023-04-01 (Sat, 01 Apr 2023)

  Changed paths:
    M LayoutTests/platform/ios-simulator-wk2/TestExpectations
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/html/shadow/MediaControlTextTrackContainerElement.cpp
    M Source/WebCore/platform/graphics/TextTrackRepresentation.cpp
    M Source/WebCore/platform/graphics/TextTrackRepresentation.h
    M Source/WebCore/platform/graphics/cocoa/TextTrackRepresentationCocoa.h
    M Source/WebCore/platform/graphics/cocoa/TextTrackRepresentationCocoa.mm
    M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h
    M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
    M Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h
    M Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in
    M Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    A Source/WebKit/WebProcess/cocoa/TextTrackRepresentationCocoa.h
    A Source/WebKit/WebProcess/cocoa/TextTrackRepresentationCocoa.mm
    M Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.h
    M Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm

  Log Message:
  -----------
  Text tracks are not visible in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=254473
rdar://107230116

Reviewed by Jer Noble.

When the setting "GPU Process: Block Media Layer Re-hosting" is enabled, text tracks are not visible
in fullscreen, since this depends on the ability to create a CA remote layer hosting context in the
WebProcess. This patch works around the requirement to create a CA context in the WebContent process
by sending the caption bitmaps to the UI process, where they are rendered into a CA layer, which is
inserted into the fullscreen CA layer tree. The CA layer tree in the WebContent process is still
being created, since there is some amount of caption code that depends on this in order to get the
caption bounds correct. This patch also sets the flag "GPU Process: Block Media Layer Re-hosting" to
true, which is required to be able to block CARenderServer in the WebContent process' sandbox.
Layout test runs on iOS simulator on the bots showed some flaky timeouts of the test
webrtc/video-rotation.html. Looking at test history, this test has already been flaky on simulator.
This patch is about captions in fullscreen, so I don't think it will affect this test, although it
cannot be ruled out. I marked the test as flaky. This is being tracked in webkit.org/b/254872.

* LayoutTests/platform/ios-simulator-wk2/TestExpectations:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/shadow/MediaControlTextTrackContainerElement.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentationIfNeeded):
* Source/WebCore/platform/graphics/TextTrackRepresentation.cpp:
(WebCore::TextTrackRepresentation::create):
* Source/WebCore/platform/graphics/TextTrackRepresentation.h:
* Source/WebCore/platform/graphics/cocoa/TextTrackRepresentationCocoa.h:
* Source/WebCore/platform/graphics/cocoa/TextTrackRepresentationCocoa.mm:
(WebCore::TextTrackRepresentation::create):
(WebCore::TextTrackRepresentationCocoa::representationFactory):
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h:
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::textTrackRepresentationUpdate):
(VideoFullscreenInterfaceAVKit::textTrackRepresentationSetContentsScale):
(VideoFullscreenInterfaceAVKit::textTrackRepresentationSetHidden):
(VideoFullscreenInterfaceAVKit::captionsLayer):
(VideoFullscreenInterfaceAVKit::setCaptionsFrame):
(VideoFullscreenInterfaceAVKit::setupCaptionsLayer):
(VideoFullscreenInterfaceAVKit::removeCaptionsLayer):
* Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
* Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(WebKit::VideoFullscreenManagerProxy::createLayerHostViewWithID):
(WebKit::VideoFullscreenManagerProxy::textTrackRepresentationUpdate):
(WebKit::VideoFullscreenManagerProxy::textTrackRepresentationSetContentsScale):
(WebKit::VideoFullscreenManagerProxy::textTrackRepresentationSetHidden):
(WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen):
(WebKit::VideoFullscreenManagerProxy::setVideoLayerFrame):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.h:
(WebKit::VideoFullscreenInterfaceContext::rootLayer const):
(WebKit::VideoFullscreenInterfaceContext::setRootLayer):
* Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::createModelAndInterface):
(WebKit::VideoFullscreenManager::ensureModelAndInterface):
(WebKit::VideoFullscreenManager::setupRemoteLayerHosting):
(WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):
(WebKit::VideoFullscreenManager::requestVideoContentLayer):
(WebKit::VideoFullscreenManager::didCleanupFullscreen):
(WebKit::VideoFullscreenManager::setVideoLayerFrameFenced):
(WebKit::VideoFullscreenManager::updateTextTrackRepresentationForVideoElement):
(WebKit::VideoFullscreenManager::setTextTrackRepresentationContentScaleForVideoElement):
(WebKit::VideoFullscreenManager::setTextTrackRepresentationIsHiddenForVideoElement):

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




More information about the webkit-changes mailing list