[webkit-changes] [WebKit/WebKit] 5bc669: AX: Defer isolated tree node removals so they are ...

Joshua Hoffman noreply at github.com
Fri Feb 21 11:06:35 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5bc669a03a79ddd5cf785f2b4308d43a2f76e94b
      https://github.com/WebKit/WebKit/commit/5bc669a03a79ddd5cf785f2b4308d43a2f76e94b
  Author: Joshua Hoffman <jhoffman23 at apple.com>
  Date:   2025-02-21 (Fri, 21 Feb 2025)

  Changed paths:
    M LayoutTests/accessibility/accessibility-object-detached-expected.txt
    M LayoutTests/accessibility/accessibility-object-detached.html
    M LayoutTests/accessibility/canvas-fallback-content-expected.txt
    M LayoutTests/accessibility/canvas-fallback-content.html
    M LayoutTests/accessibility/datetime/input-date-field-labels-and-value-changes-expected.txt
    M LayoutTests/accessibility/datetime/input-date-field-labels-and-value-changes.html
    M LayoutTests/accessibility/mac/element-is-ignored-expected.txt
    M LayoutTests/accessibility/mac/element-is-ignored.html
    M LayoutTests/accessibility/mac/focus-moves-cursor-expected.txt
    M LayoutTests/accessibility/mac/focus-moves-cursor.html
    M LayoutTests/accessibility/mac/slider-thumb-value-crash-expected.txt
    M LayoutTests/accessibility/mac/slider-thumb-value-crash.html
    M LayoutTests/accessibility/mac/stale-textmarker-crash.html
    M LayoutTests/accessibility/mac/textmarker-routines-expected.txt
    M LayoutTests/accessibility/mac/textmarker-routines.html
    M LayoutTests/accessibility/title-ui-element-correctness.html
    M LayoutTests/platform/mac/accessibility/canvas-fallback-content-expected.txt
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
    M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm

  Log Message:
  -----------
  AX: Defer isolated tree node removals so they are batched with other queued node updates
https://bugs.webkit.org/show_bug.cgi?id=288001
rdar://145164516

Reviewed by Tyler Wilcock.

In 271907 at main, we added a new mechanism to de-duplicate node changes by batching them and
processing them in batches off of a timer. This included most types of changes, but did not
include node removals. This means that nodes could possibly be removed before other types
of updates happen, causing the tree to be temporarily out of sync.

To fix this, let's start to queue node changes as well in `queueNodeRemoval`. This changes
handles that and updates `removeNode` to work off of AXIDs instead of object references
which it has before.

Many layout tests were updated to be asynchronous, or to be made more asynchronous, due to
behavior this change exposed.

* LayoutTests/accessibility/accessibility-object-detached-expected.txt:
* LayoutTests/accessibility/accessibility-object-detached.html:
* LayoutTests/accessibility/canvas-fallback-content-expected.txt:
* LayoutTests/accessibility/canvas-fallback-content.html:
* LayoutTests/accessibility/datetime/input-date-field-labels-and-value-changes.html:
* LayoutTests/accessibility/mac/element-is-ignored-expected.txt:
* LayoutTests/accessibility/mac/element-is-ignored.html:
* LayoutTests/accessibility/mac/focus-moves-cursor-expected.txt:
* LayoutTests/accessibility/mac/focus-moves-cursor.html:
* LayoutTests/accessibility/mac/slider-thumb-value-crash-expected.txt:
* LayoutTests/accessibility/mac/slider-thumb-value-crash.html:
* LayoutTests/accessibility/mac/stale-textmarker-crash.html:
* LayoutTests/accessibility/mac/textmarker-routines-expected.txt:
* LayoutTests/accessibility/mac/textmarker-routines.html:
* LayoutTests/accessibility/title-ui-element-correctness.html:
* LayoutTests/platform/mac/accessibility/canvas-fallback-content-expected.txt:
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::remove):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateChildren):
(WebCore::AXIsolatedTree::removeNode):
(WebCore::AXIsolatedTree::removeSubtreeFromNodeMap):
(WebCore::AXIsolatedTree::queueNodeRemoval):
(WebCore::AXIsolatedTree::processQueuedNodeUpdates):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list