UI Automation for W3C Accessible Rich Internet Applications Specification
Web sites increase their utility with dynamic content and advanced user interface (UI) controls supported by technologies like Asynchronous JavaScript and XML (AJAX), DHTML, and JavaScript. However, assistive technologies frequently cannot interact with these complex controls or expose dynamic content to users. Accessible Rich Internet Applications (ARIA) is a W3C technical specification for developing Web content and applications so that they are accessible to people with disabilities.
To support the ARIA specification, the Microsoft UI Automation specification enables developers to associate UI Automation AriaRole and AriaProperties attributes with W3C ARIA roles and states, or properties. This helps user applications such as Microsoft Internet Explorer support the ARIA object model in the context of UI Automation while keeping a baseline accessibility object model.
This appendix provides the suggested mapping of W3C information to Microsoft Active Accessibility and UI Automation specifications, leveraging the two new UI Automation properties.
This topic contains the following sections:
- W3C ARIA Role Mapped to Microsoft Active Accessibility and UI Automation
- W3C ARIA States and Properties Mapped to Microsoft Active Accessibility and UI Automation
- Additional Considerations
W3C ARIA Role Mapped to Microsoft Active Accessibility and UI Automation
W3C ARIA roles can map to Microsoft Active Accessibility roles or UI Automation control types. With UI Automation, the original W3C ARIA role may also be supported by the AriaRole property. User agents can offer a localized description of the W3C ARIA role with the UI Automation LocalizedControlType property; however, that is optional. When a localized string is not specified, the system will supply the default LocalizedControlType string. User agents may also offer secondary roles in the AriaRole property by using space as a separator, as defined in the ARIA W3C standard.
W3C ARIA Role Attribute (DRAFT) | Microsoft Active Accessibility Role | UI Automation Control Type | UI Automation AriaRole Property |
---|---|---|---|
alert | ROLE_SYSTEM_ALERT | Text | alert |
alertdialog | ROLE_SYSTEM_DIALOG | Window | alertdialog |
application | ROLE_SYSTEM_PANE | Pane | application |
button | ROLE_SYSTEM_PUSHBUTTON | Button | button |
checkbox | ROLE_SYSTEM_CHECKBUTTON | Checkbox | checkbox |
columnheader | ROLE_SYSTEM_COLUMNHEADER | DataItem | columnheader |
combobox | ROLE_SYSTEM_COMBOBOX | Combobox | combobox |
description | ROLE_SYSTEM_TEXT | Text | description |
dialog | ROLE_SYSTEM_DIALOG | Window | dialog |
directory | ROLE_SYSTEM_LIST | List | directory |
document | ROLE_SYSTEM_CLIENT | Document | document |
grid | ROLE_SYSTEM_TABLE | DataGrid | grid |
gridcell | ROLE_SYSTEM_CELL | DataItem | gridcell |
group | ROLE_SYSTEM_GROUPING | Group | group |
heading | ROLE_SYSTEM_TEXT | Text | heading |
img | ROLE_SYSTEM_GRAPHIC | Image | img |
link | ROLE_SYSTEM_LINK | HyperLink | link |
list | ROLE_SYSTEM_LIST | List | list |
listbox | ROLE_SYSTEM_LIST | List | listbox |
listitem | ROLE_SYSTEM_LISTITEM | ListItem | listitem |
log | ROLE_SYSTEM_PANE | Pane | log |
marquee | ROLE_SYSTEM_ANIMATION | Text | marquee |
menu | ROLE_SYSTEM_MENUPOPUP | Menu | menu |
menubar | ROLE_SYSTEM_MENUBAR | MenuBar | menubar |
menuitem | ROLE_SYSTEM_MENUITEM | MenuItem | menuitem |
menuitemcheckbox | ROLE_SYSTEM_CHECKBUTTON | CheckBox | menuitemcheckbox |
menuitemradio | ROLE_SYSTEM_RADIOBUTTON | RadioButton | menuitemradio |
option | ROLE_SYSTEM_LISTITEM | ListItem | option |
presentation | ROLE_SYSTEM_PANE | Pane | presentation |
progressbar | ROLE_SYSTEM_PROGRESSBAR | ProgressBar | progressbar |
radio | ROLE_SYSTEM_RADIOBUTTON | RadioButton | radio |
radiogroup | ROLE_SYSTEM_GROUPING | Group | radiogroup |
region | ROLE_SYSTEM_PANE | Pane | region |
row | ROLE_SYSTEM_ROW | DataItem | row |
rowheader | ROLE_SYSTEM_ROWHEADER | DataItem | rowheader |
section | ROLE_SYSTEM_GROUPING | Group | section |
separator | ROLE_SYSTEM_SEPARATOR | Separator | separator |
slider | ROLE_SYSTEM_SLIDER | Slider | slider |
spinbutton | ROLE_SYSTEM_SPINBUTTON | Spinner | spinbutton |
status | ROLE_SYSTEM_STATUSBAR | StatusBar | status |
tab | ROLE_SYSTEM_PAGETAB | TabItem | tab |
tablist | ROLE_SYSTEM_PAGETABLIST | Tab | tablist |
tabpanel | ROLE_SYSTEM_PANE | Pane | tabpanel |
textbox | ROLE_SYSTEM_TEXT | Document | textbox |
timer | ROLE_SYSTEM_CLOCK | Pane | timer |
toolbar | ROLE_SYSTEM_TOOLBAR | Toolbar | toolbar |
tooltip | ROLE_SYSTEM_TOOLTIP | Tooltip | tooltip |
tree | ROLE_SYSTEM_OUTLINE | Tree | tree |
treegrid | ROLE_SYSTEM_TABLE | DataGrid | treegrid |
treeitem | ROLE_SYSTEM_OUTLINEITEM | TreeItem | treeitem |
W3C ARIA States and Properties Mapped to Microsoft Active Accessibility and UI Automation
W3C ARIA states and properties map to various Microsoft Active Accessibility and UI Automation properties and functions. Most of the ARIA states and properties are supported by the UI Automation AriaProperties property. The exceptions are ARIA properties that take object references (for example, the describedby ARIA property), and ARIA properties that are supported by the accessibility object model. For example, the ARIA activedescendent property is expected to be represented as the element with focus in the accessibility object model. The ARIA owns property should be also reflected in the accessibility object model when it is specified.
AriaProperties is a string property that has a collection of name/value pairs whose delimiters are the equal sign (=) and the semicolon (;), for example, "checked=true;disabled=false". A backslash (\) is used as an escape when these delimiter characters, or a backslash, appear in the values. The provider code can add verification to validate the original ARIA properties in the document object model, but it is not required.
W3C ARIA States and Properties | Microsoft Active Accessibility Properties | UI Automation Properties | UI Automation AriaProperties Property |
---|---|---|---|
activedescendent | STATE_SYSTEM_FOCUSED (accState) | HasKeyboardFocus (a property of the child element that is designated to receive the focus) | n/a |
atomic | n/a | n/a | atomic |
busy | STATE_SYSTEM_BUSY (accState) | n/a | busy |
channel | n/a | n/a | channel |
checked | STATE_SYSTEM_CHECKED (accState) | ToggleState (Toggle pattern) | checked |
controls | n/a | ControllerFor | n/a |
describedby | n/a | DescribedBy | n/a |
disabled | STATE_SYSTEM_UNAVAILABLE (accState) | IsEnabled | disabled |
dropeffect | n/a | n/a | dropeffect |
expanded | STATE_SYSTEM_COLLAPSED or STATE_SYSTEM_EXPANDED (accState) | ExpandCollapseState (ExpandCollapse pattern) | expanded |
flowto | n/a | FlowsTo | n/a |
grab | n/a | n/a | grab |
haspopup | STATE_HASPOPUP (accState) | n/a | haspopup |
hidden | STATE_SYSTEM_INVISIBLE (accState) | IsOffscreen | hidden |
invalid | n/a | IsDataValidForForm | invalid |
labelledby | n/a | LabeledBy | n/a |
Level | accValue | n/a (represented by automation element tree structure) | level |
live | n/a | n/a | live |
multiline | n/a | Document Control Type | multiline |
multiselectable | STATE_SYSTEM_EXTSELECTABLE (accState) | CanSelectMultiple (Selection pattern) | multiselectable |
owns | n/a (should be reflected in the accessible object tree) | n/a (should be reflected in the automation element tree) | n/a |
Posinset | n/a (represented in the accessible object tree structure or by childId) | n/a (represented in automation element tree structure) | posinset |
pressed | STATE_SYSTEM_PRESSED | ToggleState (Toggle pattern) | pressed |
readonly | STATE_SYSTEM_READONLY | IsReadOnly | readonly |
relevant | n/a | n/a | relevant |
required | n/a | IsRequiredForForm | required |
secret | STATE_SYSTEM_PROTECTED | IsPassword | secret |
selected | STATE_SYSTEM_SELECTED | IsSelected (SelectionItem pattern) | selected |
setsize | n/a | n/a (child count in automation element tree structure) | setsize |
sort | n/a | n/a | sort |
tabindex | STATE_SYSTEM_FOCUSABLE | IsKeyboardFocusable | tabindex |
valuemax | n/a | Maximum (RangeValue pattern) | valuemax |
valuemin | n/a | Minimum (RangeValue pattern) | valuemin |
valuenow | IAccessible::get_accValue | Value (RangeValue pattern) | valuenow |
valuetext | IAccessible::get_accValue NOTE: When both the valuenow and valuetext ARIA properties are set, accValue holds the data from the ARIA valuetext property. |
Value (Value pattern) NOTE: The RangeValue and Value control patterns can coexist with UI Automation when both valuetext and valuenow are specified. |
valuetext |
Additional Considerations
UI Automation also offers a simple text object model with the Text control pattern, which supports embedding objects in a document object. This enables user agents and client applications to treat Web content as an HTML document or as a traditional desktop UI, depending on the end-user scenarios.