WAI-ARIA State or Property MSAA + UIA Express MSAA + IAccessible2 ATK / AT-SPI Mac OS X

aria-atomic ="true" Expose atomic=true in AriaProperties IAccessible2: Expose as object attribute atomic:true and container-atomic:true

and Expose as object attribute container-atomic:true on all descendants as well as IA2_RELATION_MEMBER_OF pointing to this element (the atomic root) as described in Changes to document content or node visibility. Expose as object attribute atomic:true and container-atomic:true . Expose object attribute container-atomic:true on all descendants as well as RELATION_MEMBER_OF pointing to this element (the atomic root) as described in Changes to document content or node visibility. boolean AXARIAAtomic: YES

aria-autocomplete ="inline" , "list" , or "both" Expose autocomplete=<value> in AriaProperties IAccessible2: Object attribute autocomplete:<value>

Expose the IA2_STATE_SUPPORTS_AUTOCOMPLETION equivalent state Object attribute autocomplete:<value> Expose the SUPPORTS_AUTOCOMPLETION equivalent state Not mapped

aria-busy ="true" (state) Expose the STATE_SYSTEM_BUSY state Expose the STATE_SYSTEM_BUSY state Expose the STATE_BUSY state boolean AXARIABusy: YES

aria-busy ="false" (state) (default) Clear the STATE_SYSTEM_BUSY state Clear the STATE_SYSTEM_BUSY state Clear the STATE_BUSY state boolean AXARIABusy: NO

aria-checked ="true" (state) Expose as ToggleState property in Toggle Control Pattern. Toggle.ToggleState = On (1) Special case: For menuitemradio and radio , expose as IsSelected property in SelectionItem Control Pattern. SelectionItem.IsSelected = On (1) Set the STATE_SYSTEM_CHECKED state IAccessible2: Expose object attribute checkable:true Expose object attribute checkable:true Set the STATE_CHECKED state AXValue: 1

aria-checked ="false" (state) Expose as ToggleState property in Toggle Control Pattern. Toggle.ToggleState = Off (0) Special case: For menuitemradio and radio , expose as IsSelected property in SelectionItem Control Pattern. SelectionItem.IsSelected = Off (0) Clear the STATE_SYSTEM_CHECKED state IAccessible2: Expose object attribute checkable:true Clear the STATE_CHECKED state Expose object attribute checkable:true AXValue: 0

aria-checked ="mixed" (state) Treat as "false" for radio and menuitemradio roles. Expose as ToggleState property in Toggle Control Pattern. Set the STATE_SYSTEM_MIXED state Toggle.ToggleState = Indeterminate (2) Set the STATE_SYSTEM_MIXED state IAccessible2: Expose object attribute checkable:true Expose STATE_INDETERMINATE , unless on a role of radio or menuitemradio (in those cases treat as "false" ) Expose object attribute checkable:true AXValue: 2

aria-controls Expose pointer to the accessible object ControllerFor property IAccessible2: Expose pointer to the accessible object in IA2_RELATION_CONTROLLER_FOR

Expose reverse relations as described in Relations. Expose pointer to the accessible object RELATION_CONTROLLER_FOR Expose reverse relations as described in Relations. array AXLinkedUIElements contains pointers to nodes matching IDREFs

aria-describedby Use in calculating the accessible Description as described in Name Computation. Expose in accDescription property. Use in calculating the accessible Description as described in Name Computation. Expose in accDescription property. IAccessible2: If the referenced object is in the accessibility tree, expose pointer to it in IA2_RELATION_DESCRIBED_BY and expose reverse relations as described in Relations. Use in calculating the accessible Description as described in Name Computation. Expose in the description property of the accessible object. If the referenced object is in the accessibility tree, expose reverse relations as described in Relations. Use in calculating the accessible description as described in Name Computation and expose value as string AXHelp .

aria-disabled ="true" (state) Set IsEnabled to "false" Set STATE_SYSTEM_UNAVAILABLE Propagate to all descendants of the element with STATE_SYSTEM_FOCUSABLE Not mapped boolean AXEnabled: NO

aria-disabled ="false" (state) (default) Set IsEnabled to "true" Clear STATE_SYSTEM_UNAVAILABLE Expose STATE_ENABLED boolean AXEnabled: YES

aria-dropeffect ="copy" , "move" , "link" , "execute" , or "popup" (state) Expose dropeffect=<value> in AriaProperties IAccessible2: Expose as object attribute dropeffect:<value> Expose as object attribute dropeffect:<value> array AXDropEffects

aria-dropeffect ="none" (state) (default) Not mapped* IAccessible2: Expose as object attribute dropeffect:none if there are no other valid tokens. Not mapped if not specified by the author. Expose as object attribute dropeffect:none if there are no other valid tokens. Not mapped if not specified by the author. Not mapped*

aria-expanded ="true" (state) Expose as "expanded" in ExpandCollapseState property of ExpandCollapse Control Pattern Set STATE_SYSTEM_EXPANDED Expose STATE_EXPANDABLE and STATE_EXPANDED boolean AXExpanded: YES

aria-expanded ="false" (state) Expose as "collapsed" in ExpandCollapseState property of ExpandCollapse Control Pattern Set STATE_SYSTEM_COLLAPSED Expose STATE_EXPANDABLE boolean AXExpanded: NO

aria-flowto Expose a reference to the accessible object in FlowsTo property IAccessible2: Expose reference to the accessible object in IA2_RELATION_FLOW_TO

Expose reverse relations as described in Relations. Expose reference to the accessible object in RELATION_FLOWS_TO Expose reverse relations as described in Relations. array AXLinkedUIElements contains pointer to nodes matching IDREFs

aria-grabbed ="true" (state) Expose as grabbed=true in AriaProperties IAccessible2: Object attribute grabbed:true Object attribute grabbed:true boolean AXGrabbed: YES

aria-grabbed ="false" (state) Expose as grabbed=false in AriaProperties IAccessible2: Object attribute grabbed:false Object attribute grabbed:false boolean AXGrabbed: NO

aria-haspopup ="true" (default for role combobox ) Expose as STATE_SYSTEM_HASPOPUP . If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU . Expose as STATE_SYSTEM_HASPOPUP . If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU . Object attribute haspopup:true Expose AXShowMenu and AXPress actions

aria-haspopup ="false" (default) Clear the HASPOPUP state. If specified on a push button, change the role to ROLE_SYSTEM_BUTTONMENU Clear the HASPOPUP state. If specified on a push button, change the role to ROLE_SYSTEM_BUTTONMENU Not mapped* Not mapped*

aria-hidden ="true" (state) See Including Elements in the Accessibility Tree. If the object is in the accessibility tree, map all attributes as normal. See Including Elements in the Accessibility Tree. If the object is in the accessibility tree, map all attributes as normal. IAccessible2: Expose object attribute hidden:true . See Including Elements in the Accessibility Tree. If the object is in the accessibility tree, map all attributes as normal. In addition, expose object attribute hidden:true . Not exposed in AX API unless focused. If focused, expose as normal.

aria-invalid ="true" , "spelling" , or "grammar" (state) If aria-invalid ="true" , expose false in IsDataValidForForm property,

, expose in property, Otherwise expose <value> in IsDataValidForForm property IAccessible2: Set IA2_STATE_INVALID_ENTRY

Expose the value as a text attribute (not object attribute). Set STATE_INVALID_ENTRY

Expose the value as a text attribute (not object attribute). AXInvalid: <value>

aria-invalid =<unknown value> Expose <value> in IsDataValidForForm property IAccessible2: Set IA2_STATE_INVALID_ENTRY

Expose the value as a text attribute (not object attribute). Set STATE_INVALID_ENTRY

Expose the value as a text attribute (not object attribute). AXInvalid: <value>

aria-invalid ="false" (state) (default) Expose true in IsDataValidForForm property IAccessible2: Clear IA2_STATE_INVALID_ENTRY or equivalent state. Not mapped* AXInvalid: "false"

aria-invalid ="" (state) (default) Expose true in IsDataValidForForm property IAccessible2: Clear IA2_STATE_INVALID_ENTRY or equivalent state. Not mapped* AXInvalid: "false"

aria-label Use in calculating the accessible name as described in Name Computation. Expose in accName property. Use in calculating the accessible name as described in Name Computation. Expose in accName property. Use in calculating the accessible name as described in Name Computation. Expose in the name property of the accessible object. Calculate accessible name as described in Name Computation and expose value as string AXDescription . Note: AXDescription is recommended for accessible name values that are not exposed visually, such as @alt and @aria-label . Accessible name values that are exposed visually, as in the case of a button, should be exposed as string AXTitle . For example, with <input type="button" value="Feb" aria-label="February"> , expose both AXTitle:"Feb" and AXDescription:"February" .

aria-labelledby Use in calculating the accessible name as described in Name Computation. Expose in accName property. Use in calculating the accessible name as described in Name Computation. Expose in accName property. IAccessible2: If the referenced object is in the accessibility tree expose a pointer to it in IA2_RELATION_LABELLED_BY and expose reverse relations as described in Relations. Use in calculating the accessible name as described in Name Computation. Expose in the name property of the accessible object. If the referenced object is in the accessibility tree, expose a pointer to it in RELATION_LABELLED_BY and expose reverse relations as described in Relations. If aria-labelledby references a single element, expose the labeling relationship as element AXTitleUIElement . If aria-labelledby references multiple elements, or if the labeling element is invisible or otherwise not exposed in the accessibility tree, use in calculating the accessible name as described in Name Computation and expose value as string AXDescription .

aria-level Expose as level=<value> in AriaProperites . IAccessible2: Expose as object attribute level:<value> .

. If the role supports aria-posinset and aria-setsize , expose in groupPosition() .

and , expose in . May affect RELATION_NODE_CHILD_OF when used on a tree item. See section Group Position. Expose as object attribute level:<value> When used on a heading , map to AXValue . When used on an outline row (like a treeitem or group ), map to AXDisclosureLevel.

aria-live ="off" (default) Set LiveSetting property to "off" IAccessible2: Expose as object attribute live:off and container-live:off

and Expose as object attribute container-live:off on all descendants as described in Changes to document content or node visibility. Expose as object attribute live:off and container-live:off . Expose as object attribute container-live:off on all descendants as described in Changes to document content or node visibility. AXARIALive: "off"

aria-multiline ="true" Expose as multiline=true in AriaProperties IAccessible2: Set the IA2_MULTI_LINE state and clear IA2_SINGLE_LINE Set STATE_MULTI_LINE and clear STATE_SINGLE_LINE Not mapped See textbox in the Role Mapping Table for more information.

aria-multiselectable ="true" Set CanSelectMultiple property on the Selection Control Pattern. See Selection for details. Set the STATE_SYSTEM_MULTISELECTABLE state. Expose STATE_SYSTEM_EXTSELECTABLE to exactly match STATE_SYSTEM_ MULTISELECTABLE . IAccessible2: For text elements, support the selection methods defined on the IAccessibleText interface See Selection for details. Expose STATE_MULTISELECTABLE See Selection for details. Not mapped See Selection for details.

aria-orientation ="horizontal" (default) Set Orientation property to "horizontal" IAccessible2: Set: IA2_STATE_HORIZONTAL

Clear: IA2_STATE_VERTICAL Set STATE_HORIZONTAL AXOrientation: AXHorizontalOrientation

aria-orientation ="vertical" (default for role scrollbar ) Set Orientation Property to "vertical" IAccessible2: Set: IA2_STATE_VERTICAL

Clear: IA2_STATE_HORIZONTAL Set STATE_VERTICAL AXOrientation: AXVerticalOrientation

aria-owns The structure should be reflected in the accessibility tree as directed by aria-owns . Map the elements that are referenced by this property as children of the current element. If multiple aria-owns relationships are found, use only the first one. The accessibility tree is not modified. IAccessible2: Expose reverse relations as described in Relations If multiple aria-owns relationships are found, use only the first one. Expose reverse relations as described in Relations If multiple aria-owns relationships are found, use only the first one. array AXLinkedUIElements contains pointer to nodes matching IDREFs

aria-posinset If not provided for relevant roles, user agents calculate aria-setsize and aria-posinset for each object in the container based on the number of objects in the DOM . Expose as posinset=<value> in AriaProperties . Additionally, user agents MAY update the LegacyIAccessible.Description property to take the form X of Y, where X is the aria-posinset value and Y is the aria-setsize value; and if X is less than one, or if X is greater than Y, LegacyIAccessible.Description will be empty. IAccessible2: Expose as object attribute posinset:<value> and in groupPosition() . Expose as object attribute posinset:<value> . AXARIAPosInSet: <value>

aria-pressed ="true" (state) Expose as ToggleState property of Toggle Control Pattern Toggle.ToggleState = On (1) Set the STATE_SYSTEM_PRESSED state. IAccessible2: If on a button, expose the role as IA2_ROLE_TOGGLE_BUTTON

Expose object attribute checkable:true Expose STATE_PRESSED . If on a button, expose the role as ROLE_TOGGLE_BUTTON . Expose object attribute checkable:true AXValue: 1

aria-pressed ="mixed" (state) Expose as ToggleState property of Toggle Control Pattern Toggle.ToggleState = Indeterminate (2) Set the STATE_SYSTEM_PRESSED state. IAccessible2: If on a button, expose the role as IA2_ROLE_TOGGLE_BUTTON

Expose object attribute checkable:true Expose STATE_INDETERMINATE / STATE_SYSTEM_MIXED . If on a button, expose the role as ROLE_TOGGLE_BUTTON . Expose object attribute checkable:true AXValue: 2

aria-pressed ="false" (state) Expose as ToggleState property of Toggle Control Pattern Toggle.ToggleState = Off (3) Clear the STATE_SYSTEM_PRESSED state IAccessible2: If on a button, expose the role as IA2_ROLE_TOGGLE_BUTTON

Expose object attribute checkable:true If on a button, expose the role as ROLE_TOGGLE_BUTTON . Expose object attribute checkable:true AXValue: 0

aria-readonly ="true" Expose as STATE_SYSTEM_READONLY Expose as STATE_SYSTEM_READONLY No mapping AXValue (not writable)

aria-readonly ="false" (default) Not mapped IAccessible2: Expose IA2_STATE_EDITABLE Expose STATE_EDITABLE AXValue (writable)

aria-relevant ="additions" , "removals" , "text" , or "all" Expose as relevant=<value> in AriaProperties IAccessible2: Expose as object attribute relevant:<value> and container-relevant:<value>

and Expose as object attribute container-relevant:<value> on all descendants as described in Changes to document content or node visibility. Expose as object attribute relevant:<value> and container-relevant:<value> . Expose as object attribute container-relevant:<value> on all descendants as described in Changes to document content or node visibility. AXARIARelevant: <value>

aria-relevant ="additions text" (Default) Expose as relevant=additions text in AriaProperties IAccessible2: Expose as object attribute relevant:additions text and container-relevant:additions text

and Expose as object attribute container-relevant:additions text on all descendants as described in Changes to document content or node visibility. Expose as object attribute relevant:additions text and container-relevant:additions text . Expose as object attribute container-relevant:additions text on all descendants as described in Changes to document content or node visibility AXARIARelevant: <value>

aria-required ="true" Expose as IsrequiredForForm property. IAccessible2: Expose IA2_STATE_REQUIRED Expose STATE_REQUIRED boolean AXRequired: YES

aria-selected ="true" (state) If role is radio or menuitemradio , mapping the value is OPTIONAL. Expose STATE_SYSTEM_SELECTED Expose STATE_SYSTEM_SELECTABLE Expose STATE_SYSTEM_SELECTED Expose STATE_SYSTEM_SELECTABLE IAccessible2: If not DISABLED , toggle between "true" and "false" as appropriate when aria-multiselectable is used on an ancestor as described in Selection. Expose STATE_SELECTED and STATE_SELECTABLE . If not DISABLED , toggle between "true" and "false" as appropriate when the AccessibleSelection interface is used on an ancestor with aria-multiselectable as described in Selection. boolean AXSelected: YES

aria-selected ="false" (state) If role is radio or menuitemradio , mapping the value is OPTIONAL. Clear STATE_SYSTEM_SELECTED Expose STATE_SYSTEM_SELECTABLE Clear STATE_SYSTEM_SELECTED Expose STATE_SYSTEM_SELECTABLE IAccessible2: If not DISABLED , toggle between "true" and "false" as appropriate when the AccessibleSelection interface is used on an ancestor with aria-multiselectable as described in Selection. Clear STATE_SELECTED and expose STATE_SELECTABLE . boolean AXSelected: NO

aria-setsize If not provided for relevant roles, user agents calculate aria-setsize and aria-posinset for each object in the container based on the number of objects in the DOM . Expose as setsize=<value> in AriaProperties Additionally, user agents MAY update the LegacyIAccessible.Description property to take the form X of Y, where X is the aria-posinset value and Y is the aria-setsize value; and if X is less than one, or if X is greater than Y, LegacyIAccessible.Description will be empty. IAccessible2: Expose object attribute setsize:<value> and groupPosition() . Expose object attribute setsize:<value> . AXARIASetSize: <value>

aria-sort ="ascending", "descending" , or "other" Expose as sort=<value> in AriaProperties . If on an element that maps to HeaderItem controls ( th elements, and elements that include the "columnheader" and "rowheader" role), ItemStatus="<value>" . IAccessible2: Expose as object attribute sort:<value> Expose as object attribute sort:<value> AXSortDirection: AXAscendingSortDirection | AXDescendingSortDirection | AXUnknownSortDirection

aria-sort ="none" (default) Not mapped* IAccessible2: If specified, expose as object attribute sort:<value> If specified, expose as object attribute sort:<value> Not mapped*

aria-valuemax Expose the Maximum property in RangeValue Control Pattern See Widget values for additional information IAccessible2: Expose via AccessibleValue interface. See Widget values for additional information Expose the Maximum property in RangeValue Control Pattern See Widget values for additional information number AXMaxValue See Widget values for additional information

aria-valuemin Expose the Minimum property in RangeValue Control Pattern See Widget values for additional information IAccessible2: Expose via AccessibleValue interface See Widget values for additional information Expose via AccessibleValue interface See Widget values for additional information number AXMinValue See Widget values for additional information

aria-valuenow If aria-valuetext is not defined, expose via IAccessible::get_accValue If aria-valuetext is not defined, expose via IAccessible::get_accValue IAccessible2: Expose via AccessibleValue interface. See Widget values for additional information Expose via AccessibleValue interface. See Widget values for additional information number AXValue See Widget values for additional information