Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cdf9fa96c26ec777edb169ab25db7dac851d000c
      
https://github.com/WebKit/WebKit/commit/cdf9fa96c26ec777edb169ab25db7dac851d000c
  Author: Joshua Hoffman <[email protected]>
  Date:   2025-12-10 (Wed, 10 Dec 2025)

  Changed paths:
    M LayoutTests/accessibility/mac/aria-notify-with-options.html
    M LayoutTests/accessibility/mac/aria-notify.html
    M 
LayoutTests/accessibility/mac/live-regions/live-region-removals-expected.txt
    M Source/WebCore/accessibility/AXLiveRegionManager.cpp
    M Source/WebCore/accessibility/AXLogger.cpp
    M Source/WebCore/accessibility/AXLogger.h
    M Source/WebCore/accessibility/AXNotifications.h
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm
    M Source/WebCore/accessibility/mac/AXObjectCacheMac.mm

  Log Message:
  -----------
  AX: ariaNotify and live region notifications should not post synchronously
https://bugs.webkit.org/show_bug.cgi?id=303888
rdar://166180012

Reviewed by Tyler Wilcock.

Unlike postNotification, ariaNotify and live region notifications currently 
post synchronously.
This means that it's possible for these notifications to fire during the middle 
of
performDeferredCacheUpdate, leading to unexpected behaviors.

This patch uses the existing m_notificationsToPost mechanism to post these 
types off notifications
as well. In order to do this with rich notification data like these contain, 
that array now
stores a new struct, AXNotificationWithData. This struct allows for storing 
additional bits of
data for notifications as needed.

This patch also contins some test cleanup and the modification of one 
expectation that
was incorrect due to empty notification content being permitted.

* LayoutTests/accessibility/mac/aria-notify-with-options.html:
* LayoutTests/accessibility/mac/aria-notify.html:
* LayoutTests/accessibility/mac/live-regions/live-region-removals-expected.txt:
* Source/WebCore/accessibility/AXLiveRegionManager.cpp:
(WebCore::AXLiveRegionManager::postAnnouncementForChange):
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::AXLogger::log):
* Source/WebCore/accessibility/AXLogger.h:
* Source/WebCore/accessibility/AXNotifications.h:
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::notificationPostTimerFired):
(WebCore::AXObjectCache::postNotification):
(WebCore::AXObjectCache::postARIANotifyNotification):
(WebCore::AXObjectCache::postLiveRegionNotification):
(WebCore::AXObjectCache::updateIsolatedTree):
* Source/WebCore/accessibility/AXObjectCache.h:
(WebCore::AXNotificationWithData::AXNotificationWithData):
* Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm:
(WebCore::AXObjectCache::postPlatformARIANotifyNotification):
(WebCore::AXObjectCache::postPlatformLiveRegionNotification):
* Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::postPlatformARIANotifyNotification):
(WebCore::AXObjectCache::postPlatformLiveRegionNotification):

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



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

Reply via email to