Skip to content

AX: Translate accessibility announcements (ARIA Notify, live regions) when the page is presented as a machine translation - #71083

Merged
webkit-commit-queue merged 1 commit into
WebKit:mainfrom
twilco:eng/AX-Translate-accessibility-announcements-ARIA-Notify-live-regions-when-the-page-is-presented-as-a-machine-translation
Aug 10, 2026
Merged

webkit-commit-queue merged 1 commit into
WebKit:mainfrom
twilco:eng/AX-Translate-accessibility-announcements-ARIA-Notify-live-regions-when-the-page-is-presented-as-a-machine-translation

Conversation

@twilco

@twilco twilco commented Aug 6, 2026 •

Copy link
Copy Markdown
Contributor

2b96b32

AX: Translate accessibility announcements (ARIA Notify, live regions) when the page is presented as a machine translation
https://bugs.webkit.org/show_bug.cgi?id=321206
rdar://184264303

Reviewed by Dominic Mazzoni.

Core-AAM adds a normative requirement that when a user agent presents a document as a machine
translation, it must translate ariaNotify() and live region announcements before handing it to
the platform, so that assistive technology conveys it in the language that is visually presented.

WebKit did not do this. Safari translates a page by rewriting the DOM through the text manipulation
SPI, which cannot reach either case. ariaNotify() strings come from script and never enter the DOM,
and a live region announcement is computed from the DOM and posted on a zero-delay timer, before the
translation round trip replaces the text. The result was announcements spoken in the original
language, and live regions spoken twice.

Announcements are now held in a FIFO queue in AXObjectCache while the embedder is asked to translate
them, through a new _WKTranslationDelegate. WebKit cannot translate text itself, instead relying on
TranslationUIServices, allowing the client to supply it. The client also tells WebKit it's presenting
a translation by setting -_displayedTranslationLocaleIdentifier. With no locale set, the behavior is
unchanged.

Ordering and failure handling are the substance of the change. Translation requests are issued immediately and
in parallel, but announcements are released strictly in the order they were produced, so a slow
translation cannot let a later announcement overtake an earlier one. Each entry has a 250ms deadline,
after which the original text is announced in its original language, preventing a stalled or unavailable
translation service from blocking announcements outright. A translation client that declines, replies late, or drops
the completion handler entirely degrades the same way.

Finally, TextManipulationController now records the container it rewrites, so the children-changed
that its own text swap produces does not announce a live region a second time.

* LayoutTests/accessibility/ios-simulator/aria-notify-translated-expected.txt: Added.
* LayoutTests/accessibility/ios-simulator/aria-notify-translated.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translated-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translated.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-dropped-handler-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-dropped-handler.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-failure-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-failure.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-late-reply-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-late-reply.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-not-active-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-not-active.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-ordering-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-ordering.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-timeout-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-timeout.html: Added.
* LayoutTests/accessibility/mac/live-regions/live-region-translated-expected.txt: Added.
* LayoutTests/accessibility/mac/live-regions/live-region-translated.html: Added.
* Source/WebCore/accessibility/AXLiveRegionManager.cpp:
(WebCore::AXLiveRegionManager::postAnnouncementForChange):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::AXObjectCache):
(WebCore::AXObjectCache::~AXObjectCache):
(WebCore::AXObjectCache::handleAllDeferredChildrenChanged):
(WebCore::AXObjectCache::handleChildrenChanged):
(WebCore::announcementTranslationTimeoutOverrideForTesting):
(WebCore::AXObjectCache::setAnnouncementTranslationTimeoutForTesting):
(WebCore::AXObjectCache::announcementTranslationTimeout):
(WebCore::AXObjectCache::translateAnnouncementThenAssemble):
(WebCore::AXObjectCache::deferReRenderedContent):
(WebCore::AXObjectCache::isReRenderedContent const):
(WebCore::AXObjectCache::announcementTranslationDidComplete):
(WebCore::AXObjectCache::flushPendingAnnouncements):
(WebCore::AXObjectCache::scheduleAnnouncementTimeoutTimerIfNeeded):
(WebCore::AXObjectCache::pendingAnnouncementTimeoutTimerFired):
(WebCore::AXObjectCache::postARIANotifyNotification):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/editing/TextManipulationController.cpp:
(WebCore::TextManipulationController::replace):
* Source/WebCore/page/ChromeClient.h:
(WebCore::ChromeClient::translateAccessibilityAnnouncementStrings):
* Source/WebCore/page/Page.cpp:
(WebCore::m_mediaSessionManagerFactory):
(WebCore::Page::setDisplayedTranslationLocaleIdentifier):
* Source/WebCore/page/Page.h:
(WebCore::Page::isPresentingMachineTranslation const):
* Source/WebCore/page/PageConfiguration.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setAccessibilityAnnouncementTranslationTimeout):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/Headers.cmake:
* Source/WebKit/PlatformCocoa.cmake:
* Source/WebKit/Shared/WebPageCreationParameters.h:
* Source/WebKit/Shared/WebPageCreationParameters.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _translateAccessibilityAnnouncementStrings:sourceLocaleIdentifiers:targetLocaleIdentifier:completionHandler:]):
(-[WKWebView _translationDelegate]):
(-[WKWebView _setTranslationDelegate:]):
(-[WKWebView _displayedTranslationLocaleIdentifier]):
(-[WKWebView _setDisplayedTranslationLocaleIdentifier:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTranslationDelegate.h: Added.
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h:
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::translateAccessibilityAnnouncementStrings):
* Source/WebKit/UIProcess/PageClient.h:
(WebKit::PageClient::translateAccessibilityAnnouncementStrings):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::displayedTranslationLocaleIdentifier const):
(WebKit::WebPageProxy::setDisplayedTranslationLocaleIdentifier):
(WebKit::WebPageProxy::translateAccessibilityAnnouncementStrings):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/WebPageProxyInternals.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::translateAccessibilityAnnouncementStrings):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_allowsImmersiveEnvironments):
(WebKit::WebPage::setDisplayedTranslationLocaleIdentifier):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/AccessibilityAnnouncementTranslation.mm: Added.
(TestWebKitAPI::TEST(AccessibilityAnnouncementTranslation, DisplayedTranslationLocaleRoundTripsAndResetsOnNavigation)):
* Tools/WebKitTestRunner/TestOptions.cpp:
(WTR::TestOptions::defaults):
(WTR::TestOptions::keyTypeMapping):
* Tools/WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::announcementTranslationMode const):
(WTR::TestOptions::displayedTranslationLocale const):
* Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::finishCreatingPlatformWebView):
* Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
* Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
(-[TestRunnerWKWebView initWithFrame:configuration:]):
(-[TestRunnerWKWebView _webView:translateAccessibilityAnnouncementStrings:sourceLocaleIdentifiers:targetLocaleIdentifier:completionHandler:]):

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

4218643

Misc iOS, visionOS, tvOS & watchOS macOS Linux Windows Apple Internal
✅ 🧪 style ✅ 🛠 ios ✅ 🛠 mac ✅ 🛠 wpe ✅ 🛠 win ❌ 🛠 ios-apple
✅ 🧪 bindings ✅ 🛠 ios-sim ✅ 🛠 mac-AS-debug ✅ 🧪 wpe-wk2 ❌ 🧪 win-tests ✅ 🛠 mac-apple
✅ 🧪 webkitperl ✅ 🧪 ios-wk2 ✅ 🧪 api-mac ✅ 🧪 api-wpe ✅ 🛠 vision-apple
✅ 🧪 ios-wk2-wpt ✅ 🧪 api-mac-debug
✅ 🧪 api-ios ✅ 🧪 mac-wk2 loading 🛠 gtk3-gcc
✅ 🛠 ios-safer-cpp ✅ 🧪 mac-AS-debug-wk2 ✅ 🛠 gtk
✅ 🛠 vision ✅ 🧪 mac-wk2-stress ✅ 🧪 gtk-wk2
✅ 🛠 🧪 merge ✅ 🛠 vision-sim ✅ 🧪 mac-intel-wk2 ✅ 🧪 api-gtk
✅ 🧪 vision-wk2 ✅ 🛠 mac-safer-cpp ✅ 🛠 playstation
✅ 🛠 tv loading 🧪 mac-site-isolation
✅ 🛠 tv-sim
✅ 🛠 watch
✅ 🛠 watch-sim

@twilco twilco self-assigned this Aug 6, 2026
@twilco
twilco requested a review from JonWBedard as a code owner August 6, 2026 21:19
@twilco twilco added the Accessibility For bugs related to accessibility. label Aug 6, 2026
Comment thread LayoutTests/accessibility/ios-simulator/aria-notify-translated.html Outdated
Comment thread LayoutTests/accessibility/mac/live-regions/live-region-translated-expected.txt Outdated
return announcementTranslationTimeoutOverrideForTesting().value_or(defaultAnnouncementTranslationTimeout);
}

void AXObjectCache::translateAnnouncementThenAssemble(Ref<AccessibilityObject>&& object, Vector<String>&& segments, Vector<String>&& sourceLanguages, Function<void(Vector<String>&&, const String&)>&& assemble)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It'd probably be nice to use a vector of structs rather than parallel segments and sourceLanguages vectors.

Also, should we be using locale or language? Let's be consistent.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sourceLanguages ended up being unnecessary, so I removed it entirely.

Complete consistency might be difficult without touching unrelated code, since the translation infrastructure / Safari calls it "locale" while the AX APIs use "language".

if (page) {
// Every announcement in a translated rendering needs translating.
targetLocale = page->displayedTranslationLocaleIdentifier();
needsTranslation = !targetLocale.isEmpty();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we be checking that individual strings aren't already in the target locale?

What happens if I enable machine translation to English but the page has a mix of English and another language?

@twilco twilco Aug 7, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we be checking that individual strings aren't already in the target locale?

I originally did this, but it ended up meaning the feature did nothing, since when the pages gets translated, the lang attribute of the html element gets set to the target language, meaning every element is technically already in the target locale via inheritance.

What happens if I enable machine translation to English but the page has a mix of English and another language?

It all gets translated to English — whatever is English stays as-is.

@webkit-ews-buildbot

Copy link
Copy Markdown
Collaborator

macOS Safer C++ Build #125800 (b6ba13e)

❌ Found 1 failing file with 1 issue. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming.
(cc @rniwa)

@webkit-ews-buildbot

Copy link
Copy Markdown
Collaborator

iOS Safer C++ Build #45784 (b6ba13e)

❌ Found 1 failing file with 1 issue. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming.
(cc @rniwa)

@twilco
twilco force-pushed the eng/AX-Translate-accessibility-announcements-ARIA-Notify-live-regions-when-the-page-is-presented-as-a-machine-translation branch from b6ba13e to 72b2351 Compare August 7, 2026 00:28
@twilco
twilco requested a review from rr-codes as a code owner August 7, 2026 00:28
@twilco
twilco force-pushed the eng/AX-Translate-accessibility-announcements-ARIA-Notify-live-regions-when-the-page-is-presented-as-a-machine-translation branch from 72b2351 to 4218643 Compare August 7, 2026 01:52
@twilco twilco added merge-queue Applied to send a pull request to merge-queue and removed merging-blocked Applied to prevent a change from being merged labels Aug 10, 2026
… when the page is presented as a machine translation

https://bugs.webkit.org/show_bug.cgi?id=321206
rdar://184264303

Reviewed by Dominic Mazzoni.

Core-AAM adds a normative requirement that when a user agent presents a document as a machine
translation, it must translate ariaNotify() and live region announcements before handing it to
the platform, so that assistive technology conveys it in the language that is visually presented.

WebKit did not do this. Safari translates a page by rewriting the DOM through the text manipulation
SPI, which cannot reach either case. ariaNotify() strings come from script and never enter the DOM,
and a live region announcement is computed from the DOM and posted on a zero-delay timer, before the
translation round trip replaces the text. The result was announcements spoken in the original
language, and live regions spoken twice.

Announcements are now held in a FIFO queue in AXObjectCache while the embedder is asked to translate
them, through a new _WKTranslationDelegate. WebKit cannot translate text itself, instead relying on
TranslationUIServices, allowing the client to supply it. The client also tells WebKit it's presenting
a translation by setting -_displayedTranslationLocaleIdentifier. With no locale set, the behavior is
unchanged.

Ordering and failure handling are the substance of the change. Translation requests are issued immediately and
in parallel, but announcements are released strictly in the order they were produced, so a slow
translation cannot let a later announcement overtake an earlier one. Each entry has a 250ms deadline,
after which the original text is announced in its original language, preventing a stalled or unavailable
translation service from blocking announcements outright. A translation client that declines, replies late, or drops
the completion handler entirely degrades the same way.

Finally, TextManipulationController now records the container it rewrites, so the children-changed
that its own text swap produces does not announce a live region a second time.

* LayoutTests/accessibility/ios-simulator/aria-notify-translated-expected.txt: Added.
* LayoutTests/accessibility/ios-simulator/aria-notify-translated.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translated-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translated.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-dropped-handler-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-dropped-handler.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-failure-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-failure.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-late-reply-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-late-reply.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-not-active-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-not-active.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-ordering-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-ordering.html: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-timeout-expected.txt: Added.
* LayoutTests/accessibility/mac/aria-notify-translation-timeout.html: Added.
* LayoutTests/accessibility/mac/live-regions/live-region-translated-expected.txt: Added.
* LayoutTests/accessibility/mac/live-regions/live-region-translated.html: Added.
* Source/WebCore/accessibility/AXLiveRegionManager.cpp:
(WebCore::AXLiveRegionManager::postAnnouncementForChange):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::AXObjectCache):
(WebCore::AXObjectCache::~AXObjectCache):
(WebCore::AXObjectCache::handleAllDeferredChildrenChanged):
(WebCore::AXObjectCache::handleChildrenChanged):
(WebCore::announcementTranslationTimeoutOverrideForTesting):
(WebCore::AXObjectCache::setAnnouncementTranslationTimeoutForTesting):
(WebCore::AXObjectCache::announcementTranslationTimeout):
(WebCore::AXObjectCache::translateAnnouncementThenAssemble):
(WebCore::AXObjectCache::deferReRenderedContent):
(WebCore::AXObjectCache::isReRenderedContent const):
(WebCore::AXObjectCache::announcementTranslationDidComplete):
(WebCore::AXObjectCache::flushPendingAnnouncements):
(WebCore::AXObjectCache::scheduleAnnouncementTimeoutTimerIfNeeded):
(WebCore::AXObjectCache::pendingAnnouncementTimeoutTimerFired):
(WebCore::AXObjectCache::postARIANotifyNotification):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/editing/TextManipulationController.cpp:
(WebCore::TextManipulationController::replace):
* Source/WebCore/page/ChromeClient.h:
(WebCore::ChromeClient::translateAccessibilityAnnouncementStrings):
* Source/WebCore/page/Page.cpp:
(WebCore::m_mediaSessionManagerFactory):
(WebCore::Page::setDisplayedTranslationLocaleIdentifier):
* Source/WebCore/page/Page.h:
(WebCore::Page::isPresentingMachineTranslation const):
* Source/WebCore/page/PageConfiguration.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setAccessibilityAnnouncementTranslationTimeout):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/Headers.cmake:
* Source/WebKit/PlatformCocoa.cmake:
* Source/WebKit/Shared/WebPageCreationParameters.h:
* Source/WebKit/Shared/WebPageCreationParameters.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _translateAccessibilityAnnouncementStrings:sourceLocaleIdentifiers:targetLocaleIdentifier:completionHandler:]):
(-[WKWebView _translationDelegate]):
(-[WKWebView _setTranslationDelegate:]):
(-[WKWebView _displayedTranslationLocaleIdentifier]):
(-[WKWebView _setDisplayedTranslationLocaleIdentifier:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKTranslationDelegate.h: Added.
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h:
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::translateAccessibilityAnnouncementStrings):
* Source/WebKit/UIProcess/PageClient.h:
(WebKit::PageClient::translateAccessibilityAnnouncementStrings):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::displayedTranslationLocaleIdentifier const):
(WebKit::WebPageProxy::setDisplayedTranslationLocaleIdentifier):
(WebKit::WebPageProxy::translateAccessibilityAnnouncementStrings):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/WebPageProxyInternals.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::translateAccessibilityAnnouncementStrings):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_allowsImmersiveEnvironments):
(WebKit::WebPage::setDisplayedTranslationLocaleIdentifier):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/AccessibilityAnnouncementTranslation.mm: Added.
(TestWebKitAPI::TEST(AccessibilityAnnouncementTranslation, DisplayedTranslationLocaleRoundTripsAndResetsOnNavigation)):
* Tools/WebKitTestRunner/TestOptions.cpp:
(WTR::TestOptions::defaults):
(WTR::TestOptions::keyTypeMapping):
* Tools/WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::announcementTranslationMode const):
(WTR::TestOptions::displayedTranslationLocale const):
* Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::finishCreatingPlatformWebView):
* Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
* Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
(-[TestRunnerWKWebView initWithFrame:configuration:]):
(-[TestRunnerWKWebView _webView:translateAccessibilityAnnouncementStrings:sourceLocaleIdentifiers:targetLocaleIdentifier:completionHandler:]):

Canonical link: https://commits.webkit.org/318920@main
@webkit-commit-queue
webkit-commit-queue force-pushed the eng/AX-Translate-accessibility-announcements-ARIA-Notify-live-regions-when-the-page-is-presented-as-a-machine-translation branch from 4218643 to 2b96b32 Compare August 10, 2026 20:06
@webkit-commit-queue

Copy link
Copy Markdown
Collaborator

Committed 318920@main (2b96b32): https://commits.webkit.org/318920@main

Reviewed commits have been landed. Closing PR #71083 and removing active labels.

@webkit-commit-queue
webkit-commit-queue merged commit 2b96b32 into WebKit:main Aug 10, 2026
@webkit-commit-queue webkit-commit-queue removed the merge-queue Applied to send a pull request to merge-queue label Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Accessibility For bugs related to accessibility.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants