UI Automation for W3C Accessible Rich Internet Applications Specification

Websites increase their utility with dynamic content and advanced 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 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 Pane alertdialog
application ROLE_SYSTEM_PANE Pane application
article ROLE_SYSTEM_DOCUMENT Document article
banner ROLE_SYSTEM_GROUPING Group banner
button ROLE_SYSTEM_PUSHBUTTON Button button
checkbox ROLE_SYSTEM_CHECKBUTTON CheckBox checkbox
columnheader ROLE_SYSTEM_COLUMNHEADER DataItem columnheader
combobox ROLE_SYSTEM_COMBOBOX ComboBox combobox
complementary ROLE_SYSTEM_GROUPING Group complementary
contentinfo ROLE_SYSTEM_GROUPING Group contentinfo
definition ROLE_SYSTEM_GROUPING Group definition
description ROLE_SYSTEM_TEXT Text description
dialog ROLE_SYSTEM_DIALOG Pane 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
link ROLE_SYSTEM_LINK Hyperlink link
list ROLE_SYSTEM_LIST List list
listbox ROLE_SYSTEM_LIST List listbox
listitem ROLE_SYSTEM_LISTITEM ListItem listitem
marquee ROLE_SYSTEM_ANIMATION Text marquee
menubar ROLE_SYSTEM_MENUBAR MenuBar menubar
menuitem ROLE_SYSTEM_MENUITEM MenuItem menuitem
menuitemcheckbox ROLE_SYSTEM_CHECKBUTTON CheckBox menuitemcheckbox
menuitemradio ROLE_SYSTEM_RADIOBUTTON RadioButton menuitemradio
navigation ROLE_SYSTEM_GROUPING Group navigation
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
scrollbar ROLE_SYSTEM_SCROLLBAR ScrollBar scrollbar
search ROLE_SYSTEM_GROUPING Group search
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
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
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 control 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 control pattern) expanded
flowto n/a FlowsTo n/a
grab n/a n/a grab
haspopup STATE_SYSTEM_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 control 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 control 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 control 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 control pattern) valuemax
valuemin n/a Minimum (RangeValue control pattern) valuemin
valuenow IAccessible::get_accValue Value (RangeValue control 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 control pattern)
NOTE: The RangeValue and Value control patterns can coexist with UI Automation when both valuetext and valuenow are specified.

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.