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

Reply via email to