tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Maccessible/mac/AccessibleWrap.mm | 8++++----
Maccessible/tests/browser/mac/browser_live_regions.js | 24++++++++++++++++++++++++
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"); + } +);