Reland: Avoid illegal serializations with aria-owns and unincluded nodes
When adding children, make sure we only add aria-owned children to the owning nodes. This avoids a common crash in chrome://bookmarks that has a confusing crash stack. In order to do this, when ComputeAccessibilityIsIgnored() is called, the relation cache must already be updated with the knowledge that the object is owned. Do not ever allow owned objects to ever have a "not included in tree" parent. Therefore, they can never be added as second line children via the recursion in InsertChild(). Also re-remove WalkAllDescendants(), which was it was recently re-added as a band-aid for the chrome://bookmarks crashes. Without this change, removing WalkAllDescendants() causes assertions in AXTreeSerializer, when aria-owns points to an unincluded node, that the same object is being added twice. Finally, add better logging and DCHECKs that will help diagnose issues more quickly. TBR=dmazzoni@chromium.org Bug: 1100968, 1131848 Change-Id: I79d785bc725989a53274a14f6bded5dbdaa7e21d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2451507Reviewed-by:Aaron Leventhal <aleventhal@chromium.org> Reviewed-by:
Dominic Mazzoni <dmazzoni@chromium.org> Commit-Queue: Aaron Leventhal <aleventhal@chromium.org> Cr-Commit-Position: refs/heads/master@{#814295}
Showing
Please register or sign in to comment