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