Bug 167671
| Summary: | AX: activedescendant on combobox not honored correctly in VoiceOver | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Kaelig <kaelig> |
| Component: | Accessibility | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED CONFIGURATION CHANGED | ||
| Severity: | Normal | CC: | andresg_22, bgaraventa11, b, craigcarlyle, diegof79, dkote, ejdickison, ericliang, jcraig, jesse.greenberg, kaelig, leslie.harper, marco.zehe, michael, michaelcpuckett, mvilleneuve, naman34, scott.vinkle, splaktar, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Mac | ||
| OS: | macOS 10.12 | ||
| URL: | https://webkit.org/blog-files/aria1.0/combobox_with_live_region_status.html | ||
| See Also: |
https://bugs.webkit.org/show_bug.cgi?id=32100 https://bugs.webkit.org/show_bug.cgi?id=161734 https://bugs.webkit.org/show_bug.cgi?id=269026 |
||
Kaelig
Steps to reproduce:
1. Go to https://webkit.org/blog-files/aria1.0/combobox_with_live_region_status.html
2. Type "ca" in the text field (it has a role=combobox)
3. Hit "arrow down", this should select the "American Samoa" option
Actual: nothing is read
Expected: "American Samoa" is read
4. Hit "arrow down", this should select the "California" option
Actual: "American Samoa" is read
Expected: "California" is read
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/30297449>
Kaelig
Note that this makes combobox/listbox almost unusable to VoiceOver users.
Radar WebKit Bug Importer
<rdar://problem/30297583>
Kaelig
A somewhat similar issue was reported in Chrome as well: https://bugs.chromium.org/p/chromium/issues/detail?id=666049
James Craig
*** Bug 167680 has been marked as a duplicate of this bug. ***
James Craig
<rdar://problem/30297449>
Michael Berger
Just to note this is still happening in Safari + VoiceOver, but Chrome + Safari handles it properly.
https://webkit.org/blog-files/aria1.0/combobox_with_live_region_status.html
Bryan Garaventa
I'm still getting reports that this is still broken on the example at
http://whatsock.com/tsg/Coding%20Arena/ARIA%20Comboboxes/ARIA%20Comboboxes%20(Native%20Inputs,%20Editable%20with%20Substring%20Match)/demo.htm
Can I get a status update on where this currently stands in dev?
Thanks,
Bryan
Eric Liang
This will be fixed in VoiceOver
Michael Prentice
https://webkit.org/blog-files/aria1.0/combobox_with_live_region_status.html is working well for me with Safari Version 12.1.1 (14607.2.6.1.1) and macOS 10.14.5 (18F203).
It also seems to be working well with Chrome 75.
Kaelig
Michael, I have exactly the same setup as you and the bug is still reproducible on my side.
iammatthew2
This is currently broken for me on Mojave 10.14.6 with Safari 13.0.4
James Craig
<rdar://problem/63849438>
Diego Fernandez
These examples use aria-activedescendant and they work as expected in Safari+VO:
https://www.w3.org/TR/wai-aria-practices/examples/listbox/listbox-collapsible.html
https://pattern-library.dequelabs.com/components/selects
Why they work? Because, in addition to active descendant they set aria-selected to active option.
I found that when I do that in my custom dropdown work in VO+Safari (Safari Version 14.0 15610.1.28.1.9, 15610 / macOS 10.15.7 (19H2)).
My understanding of aria-selected is that it indicates the current selection - not the active item. So this looks like a bug.
The w3 example selects uses the active item = value pattern, so aria-selected has the right semantics.
The deque example requires an explicit selection, so aria-selected seems to be wrong there.
I tested an implementation without aria-selected in Chrome (86.0.4240.111) and Firefox (83.0b3), and both announce the active descendant when I move between list items.
Elliot Dickison
I ran into this issue today. VoiceOver (macOS 10.14.6) + Chrome (86.0) worked fine but VoiceOver (macOS 10.14.6) + Safari (14.0) didn't announce anything when the active descendant changed. I had aria-activedescendant set correctly on the listbox element *and* aria-selected set on the active descendent element as others have suggested.
I was able to work around the issue by removing an extra wrapper element that I had placed inside the listbox element for styling purposes (all of the listbox option elements were children of this wrapper, not of the listbox itself). When I removed the wrapper and moved the option elements up in the DOM tree to be *direct* children of the listbox Safari started announcing the active descendant. The WAI-ARIA Authoring Practices is pretty clear that the active descendant just needs to be a descendant, not a direct child.
James Craig
As mentioned in #c10 this has been resolved and working in VoiceOver for a couple years, so I'm closing this orphaned bug report as Resolved.
The other examples people have linked since then are almost certainly related but different bugs. Event if they're all about combobox+activedescendant, the markup or rendering instances are likely different. The best approach to get those resolved is to file a new bug for reduced test cases that you find are not working... I'll try to do that with some of these now.
Note: If I can't verify the linked instance bug on my system, but you're still seeing it on yours, there may be other factors at play. Include software versions, etc. Potentially attach VoiceOver preferences if it work in the default config but not with your preferred config.
James Craig
FWIW @Kaelig, I'm looking at a bug that resolved this. Prior to the fix, this example did not work for me at all, but it does now. If you're still seeing this specific test case unresolved on your system, could you ping me offline? We can investigate what's different about the configs. Thanks.
Leslie
I'm looking at a slight variant of this bug that seems to be happening when aria-haspopup is set to "grid". I'm not sure if that difference from the original example is the cause but the bug can be reproduced faithfully with this example page from w3c:
https://www.w3.org/TR/wai-aria-practices-1.2/examples/combobox/grid-combo.html
When navigating through the options in the list using the arrow keys absolutely nothing is announced.
I can confirm that it works with VoiceOver/Chrome as well as VoiceOver/IOS Safari (14.1)
Naman Goel
This is still an issue and not fixed.
Dhawal
We are still facing this issue in Safari.
Here's jsfiddle link if you want to check the implementation - https://jsfiddle.net/f5Larbnk/19/
Note that voiceover in the above fiddle works fine in Firefox, Chrome when active-descendant is updated.
Scott Vinkle
This bug still remains. (macOS 14.5, Safari 17.5)
I've found if you include aria-owns alongside aria-controls pointing to the same IDREF, the aria-activedescendant item will be announced as expected.
Ex., Shopify Checkout address autocomplete.
jesse.greenberg
This is still a bug, aria-activedescendent is broken. Tested MacOS 14.5. Workarounds with aria-owns and aria-controls did not work for us. These examples do not work with Safari: https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/grid-combo/ and https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-autocomplete-list/
Andres Gonzalez
This problem is addressed in MacOs Sequoia 15. Please re-test with a recent build of MacOS 15.