Revert^2 "Reland "[A11y] Do not allow asymmetrical parent-child relations in tree""#43229
Merged
chromium-wpt-export-bot merged 1 commit intomasterfrom Nov 17, 2023
Merged
Conversation
…ions in tree"" This reverts commit 7d71be73ff6ae1e26559634149c729b41de71836. Reason for revert: Reverting this cl makes the failure stable. reland this. Original change's description: > Revert "Reland "[A11y] Do not allow asymmetrical parent-child relations in tree"" > > This reverts commit 8fda0f8317a6f861c97c413d1deecb8c4f998481. > > Reason for revert: Test failure on Linux MSan Tests: https://ci.chromium.org/ui/b/8764197885202278033 > > Original change's description: > > Reland "[A11y] Do not allow asymmetrical parent-child relations in tree" > > > > This is a reland of commit 0953e5a0ef7748af2c932568ec9d9bbdbc480f11 > > > > Two new tests have been added since the original CL: > > 1. content/test/data/regression/aria-owns-from-textarea.html, which > > induces the same crash as google.com, which caused the revert via bug 1501535. The fix for this one is to not assume the owned child had > > previously been unignored. > > 2. web_tests/accessibility/aria-owns-dynamic-changes-2.html, to show that the consequences of the error Chris found in the original landing as discussed in this review thread: https://chromium-review.googlesource.com/c/chromium/src/+/4873421/72..77/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc#b1418 > > The fix for this one was already in the original landing. > > > > Original change's description: > > > [A11y] Do not allow asymmetrical parent-child relations in tree > > > > > > Design doc: > > > https://docs.google.com/document/d/1PnjhlWqTtivmsUVTF0kqMAUIsO9a_eTp32pRY4KJh_U/edit#heading=h.wlgzk7gh4m76 > > > > > > Fix failures brought to light by the Eager AX Tree Updates project and related checks, so that serialization operates on a truly frozen, complete AX Tree, and does not lead to changes to the underlying data at unsafe times. After landing this CL and any follow-ups, the goal is to have a vastly more stable, predictable Blink accessibility engine. > > > > > > The current implementation can lead to processing the tree when there > > > are "holes" in the data structure, such as missing parents or children, > > > which can lead to crashes, checks and unpredictability. > > > > > > 1. Avoid holes in the first place: do not call AXObject::ClearChildren() immediately when calling AXObject::SetNeedsToUpdateChildren(), so that missing parent and missing child holes are not created for unchanged siblings. These holes tended to sit around and cause problems when downstream operations did not expect them. Only call ClearChildren() right before rebuilding the children, in UpdateChildrenIfNecessary(). > > > 2. More complete repairs: Instead of only repairing missing parents, when a parentless ensure a complete subtree structure around the child, starting with the included parent. The new method to accomplish this is called AXObjectCacheImpl::RepairIncludedParentsChildren(). It makes sure that every parent up to the included parent has a complete set of children. > > > 3. More timely repairs: instead of waiting for a hole to be discovered while tree walking, eagerly ensure that objects up to their included parent have repairs, whenever an object is being retrieved for deferred event processing, or when an object is being created in the middle of a tree. If the necessary parents do not exist, and thus the AXObject itself is not viable, make sure any stale AXObjects in that subtree are eagerly removed, because they are also not viable. > > > 4. More complete tree structure checks in AXObjectCacheImpl::CheckTreeIsUpdated(), which ensure symmetrical included parent-child relationships are complete. This helps guarantee that no lazy computations try to alter the tree while it’s being serialized (in a frozen state). The new checks do not pass without the other code changes, which are in service of the new checks. > > > > > > Future work: attempt to avoid any tree repairs and guarantee completeness in more places, providing even more predictability, for example, by handling CSS display changes similarly to role changes. > > > > > > Fixed: 1422755,1483877,1482591,1481940,1480442,1488246,1486249,1484029,1353205,1480627,1494849,1493953,1484394,1489027,1491163,1501723 > > > Change-Id: Ied4258680ffe4099caaf4c5e614c59c70c61a013 > > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4873421 > > > Reviewed-by: Chris Harrelson <chrishtr@chromium.org> > > > Commit-Queue: Aaron Leventhal <aleventhal@chromium.org> > > > Cr-Commit-Position: refs/heads/main@{#1223164} > > > > Change-Id: I96fcc71601842ea7b38de70ee24f77df1f011f24 > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5019353 > > Auto-Submit: Aaron Leventhal <aleventhal@chromium.org> > > Commit-Queue: Aaron Leventhal <aleventhal@chromium.org> > > Reviewed-by: Chris Harrelson <chrishtr@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#1225907} > > Change-Id: I77f6149192a7afa697098e125900705ab43ed0f0 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: 1503056 > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5040555 > Reviewed-by: Yifan Luo <lyf@chromium.org> > Owners-Override: Yifan Luo <lyf@chromium.org> > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Cr-Commit-Position: refs/heads/main@{#1225985} Bug: 1503056 Change-Id: Id9b4319eefa91a2988adda94fb69bc1881c63600 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5038755 Auto-Submit: Yifan Luo <lyf@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Owners-Override: Yifan Luo <lyf@chromium.org> Reviewed-by: Yifan Luo <lyf@chromium.org> Cr-Commit-Position: refs/heads/main@{#1226026}
wpt-pr-bot
approved these changes
Nov 17, 2023
Collaborator
wpt-pr-bot
left a comment
There was a problem hiding this comment.
The review process for this patch is being conducted in the Chromium project.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This reverts commit 7d71be73ff6ae1e26559634149c729b41de71836.
Reason for revert: Reverting this cl makes the failure stable. reland this.
Original change's description:
Bug: 1503056
Change-Id: Id9b4319eefa91a2988adda94fb69bc1881c63600
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5038755
Auto-Submit: Yifan Luo <lyf@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Owners-Override: Yifan Luo <lyf@chromium.org>
Reviewed-by: Yifan Luo <lyf@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1226026}