Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cef383eee99194c1d8a6dcd122cd0d3c040f9e8b
https://github.com/WebKit/WebKit/commit/cef383eee99194c1d8a6dcd122cd0d3c040f9e8b
Author: Jer Noble <[email protected]>
Date: 2025-11-06 (Thu, 06 Nov 2025)
Changed paths:
A LayoutTests/media/track/text-track-caption-style-menu-expected.txt
A LayoutTests/media/track/text-track-caption-style-menu.html
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp
M Source/WebCore/Modules/mediacontrols/MediaControlsHost.h
M Source/WebCore/en.lproj/Localizable.strings
M Source/WebCore/html/HTMLMediaElement.cpp
M Source/WebCore/html/HTMLMediaElement.h
M Source/WebCore/html/shadow/MediaControlTextTrackContainerElement.cpp
M Source/WebCore/html/shadow/MediaControlTextTrackContainerElement.h
M Source/WebCore/html/track/TextTrack.cpp
M Source/WebCore/html/track/TextTrack.h
M Source/WebCore/page/CaptionUserPreferences.cpp
M Source/WebCore/page/CaptionUserPreferences.h
M Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp
M Source/WebCore/page/CaptionUserPreferencesMediaAF.h
M Source/WebCore/page/ChromeClient.h
M Source/WebCore/page/ContextMenuContext.h
M Source/WebCore/page/ContextMenuController.cpp
M Source/WebCore/page/ContextMenuProvider.h
M Source/WebCore/platform/ContextMenuItem.cpp
M Source/WebCore/platform/ContextMenuItem.h
M Source/WebCore/platform/LocalizedStrings.cpp
M Source/WebCore/platform/LocalizedStrings.h
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/Internals.h
M Source/WebCore/testing/Internals.idl
M Source/WebKit/Platform/mac/MenuUtilities.mm
M Source/WebKit/Shared/API/c/WKContextMenuItemTypes.h
M Source/WebKit/Shared/ContextMenuContextData.cpp
M Source/WebKit/Shared/ContextMenuContextData.h
M Source/WebKit/Shared/ContextMenuContextData.serialization.in
M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
M Source/WebKit/UIProcess/PageClient.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebPageProxy.messages.in
M Source/WebKit/UIProcess/ios/PageClientImplIOS.h
M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
M Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h
M Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
M Source/WebKit/UIProcess/mac/PageClientImplMac.h
M Source/WebKit/UIProcess/mac/PageClientImplMac.mm
M Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h
M Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm
M Source/WebKit/UIProcess/mac/WebViewImpl.h
M Source/WebKit/UIProcess/mac/WebViewImpl.mm
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
Log Message:
-----------
Add Experimental Caption Display Settings menu
rdar://163663431
https://bugs.webkit.org/show_bug.cgi?id=301650
Reviewed by Andy Estes.
Hook up the experimental CaptionDisplaySettings menus to the default
media controls.
When this experimental feature flag is enabled, the Subtitle menu
will have a new "Settings" submenu, and when those entries are selected,
the system's subtitle settings will change. When the Settings menu
is visible, send a message back to the media element which is showing
the menu and enable a preview of the style selection, by adding a
synthetic VTTCue and hiding any existing subtitles.
Because the messages need to flow back to the correct media element,
many existing methods need to take a HTMLMediaElementIdentifier and
this identifier needs to be stored by the context menu.
Test: media/track/text-track-caption-style-menu.html
* LayoutTests/media/track/text-track-caption-style-menu-expected.txt: Added.
* LayoutTests/media/track/text-track-caption-style-menu.html: Added.
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp:
(WebCore::MediaControlsHost::ensureTextTrackContainer):
(WebCore::MediaControlsHost::textTrackContainer):
(WebCore::MediaControlsHost::captionPreferencesChanged):
(WebCore::MediaControlsHost::showMediaControlsContextMenu):
(WebCore::MediaControlsHost::showCaptionDisplaySettingsPreview):
(WebCore::MediaControlsHost::hideCaptionDisplaySettingsPreview):
* Source/WebCore/Modules/mediacontrols/MediaControlsHost.h:
* Source/WebCore/en.lproj/Localizable.strings:
* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::showCaptionDisplaySettingsPreview):
(WebCore::HTMLMediaElement::hideCaptionDisplaySettingsPreview):
(WebCore::HTMLMediaElement::captionPreferencesChanged):
* Source/WebCore/html/HTMLMediaElement.h:
* Source/WebCore/html/shadow/MediaControlTextTrackContainerElement.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):
(WebCore::MediaControlTextTrackContainerElement::updateTextStrokeStyle):
(WebCore::MediaControlTextTrackContainerElement::showCaptionDisplaySettingsPreview):
(WebCore::MediaControlTextTrackContainerElement::hideCaptionDisplaySettingsPreview):
(WebCore::MediaControlTextTrackContainerElement::captionPreferencesChanged):
(WebCore::MediaControlTextTrackContainerElement::updateSizes):
(WebCore::MediaControlTextTrackContainerElement::currentlyActiveCues const):
(WebCore::MediaControlTextTrackContainerElement::ensurePreviewCue const):
* Source/WebCore/html/shadow/MediaControlTextTrackContainerElement.h:
* Source/WebCore/html/track/TextTrack.cpp:
(WebCore::TextTrack::captionMenuOnItem):
* Source/WebCore/html/track/TextTrack.h:
* Source/WebCore/page/CaptionUserPreferences.cpp:
(WebCore::trackDisplayName):
(WebCore::CaptionUserPreferences::captionPreviewTitle const):
* Source/WebCore/page/CaptionUserPreferences.h:
* Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:
(WebCore::trackDisplayName):
(WebCore::CaptionUserPreferencesMediaAF::captionPreviewTitle const):
* Source/WebCore/page/CaptionUserPreferencesMediaAF.h:
* Source/WebCore/page/ChromeClient.h:
(WebCore::ChromeClient::showMediaControlsContextMenu):
(WebCore::ChromeClient::showCaptionDisplaySettings):
* Source/WebCore/page/ContextMenuContext.h:
(WebCore::ContextMenuContext::setMediaElementIdentifier):
(WebCore::ContextMenuContext::mediaElementIdentifier const):
* Source/WebCore/page/ContextMenuController.cpp:
(WebCore::ContextMenuController::maybeCreateContextMenu):
(WebCore::ContextMenuController::checkOrEnableIfNeeded const):
* Source/WebCore/page/ContextMenuProvider.h:
(WebCore::ContextMenuProvider::prepareContext):
* Source/WebCore/platform/ContextMenuItem.cpp:
(WebCore::isValidContextMenuAction):
* Source/WebCore/platform/ContextMenuItem.h:
* Source/WebCore/platform/LocalizedStrings.cpp:
(WebCore::textTrackOnMenuItemText):
* Source/WebCore/platform/LocalizedStrings.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::captionStyleMenuWillOpenForMediaElement):
(WebCore::Internals::captionStyleMenuDidCloseForMediaElement):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/Platform/mac/MenuUtilities.mm:
(WebKit::symbolNameWithTypeForAction):
* Source/WebKit/Shared/API/c/WKContextMenuItemTypes.h:
* Source/WebKit/Shared/ContextMenuContextData.cpp:
(WebKit::m_selectionIsEditable):
(WebKit::ContextMenuContextData::ContextMenuContextData):
* Source/WebKit/Shared/ContextMenuContextData.h:
(WebKit::ContextMenuContextData::setMediaElementIdentifier):
(WebKit::ContextMenuContextData::mediaElementIdentifier const):
* Source/WebKit/Shared/ContextMenuContextData.serialization.in:
* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
* Source/WebKit/UIProcess/PageClient.h:
(WebKit::PageClient::showMediaControlsContextMenu):
(WebKit::PageClient::showCaptionDisplaySettings):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showCaptionDisplaySettings):
(WebKit::WebPageProxy::showCaptionDisplaySettingsPreview):
(WebKit::WebPageProxy::hideCaptionDisplaySettingsPreview):
(WebKit::WebPageProxy::showMediaControlsContextMenu):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::showMediaControlsContextMenu):
* Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h:
* Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant _uiMenuElementsForMediaControlContextMenuItems:]):
(-[WKActionSheetAssistant
showMediaControlsContextMenu:items:frameInfo:identifier:completionHandler:]):
(-[WKActionSheetAssistant captionStyleMenuWillOpen:]):
(-[WKActionSheetAssistant captionStyleMenuDidClose:]):
(-[WKActionSheetAssistant
showMediaControlsContextMenu:items:completionHandler:]): Deleted.
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView
_showMediaControlsContextMenu:items:frameInfo:identifier:completionHandler:]):
(-[WKContentView captionStyleMenuWillOpenWithFrameInfo:identifier:]):
(-[WKContentView captionStyleMenuDidCloseWithFrameInfo:identifier:]):
(-[WKContentView _showMediaControlsContextMenu:items:completionHandler:]):
Deleted.
* Source/WebKit/UIProcess/mac/PageClientImplMac.h:
* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::showCaptionDisplaySettings):
* Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h:
* Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:
(-[WKMenuDelegate captionStyleMenuWillOpen:]):
(-[WKMenuDelegate captionStyleMenuDidClose:]):
(WebKit::WebContextMenuProxyMac::getContextMenuItem):
(WebKit::WebContextMenuProxyMac::useContextMenuItems):
(WebKit::WebContextMenuProxyMac::captionStyleMenuController):
(WebKit::WebContextMenuProxyMac::menuDelegate):
(WebKit::WebContextMenuProxyMac::captionStyleMenuWillOpen):
(WebKit::WebContextMenuProxyMac::captionStyleMenuDidClose):
* Source/WebKit/UIProcess/mac/WebViewImpl.h:
* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::showCaptionDisplaySettings):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::showMediaControlsContextMenu):
(WebKit::WebChromeClient::showCaptionDisplaySettings):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::showMediaControlsContextMenu):
(WebKit::WebPage::showCaptionDisplaySettingsPreview):
(WebKit::WebPage::hideCaptionDisplaySettingsPreview):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
Canonical link: https://commits.webkit.org/302688@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications