Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 96cf89c2cbc71ab5f92161b3989b0fed6fb84e10
https://github.com/WebKit/WebKit/commit/96cf89c2cbc71ab5f92161b3989b0fed6fb84e10
Author: Tyler Wilcock <[email protected]>
Date: 2026-09-06 (Sun, 06 Sep 2026)
Changed paths:
A
LayoutTests/accessibility/isolated-tree/mac/live-regions/live-region-removals-expected.txt
A
LayoutTests/accessibility/isolated-tree/mac/live-regions/live-region-removals.html
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXObjectCache.h
Log Message:
-----------
AX: In isolated tree mode, removing a node from an aria-relevant="removals"
live region announces nothing
https://bugs.webkit.org/show_bug.cgi?id=323528
rdar://186769812
Reviewed by Chris Fleizach.
AXLiveRegionManager announces a change by diffing a fresh snapshot of the
region against the one it
stored last time, and it only takes that snapshot when the cache-update timer
fires. A node added by
one deferred cache update and removed by the next never appears in any
snapshot, so the two changes
cancel out and neither is announced. Adding a node to an
aria-relevant="removals" region and then
removing it is exactly that sequence, and it announced nothing at all.
The main thread doesn't hit this, because a client reading any attribute
updates the backing store
first, which applies the pending change and lets the timer fire between the two
mutations. Nothing
forces that in isolated tree mode, where reads are answered off the isolated
tree, so both mutations
land in one cache update.
Diff each changed live region against the tree the cache update just produced,
so a snapshot exists
for every state the accessibility tree actually took.
Makes live-region-removals.html pass in ITM.
*
LayoutTests/accessibility/isolated-tree/mac/live-regions/live-region-removals-expected.txt:
Added.
*
LayoutTests/accessibility/isolated-tree/mac/live-regions/live-region-removals.html:
Added.
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::liveRegionChangedNotificationPostTimerFired):
(WebCore::AXObjectCache::processChangedLiveRegions):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
* Source/WebCore/accessibility/AXObjectCache.h:
Canonical link: https://commits.webkit.org/320587@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications