Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5e880b636f8d2ac050e9fef612adc4132ab6340f
      
https://github.com/WebKit/WebKit/commit/5e880b636f8d2ac050e9fef612adc4132ab6340f
  Author: Dominic Mazzoni <[email protected]>
  Date:   2026-04-07 (Tue, 07 Apr 2026)

  Changed paths:
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
    M Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm
    M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

  Log Message:
  -----------
  AX: Web Content processes shouldn't send the accessibility remote token until 
after accessibility is initialized
https://bugs.webkit.org/show_bug.cgi?id=311616
rdar://174215797

Reviewed by Tyler Wilcock.

There's a race condition where if you start VoiceOver after Safari is
already running, VoiceOver discovers the WKAccessibilityWebPageObject
- the root of the web content accessibility tree - before the web
content process has initialized accessibility. The result is that
attribute queries fail and the object returns nil for its
attributes. VoiceOver gets confused when a child returns nil for its
AXRole, and fails to query it again.

The fix is to not send the remote token until after accessibility is
initialized. That way the UI process WebViewImpl won't expose the
remote element until it's actually ready.

* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::sendAccessibilityTokenIfNeeded):
* Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformInitializeAccessibility):
(WebKit::WebPage::sendAccessibilityTokenIfNeeded):
* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::accessibilityFocusedUIElement):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to