Bug 220054 - AX: aria-busy is not being cleared from an element for VoiceOver
Summary: AX: aria-busy is not being cleared from an element for VoiceOver
Status: RESOLVED MOVED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Accessibility (show other bugs)
Version: Safari Technology Preview
Hardware: All All
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2020-12-21 00:12 PST by Marco Zehe
Modified: 2021-03-26 16:19 PDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Marco Zehe 2020-12-21 00:12:43 PST
Steps:
1. With VoiceOver on, open this test case:
data:text/html,<div id="live" aria-live="polite" aria-busy="true"></div><script>setTimeout(() => live.textContent = 'updated', 1000); setTimeout(() => live.removeAttribute('aria-busy'), 2000);</script>
2. Explore the only div in the document.

Expected: VoiceOver should speak the text "updated" after two seconds. It should then treat the div as normal.
Actual result: VoiceOver speaks "updated" already after 1 second, and then speaks "website group is busy" when exploring the web contents with VoiceOver navigation commands.

This is the case in both Safari 14 as well as Technology Preview 117.
Comment 1 Radar WebKit Bug Importer 2020-12-21 00:12:52 PST
<rdar://problem/72542353>
Comment 2 chris fleizach 2020-12-22 22:34:19 PST
the "updated" text seems to be set after 1000ms, so having it speak after 1 second seems expected.
Comment 3 chris fleizach 2020-12-22 22:48:27 PST
I've confirmed this is a bug for VoiceOver. I've sent it to the right component.
Comment 4 Marco Zehe 2020-12-22 22:51:01 PST
Thanks, Chris! Does this include both the constant "busy" announcement on elements that had aria-busy set during their live time, but which has now been cleared, as well as the early announcement? Because from what I understand, aria-busy is supposed to suppress live region announcements until it is cleared. So I would have expected, and others have also confirmed this, that the updated text should speak after two seconds, not one.
Comment 5 chris fleizach 2020-12-22 23:09:28 PST
(In reply to mzehe@mozilla.com from comment #4)
> Thanks, Chris! Does this include both the constant "busy" announcement on
> elements that had aria-busy set during their live time, but which has now
> been cleared, as well as the early announcement? Because from what I
> understand, aria-busy is supposed to suppress live region announcements
> until it is cleared. So I would have expected, and others have also
> confirmed this, that the updated text should speak after two seconds, not
> one.

ah I see. I doubt that aria live region updates are being processed after an Aria-busy is removed.

Do you have an specification you can point to that says these aria live regions should be processed after an aria-busy is removed? I didn't find one in WAI-ARIA for aria-busy

@JamesCraig?
Comment 6 Marco Zehe 2021-03-26 08:06:47 PDT
The best non-spec explanation I found was this: https://www.digitala11y.com/aria-busy-state/. After aria-busy is cleared, updates should be processed. aria-busy is there to suppress live region changes that may occur as long as aria-busy is true, and then a single update should happen when aria-busy is cleared. There are also examples given.
Comment 7 Canhai Chen 2021-03-26 16:19:22 PDT
I can confirm that if a live region is set to aria-busy="true", VoiceOver will defer the live region update until the region is no longer busy.

With the VoiceOver bug being fixed, in the test case above, VO will speak "updated" after 2 seconds when the busy status is removed.