Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1c8dc7444b9c08b3346d1b9011ec61fb4f436f40
      
https://github.com/WebKit/WebKit/commit/1c8dc7444b9c08b3346d1b9011ec61fb4f436f40
  Author: Tyler Wilcock <[email protected]>
  Date:   2025-06-05 (Thu, 05 Jun 2025)

  Changed paths:
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h
    M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
    M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm

  Log Message:
  -----------
  AX: Build the placeholder empty-content isolated tree before starting the AX 
thread to guarantee it's in place for the first accessibility request
https://bugs.webkit.org/show_bug.cgi?id=294054
rdar://152617287

Reviewed by Joshua Hoffman.

Prior to this commit, we would start the accessibility thread during the 
initial main-thread initialization that happens
in the first -[WKAccessibilityWebPageObjectMac accessibilityAttributeValue:] 
request, but the trigger to create the
placeholder tree wouldn't happen until later, meaning any subsequent 
accessibilityRootObjectWrapper or accessibilityFocusedUIElement
would be guaranteed to hit the main-thread. This manifested 100% of the time on 
http://html.spec.whatwg.org, a large
page that takes a long time to load, and resulted in a complete 
Safari-not-responding until the page fully loaded, which
entirely defeats the purpose of having the empty-content placeholder tree.

With this commit, we create the empty placeholder tree first, then initialize 
the secondary thread, guaranteeing we have
a tree ready to go for the first off-main-thread request.

* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::buildIsolatedTreeIfNeeded):
(WebCore::AXObjectCache::buildAccessibilityTreeIfNeeded): Deleted.
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h:
* Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
(-[WKAccessibilityWebPageObjectBase accessibilityRootObjectWrapper:]):
(-[WKAccessibilityWebPageObjectBase setWindow:]):
(-[WKAccessibilityWebPageObjectBase _buildIsolatedTreeIfNeeded]):
* Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to