core-aam
core-aam copied to clipboard
May need to update UIA mappings for aria-expanded to address combobox (et al.)
During today's face-to-face meeting we discussed the possibility of placing aria-expanded
on the text input rather than on the object with role combobox
. Text inputs are not traditionally expandable themselves so assistive technologies may need to adjust where they look for this state.
An additional change may be needed for UIA because unlike other platforms, "expandable" is not a state that can be applied to any object; there is an ExpandCollapse ControlPattern whose documentation states the following:
Aggregate controls—built with child objects that provide the UI with expand/collapse functionality—must support the ExpandCollapsePattern control pattern whereas their child elements do not. For example, a combo box control is built with a combination of list box, button, and edit controls, but it is only the parent combo box that must support the ExpandCollapsePattern.
Note
An exception is the menu control, which is an aggregate of individual MenuItem objects. The MenuItem objects can support the ExpandCollapsePattern control pattern, but the parent Menu control cannot. A similar exception applies to the Tree and Tree Item controls.
In other words, as I understand it, if authors place aria-expanded
on the text input, the expandable nature and state will be lost for UIA implementations.
That said, I believe it will be easy for implementations (including Blink) to catch this condition, ascend the accessibility tree and/or check for aria-owns
, and if they find an element with role combobox
, expose aria-expanded
on that ancestor/owner of the text input.
Assuming I am correct, we will need to do two things:
- Update Core-AAM to reflect the need for implementations to do this work
- File bugs against implementations and make the change
@melanierichards: I'm going to assign this to you to check with your colleagues about my theory and, assuming I'm indeed correct, to provide a pull request with the appropriate language for your platform. Thanks in advance!