Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bcdb262e70e8e8e33230b3939efba5bf544c299d
      
https://github.com/WebKit/WebKit/commit/bcdb262e70e8e8e33230b3939efba5bf544c299d
  Author: Tyler Wilcock <[email protected]>
  Date:   2022-10-15 (Sat, 15 Oct 2022)

  Changed paths:
    M LayoutTests/accessibility-isolated-tree/TestExpectations
    M LayoutTests/accessibility/mac/aria-multiselectable-expected.txt
    M LayoutTests/accessibility/mac/aria-multiselectable.html
    M Source/WebCore/accessibility/AXObjectCache.cpp

  Log Message:
  -----------
  AX: AXPropertyName::SelectedChildren for tree-role objects is not updated 
when their tree-item children become selected
https://bugs.webkit.org/show_bug.cgi?id=246534
rdar://problem/101186153

Reviewed by Chris Fleizach.

Prior to this patch, AXObjectCache::selectedChildrenChanged had multiple
problems:

  1. It was called with the Node* that became selected, not the parent
     of that object, which is confusing.

  2. It relied on the PostTarget::ObservableParent mechanism to get the 
AXSelectedChildrenChanged
     posted from the right object. However, this mechanism is not comprehensive 
enough for this
     notification, since a AccessibilityRole::Tree can never be "observable" by 
our current logic
     (reference AccessibilityRenderObject::renderObjectIsObservable).

This patch resolves all of these problems by:

  1. Only ever calling selectedChildrenChanged on ancestors of object's
     whose selected state changed, therefore being honest to the name of
     the function.

  2. Eschewing the PostTarget::ObservableParent mechanism in favor of simply
     finding the ancestor that 
AccessibilityObject::canHaveSelectedSelectedChildren.

This allows AXSelectedChildrenChanged to be posted to tree objects,
which in turn updates the isolated tree properly when tree-items changed
selected state.

* LayoutTests/accessibility-isolated-tree/TestExpectations:
Mark accessibility/mac/aria-multiselectable.html as passing.
* LayoutTests/accessibility/mac/aria-multiselectable-expected.txt:
* LayoutTests/accessibility/mac/aria-multiselectable.html:
Make test async.
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::selectedChildrenChanged):
(WebCore::AXObjectCache::onSelectedChanged):

Canonical link: https://commits.webkit.org/255587@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to