Bug 281642
Summary: | AX: AXIsolatedTree::{collectNodeChangesForSubtree, removeSubtreeFromNodeMap} modify m_nodeMap children IDs when they shouldn't | ||
---|---|---|---|
Product: | WebKit | Reporter: | Tyler Wilcock <tyler_w> |
Component: | Accessibility | Assignee: | Tyler Wilcock <tyler_w> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | andresg_22, webkit-bug-importer |
Priority: | P2 | Keywords: | InRadar |
Version: | Safari 18 | ||
Hardware: | Unspecified | ||
OS: | Unspecified |
Tyler Wilcock
A key component of AXIsolatedTree::updateChildren is comparing the "old" children (what is in the node map) for an object vs. it's new children (the result of AccessibilityObject::children()). This makes AXIsolatedTree::{collectNodeChangesForSubtree, removeSubtreeFromNodeMap}'s behavior of modifying the children IDs for existing entries in the node map problematic, as that can happen before we've had a chance to call `updateChildren`, thus making the old and new children "match" even though they have actually changed since we last ran `updateChildren`. This means we won't create a new node change for this object, resulting in stale properties and missing children.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/138083925>
Tyler Wilcock
Pull request: https://github.com/WebKit/WebKit/pull/35339
EWS
Committed 285352@main (2206f4c04ec4): <https://commits.webkit.org/285352@main>
Reviewed commits have been landed. Closing PR #35339 and removing active labels.