[webkit-changes] [WebKit/WebKit] 523acc: AX: AXIsolatedTree::updateChildren doesn't propaga...

Tyler Wilcock noreply at github.com
Mon Sep 26 23:51:26 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 523acc306f2bb48caf9cf15371329caae1d36346
      https://github.com/WebKit/WebKit/commit/523acc306f2bb48caf9cf15371329caae1d36346
  Author: Tyler Wilcock <tyler_w at apple.com>
  Date:   2022-09-26 (Mon, 26 Sep 2022)

  Changed paths:
    M LayoutTests/accessibility-isolated-tree/TestExpectations
    M Source/WebCore/accessibility/AccessibilityObject.h
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp

  Log Message:
  -----------
  AX: AXIsolatedTree::updateChildren doesn't propagate updates downwards when AccessibilityObject::m_subtreeDirty is true
https://bugs.webkit.org/show_bug.cgi?id=245694
rdar://100245048

Reviewed by Chris Fleizach.

When AXIsolatedTree::updateChildren updates the children of the nearest in-isolated-tree
ancestor to the parameter object, it compares the new children of that object to the "old"
ones, i.e. the children for that object in the nodemap. If we found that the object's new children
included an object that already existed in the old nodemap children, we do nothing (besides
deliberately not queuing it for deletion).

Based on the update pattern of some sites, doing nothing in this scenario is not right, since this
existing object could have m_subtreeDirty set, meaning we need to propagate descendant updates downwards.
This is exactly what the live tree does in AccessibilityObject::insertChild.

With this patch, we detect m_subtreeDirty in this scenario and propagate that update downwards with
AXIsolatedTree::collectNodeChangesForSubtree.

Fixes accessibility/text-alternative-calculation-from-listbox.html which is dependent on m_subtreeDirty
updates being handled properly.

* LayoutTests/accessibility-isolated-tree/TestExpectations:
* Source/WebCore/accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::hasDirtySubtree const): Added.
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateChildren):

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




More information about the webkit-changes mailing list