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

  Changed paths:
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp

  Log Message:
  -----------
  AX: If the buildIsolatedTreeTimer fires when the main-thread tree is only a 
scroll area + web area, the isolated tree can permanently be empty
https://bugs.webkit.org/show_bug.cgi?id=311582
rdar://174179484

Reviewed by Joshua Hoffman.

In 286511@main when we implemented the feature to include ignored objects in the
isolated tree, we removed the walk-to-nearest-in-tree-ancestor behavior that
AXIsolatedTree::updateChidlren  had under the assumption that everything is now 
"in-tree".

However, it has been observed via logging that sometimes the 
buildIsolatedTreeTimer
fires when the page loading progress has barely progressed (49%), and the 
isolated
tree is built from a main-thread tree that is only a scroll area and web area.
This is supposed to be fine -- incremental updates via 
AXIsolatedTree::updateChildren
should fill in the tree when the page loads further.

However, none of those incremental updates actually update the children of the 
webarea,
and because the webarea thinks it has no children, the entire tree remains 
empty forever.

Logging shows we do this ancestor crawl on pages even where web content doesn't 
remain empty,
meaning we were dropping potentially important updates in other scena

Re-add this behavior, fixing the bug.

* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateChildren):

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



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

Reply via email to