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