• Aaron Leventhal's avatar
    Reland: Avoid illegal serializations with aria-owns and unincluded nodes · ac70c618
    Aaron Leventhal authored
    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: default avatarAaron Leventhal <aleventhal@chromium.org>
    Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
    Commit-Queue: Aaron Leventhal <aleventhal@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#814295}
    ac70c618
aria-owns-included-in-tree-expected-auralinux.txt 736 Bytes