Bug 220054
| Summary: | AX: aria-busy is not being cleared from an element for VoiceOver | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Marco Zehe <marco.zehe> |
| Component: | Accessibility | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED MOVED | ||
| Severity: | Normal | CC: | canhai.chen, cfleizach, jcraig, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Safari Technology Preview | ||
| Hardware: | All | ||
| OS: | All | ||
Marco Zehe
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.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/72542353>
chris fleizach
the "updated" text seems to be set after 1000ms, so having it speak after 1 second seems expected.
chris fleizach
I've confirmed this is a bug for VoiceOver. I've sent it to the right component.
Marco Zehe
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.
chris fleizach
(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?
Marco Zehe
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.
Canhai Chen
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.