Bug 209975

Summary: AX: combobox aria-activedescendant is not read in VoiceOver unless the listbox has `display: none` until input has focus
Product: WebKit Reporter: Chase <account>
Component: AccessibilityAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: jcraig, klaramarieschmitt, nurthen, todd.kloots, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Safari 12   
Hardware: Mac   
OS: macOS 10.14   
Attachments:
Description Flags
Sample HTML to reproduce the issue none

Description Chase 2020-04-03 10:37:30 PDT
Created attachment 395394 [details]
Sample HTML to reproduce the issue

For a combobox that contains an input and owns a listbox (following this pattern: https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html):

If the listbox does not start out with `display: none` at the time the input receives focus, then VoiceOver does not announce the active option as the input's `aria-activedescendant` gets updated. However, if the listbox starts with `display: none` and dynamically changes to `display: block` some time after the input receives focus, VoiceOver will announce the active option correctly.

Steps to reproduce, using attached sample HTML:

1. Focus the input field
2. Press ArrowDown to set `aria-activedescendant` to the IDs of one of the options

EXPECTED: VoiceOver should announce the active options as user arrows through them
ACTUAL: VoiceOver does not announce anything


However, if the `display: none` property for the .hidden class is uncommented so that the listbox is initially `display: none`, the same steps listed above will cause VoiceOver to read the options while arrowing through.

Also tested Chrome (Version 80.0.3987.122) and Firefox (76.0a1), where VoiceOver does correctly announce the options even when the listbox never has `display: none`
Comment 1 Radar WebKit Bug Importer 2020-04-03 10:37:39 PDT
<rdar://problem/61265398>
Comment 2 James Craig 2020-07-17 17:14:16 PDT
*** Bug 212471 has been marked as a duplicate of this bug. ***
Comment 3 James Craig 2020-09-08 12:32:54 PDT
According to another's diagnosis, "the element passed along with the notification has a frame size of 0,0."

So VO assumes it's an invalid notification.