commit 377dcbc6343fc40f8934d8bf636c8a18512f1356
parent 55123865236d92a915639254e9dab56768d23721
Author: Morgan Rae Reschenberg <mreschenberg@berkeley.edu>
Date: Wed, 7 Jan 2026 20:11:28 +0000
Bug 1783838: Fire LIVE_REGION_CHANGED events for all NAME_CHANGE events regardless of user input origin r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D278070
Diffstat:
2 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/accessible/mac/AccessibleWrap.mm b/accessible/mac/AccessibleWrap.mm
@@ -140,10 +140,10 @@ nsresult AccessibleWrap::HandleAccEvent(AccEvent* aEvent) {
doc->ProcessNewLiveRegions();
}
- if ((eventType == nsIAccessibleEvent::EVENT_TEXT_INSERTED ||
- eventType == nsIAccessibleEvent::EVENT_TEXT_REMOVED ||
- eventType == nsIAccessibleEvent::EVENT_NAME_CHANGE) &&
- !aEvent->FromUserInput()) {
+ if (((eventType == nsIAccessibleEvent::EVENT_TEXT_INSERTED ||
+ eventType == nsIAccessibleEvent::EVENT_TEXT_REMOVED) &&
+ !aEvent->FromUserInput()) ||
+ eventType == nsIAccessibleEvent::EVENT_NAME_CHANGE) {
for (LocalAccessible* container = aEvent->GetAccessible(); container;
container = container->LocalParent()) {
if (container->HasOwnContent() && IsLiveRegion(container->GetContent())) {
diff --git a/accessible/tests/browser/mac/browser_live_regions.js b/accessible/tests/browser/mac/browser_live_regions.js
@@ -177,3 +177,27 @@ addAccessibleTask(
ok(true, "delete text leaf contents");
}
);
+
+/**
+ * Test live region announcements caused by clicking a button that modifies a region.
+ */
+addAccessibleTask(
+ `
+ <div id="status-container" aria-live="polite" aria-label="">
+ </div>
+
+ <button id="clickme" onClick="(function(){document.getElementById('status-container').setAttribute('aria-label', 'hello world');})()">
+ Add something!
+ </button>
+ `,
+ async (browser, accDoc) => {
+ let liveRegionChanged = waitForMacEvent(
+ "AXLiveRegionChanged",
+ "status-container"
+ );
+ const button = getNativeInterface(accDoc, "clickme");
+ button.performAction("AXPress");
+ await liveRegionChanged;
+ ok(true, "aria-label was changed, and event was fired");
+ }
+);