W3C Candidate Recommendation Draft
More details about this document- This version:
- https://www.w3.org/TR/2026/CRD-core-aam-1.2-20260805/
- Latest published version:
- https://www.w3.org/TR/core-aam-1.2/
- Latest editor's draft:
- https://w3c.github.io/core-aam/
- History:
- https://www.w3.org/standards/history/core-aam-1.2/
- Commit history
- Implementation report:
- https://w3c.github.io/test-results/core-aam-1.2/
- Latest Recommendation:
- https://www.w3.org/TR/core-aam-1.1/
- Editors:
- Cynthia Shelly (W3C Invited Expert)
- Former editors:
- Alexander Surkov (Igalia, S.L.) (Editor until August 2025)
- Joanmarie Diggs (Igalia, S.L.) (Editor until October 2022)
- Richard Schwerdtfeger (Knowbility) (Editor until October 2017)
- Joseph Scheuhammer (Inclusive Design Research Centre, OCAD University) (Editor until May 2017)
- Andi Snow-Weaver (IBM) (Editor until December 2012)
- Aaron Leventhal (IBM) (Editor until January 2009)
- Michael Cooper (W3C) (Editor until July 2023)
- Platform Mapping Maintainers:
- Benjamin Beaudry (Microsoft Corp.) (UIA)
- James Craig (Apple, Inc.) (AX API)
- Joanmarie Diggs (Igalia, S.L.) (ATK / AT-SPI)
- Alexander Surkov (Igalia, S.L.) (MSAA, IAccessible2)
- David Tseng (Google LLC) (Android Accessibility API)
- Feedback:
- GitHub w3c/core-aam (pull requests, new issue, open issues)
Copyright © 2014-2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
Abstract
This document describes how user agents should expose semantics of web content languages to accessibility APIs. This helps users with disabilities to obtain and interact with information using assistive technologies. Documenting these mappings promotes interoperable exposure of roles, states, properties, and events implemented by accessibility APIs and helps to ensure that this information appears in a manner consistent with author intent.
This Core Accessibility API Mappings specification defines support that applies across multiple content technologies, including general keyboard navigation support and mapping of general-purpose roles, states, and properties provided in Web content via WAI-ARIA [WAI-ARIA-1.2]. Other Accessibility API Mappings specifications depend on and extend this Core specification for specific technologies, including native technology features and WAI-ARIA extensions. This document updates and will eventually supersede the guidance in the Core Accessibility API Mappings 1.1 [CORE-AAM-1.1] W3C Recommendation. It is part of the WAI-ARIA suite described in the WAI-ARIA Overview.
Status of This Document
This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C standards and drafts index.
The Accessible Rich Internet Applications Working Group seeks feedback on any aspect of the specification. When submitting feedback, please consider issues in the context of the companion documents. To comment, file an issue in the W3C core-aam GitHub repository. If this is not feasible, send email to public-aria@w3.org (comment archive). In-progress updates to the document may be viewed in the publicly visible editors' draft.
Living specification — This document is maintained as a living specification. For the latest normative version, visit Core Accessibility API Mappings.
This document was published by the Accessible Rich Internet Applications Working Group as a Candidate Recommendation Draft using the Recommendation track.
Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Draft integrates changes from the previous Candidate Recommendation that the Working Group intends to include in a subsequent Candidate Recommendation Snapshot.
This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than a work in progress.
This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent that the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
This document is governed by the 18 August 2025 W3C Process Document.
Table of Contents
- Abstract
- Status of This Document
- 1. Introduction
- 2. Conformance
- 3. Mapping WAI-ARIA to Accessibility APIs
- 3.1 General rules for exposing WAI-ARIA semantics
- 3.2 Conflicts between native markup semantics and WAI-ARIA
- 3.3 Exposing attributes that do not directly map to accessibility API properties
- 3.4 Role mapping
- 3.4.1 General rules
- 3.4.2 Computed Role
- 3.4.3 Role Mapping Tables
- 3.4.3.1
alert - 3.4.3.2
alertdialog - 3.4.3.3
application - 3.4.3.4
article - 3.4.3.5
banner - 3.4.3.6
blockquote - 3.4.3.7
buttonwith default values foraria-pressedandaria-haspopup - 3.4.3.8
buttonwith non-falsevalue foraria-haspopup - 3.4.3.9
buttonwith defined value foraria-pressed - 3.4.3.10
caption - 3.4.3.11
cell - 3.4.3.12
checkbox - 3.4.3.13
code - 3.4.3.14
columnheader - 3.4.3.15
combobox - 3.4.3.16
comment - 3.4.3.17
complementary - 3.4.3.18
contentinfo - 3.4.3.19
definition - 3.4.3.20
deletion - 3.4.3.21
dialog - 3.4.3.22
directory(deprecated) - 3.4.3.23
document - 3.4.3.24
emphasis - 3.4.3.25
feed - 3.4.3.26
figure - 3.4.3.27
formwith an accessible name - 3.4.3.28
formwithout an accessible name - 3.4.3.29
generic - 3.4.3.30
grid - 3.4.3.31
gridcell - 3.4.3.32
group - 3.4.3.33
heading - 3.4.3.34
image - 3.4.3.35
img - 3.4.3.36
insertion - 3.4.3.37
link - 3.4.3.38
list - 3.4.3.39
listboxwithout an accessibility parent ofcombobox - 3.4.3.40
listboxwith an accessibility parent ofcombobox - 3.4.3.41
listitem - 3.4.3.42
log - 3.4.3.43
main - 3.4.3.44
mark - 3.4.3.45
marquee - 3.4.3.46
math - 3.4.3.47
menu - 3.4.3.48
menubar - 3.4.3.49
menuitem - 3.4.3.50
menuitemcheckbox - 3.4.3.51
menuitemradio - 3.4.3.52
meter - 3.4.3.53
navigation - 3.4.3.54
none - 3.4.3.55
note - 3.4.3.56
optionnot insidecombobox - 3.4.3.57
optioninsidecombobox - 3.4.3.58
paragraph - 3.4.3.59
presentation - 3.4.3.60
progressbar - 3.4.3.61
radio - 3.4.3.62
radiogroup - 3.4.3.63
regionwith an accessible name - 3.4.3.64
regionwithout an accessible name - 3.4.3.65
rownot insidetreegrid - 3.4.3.66
rowinsidetreegrid - 3.4.3.67
rowgroup - 3.4.3.68
rowheader - 3.4.3.69
scrollbar - 3.4.3.70
search - 3.4.3.71
searchbox - 3.4.3.72
sectionfooter - 3.4.3.73
sectionheader - 3.4.3.74
separator(non-focusable) - 3.4.3.75
separator(focusable) - 3.4.3.76
slider - 3.4.3.77
spinbutton - 3.4.3.78
status - 3.4.3.79
strong - 3.4.3.80
subscript - 3.4.3.81
suggestion - 3.4.3.82
superscript - 3.4.3.83
switch - 3.4.3.84
tab - 3.4.3.85
table - 3.4.3.86
tablist - 3.4.3.87
tabpanel - 3.4.3.88
term - 3.4.3.89
textboxwhenaria-multilineisfalse - 3.4.3.90
textboxwhenaria-multilineistrue - 3.4.3.91
time - 3.4.3.92
timer - 3.4.3.93
toolbar - 3.4.3.94
tooltip - 3.4.3.95
tree - 3.4.3.96
treegrid - 3.4.3.97
treeitem
- 3.4.3.1
- 3.5 State and Property Mapping
- 3.5.1 General rules
- 3.5.2 State and Property Mapping Tables
- 3.5.2.1 Not Mapped
- 3.5.2.2
aria-activedescendant - 3.5.2.3
aria-atomic=true - 3.5.2.4
aria-atomic=false - 3.5.2.5
aria-autocomplete=inline,list, orboth - 3.5.2.6
aria-autocomplete=none - 3.5.2.7
aria-braillelabel - 3.5.2.8
aria-brailleroledescription - 3.5.2.9
aria-brailleroledescriptionis undefined or the empty string - 3.5.2.10
aria-busy=true - 3.5.2.11
aria-busy=false - 3.5.2.12
aria-checked=true - 3.5.2.13
aria-checked=false - 3.5.2.14
aria-checked=mixed - 3.5.2.15
aria-checkedis undefined - 3.5.2.16
aria-colcount - 3.5.2.17
aria-colindex - 3.5.2.18
aria-colindextext - 3.5.2.19
aria-colspan - 3.5.2.20
aria-controls - 3.5.2.21
aria-currentwith non-falseallowed value - 3.5.2.22
aria-currentwith unrecognized value - 3.5.2.23
aria-currentisfalseor undefined - 3.5.2.24
aria-describedby - 3.5.2.25
aria-description - 3.5.2.26
aria-details - 3.5.2.27
aria-disabled=true - 3.5.2.28
aria-disabled=false - 3.5.2.29
aria-dropeffect=copy,move,link,execute, orpopup(deprecated) - 3.5.2.30
aria-dropeffect=none(deprecated) - 3.5.2.31
aria-errormessage - 3.5.2.32
aria-expanded=true - 3.5.2.33
aria-expanded=false - 3.5.2.34
aria-expandedis undefined - 3.5.2.35
aria-flowto - 3.5.2.36
aria-grabbed=true - 3.5.2.37
aria-grabbed=false - 3.5.2.38
aria-grabbedis undefined - 3.5.2.39
aria-haspopup=true - 3.5.2.40
aria-haspopup=false - 3.5.2.41
aria-haspopup=dialog - 3.5.2.42
aria-haspopup=grid - 3.5.2.43
aria-haspopup=listbox - 3.5.2.44
aria-haspopup=menu - 3.5.2.45
aria-haspopup=tree - 3.5.2.46
aria-hidden=trueon unfocused element - 3.5.2.47
aria-hidden=truewhen element is focused or fires an accessibility event - 3.5.2.48
aria-hidden=false - 3.5.2.49
aria-invalid=true - 3.5.2.50
aria-invalid=false - 3.5.2.51
aria-invalid=spellingorgrammar - 3.5.2.52
aria-invalidwith unrecognized value - 3.5.2.53
aria-keyshortcuts - 3.5.2.54
aria-label - 3.5.2.55
aria-labelledby - 3.5.2.56
aria-levelon non-heading - 3.5.2.57
aria-levelonheading - 3.5.2.58
aria-live=assertive - 3.5.2.59
aria-live=polite - 3.5.2.60
aria-live=off - 3.5.2.61
aria-modal=true - 3.5.2.62
aria-modal=false - 3.5.2.63
aria-multiline=true - 3.5.2.64
aria-multiline=false - 3.5.2.65
aria-multiselectable=true - 3.5.2.66
aria-multiselectable=false - 3.5.2.67
aria-orientation=horizontal - 3.5.2.68
aria-orientation=vertical - 3.5.2.69
aria-orientationis undefined - 3.5.2.70
aria-owns - 3.5.2.71
aria-placeholder - 3.5.2.72
aria-posinset - 3.5.2.73
aria-pressed=true - 3.5.2.74
aria-pressed=mixed - 3.5.2.75
aria-pressed=false - 3.5.2.76
aria-pressedis undefined - 3.5.2.77
aria-readonly=true - 3.5.2.78
aria-readonly=false - 3.5.2.79
aria-readonlyis unspecified ongridcell - 3.5.2.80
aria-relevant - 3.5.2.81
aria-required=true - 3.5.2.82
aria-required=false - 3.5.2.83
aria-roledescription - 3.5.2.84
aria-roledescriptionis undefined or the empty string - 3.5.2.85
aria-rowcount - 3.5.2.86
aria-rowindex - 3.5.2.87
aria-rowindextext - 3.5.2.88
aria-rowspan - 3.5.2.89
aria-selected=true - 3.5.2.90
aria-selected=false - 3.5.2.91
aria-selectedis undefined - 3.5.2.92
aria-setsize - 3.5.2.93
aria-sort=ascending - 3.5.2.94
aria-sort=descending - 3.5.2.95
aria-sort=other - 3.5.2.96
aria-sort=none - 3.5.2.97
aria-valuemax - 3.5.2.98
aria-valuemin - 3.5.2.99
aria-valuenow - 3.5.2.100
aria-valuetext
- 3.6 Special Processing Requiring Additional Computation
- 3.7 Actions
- 3.8 Events
- 3.8.1 State and Property Change Events
- 3.8.1.1
aria-activedescendant - 3.8.1.2
aria-busy(state) - 3.8.1.3
aria-checked(state) - 3.8.1.4
aria-current(state) - 3.8.1.5
aria-disabled(state) - 3.8.1.6
aria-describedby - 3.8.1.7
aria-dropeffect(property, deprecated) - 3.8.1.8
aria-expanded(state) - 3.8.1.9
aria-grabbed(state, deprecated) - 3.8.1.10
aria-hidden(state) - 3.8.1.11
aria-invalid(state) - 3.8.1.12
aria-labelandaria-labelledby - 3.8.1.13
aria-pressed(state) - 3.8.1.14
aria-readonly - 3.8.1.15
aria-required - 3.8.1.16
aria-selected(state) - 3.8.1.17
aria-valuenow - 3.8.1.18
aria-valuetext
- 3.8.1.1
- 3.8.2 Changes to document content or node visibility
- 3.8.3 Focus Changes
- 3.8.4 Selection
- 3.8.5 Special Events for Menus
- 3.8.1 State and Property Change Events
- 4. Algorithms
- 5. Privacy considerations
- 6. Security considerations
- A. Change Log
- B. Acknowledgments
- C. References
This section is non-normative.
The Core Accessibility API Mappings specifies how WAI-ARIA roles, states, and properties are expected to be exposed by user agents via platform accessibility APIs. It is part of a set of resources that define and support the WAI-ARIA specification which includes the following documents:
- Accessible Rich Internet Applications (WAI-ARIA) 1.2 [WAI-ARIA-1.2], a W3C recommendation, defines the WAI-ARIA standard.
- WAI-ARIA Authoring Practices Guide, describes how web content developers can develop accessible rich internet applications using WAI-ARIA. It provides detailed advice and examples directed primarily to web application developers, yet also useful to user agent and developers of assistive technologies.
- Roadmap for Accessible Rich Internet Applications (WAI-ARIA Roadmap) [WAI-ARIA-ROADMAP], defines the path to make rich web content accessible, including steps already taken, remaining future steps, and a time line.
For an introduction to WAI-ARIA, see the WAI-ARIA Overview.
Accessibility APIs make it possible to communicate accessibility information about user interfaces to assistive technologies. This information includes:
- Descriptive properties (role, name, value, position, etc.)
- Transient states (pressed, focused, etc.)
- Events (text changed, button was clicked, checkbox was toggled)
- Actions the user might take (click, check/toggle, drag, etc.)
- Relationships (parent/child, description/described object, previous object/next object, etc.)
- Textual content
Accessibility APIs covered by this specification are:
- MSAA with IAccessible2 1.3 [IAccessible2]
- User Interface Automation [UI-AUTOMATION]
- ATK - Accessibility Toolkit [ATK] and Assistive Technology Service Provider Interface [AT-SPI], referred to hereafter as "ATK/AT-SPI"
- macOS Accessibility Protocol [AXAPI]
- Android [Android-Accessibility-API]
The WAI-ARIA 1.0 User Agent Implementation Guide included mappings for [UIA-EXPRESS], also known as IAccessibleEx, which was implemented in Microsoft Internet Explorer 8.0 - 11. New implementations are strongly encouraged to use UI Automation instead.
If user agent developers need to expose information using other accessibility APIs, it is recommended that they work closely with the developer of the platform where the API runs, and assistive technology developers on that platform.
For various technological and historical reasons, accessibility APIs do not all work in the same way. In many cases, there is no simple one-to-one relationship between how each of them names or exposes roles, states, and properties to assistive technologies. The following subsections describe a few of the distinguishing characteristics of some of the APIs.
MSAA, IAccessible2, UIA, and AX API each define an API that is shared by both the software application exposing information about its content and interactive components, and the assistive technology consuming that information. Conversely, Linux/GNOME separates that shared interface into its two aspects, each represented by a different accessibility API: ATK or AT-SPI.
ATK defines an interface that is implemented by software in order to expose accessibility information, whereas AT-SPI is a desktop service that gathers accessibility information from active applications and relays it to other interested applications, usually assistive technologies.
For example, the GNOME GUI toolkit [GTK], implements the relevant aspects of ATK for each widget (menu, combobox, checkbox, etc.) in order that GTK widgets expose accessibility information about themselves. AT-SPI then acquires the information from applications built with GTK and makes it available to interested parties.
ATK is most relevant to implementors, whereas AT-SPI is relevant to consumers. In the context of mapping WAI-ARIA roles, states and properties, user agents are implementors and use ATK. Assistive Technologies are consumers, and use AT-SPI.
UI Automation expresses every element of the application user interface as an automation element. Automation elements form the nodes of the application accessibility tree, that can be queried, traversed and interacted with by automation clients.
There are several concepts central to UI Automation:
- Automation element - controls and some application content are presented as automation elements.
- Element properties - Automation elements have several common properties describing native framework element characteristics in an agnostic way that all automation clients can understand. There are several ways to access element property values, described below.
- Control Patterns - Some common interactivity in different frameworks is expressed as control patterns in UIA, allowing different automation clients to interact with controls using common programmatic interfaces.
- Events - Similar to other accessibility APIs, automation elements support various events that allow automation providers to notify clients on important state changes.
All automation elements inherit from the IUIAutomationElement interface and all properties that are not specific to a particular control pattern can be queried through that
interface. There are several ways to access UI Automation element properties:
- Direct property accessors to the current values -
Current{PropertyName}, e.g.IUIAutomationElement::CurrentNamefor theNameproperty -
Cached property accessors -
Cached{PropertyName}, e.g.IUIAutomationElement::CachedNamefor theNameproperty. Using cached values is preferred when providers and clients are used in remote environments. -
GetCurrentPropertyValueand passing the UIA Property ID enumeration value corresponding to that property to get the current value, e.g.IUIAutomationElement::GetCurrentPropertyValue(UIA_NamePropertyId)for theNameproperty. -
GetCachedPropertyValueand passing the UIA Property ID enumeration value corresponding to that property to get the cached value, e.g.IUIAutomationElement::GetCachedPropertyValue(UIA_NamePropertyId)for theNameproperty.
Properties for specific UIA control patterns are queried the same way using relevant control pattern interfaces. Taking Toggle Pattern as an example, to query the ToggleState property clients can use IUIAutomationTogglePattern::CurrentToggleState or IUIAutomationElement::GetCurrentPropertyValue(UIA_ToggleToggleStatePropertyId) to get the current value.
The property mappings in this specification provide the {PropertyName} and do not specify all specific ways to access the property value. Automation clients can access current
or cached values using conventions described above, depending on specific needs and coding style conventions.
Android accessibility services and applications both express user interface elements as a tree of AccessibilityNodeInfo objects. Accessibility services receive events,
traverse the AccessibilityNodeInfo tree, retrieve properties, and perform actions on a node. Conversely, Android applications build the AccessibilityNodeInfo tree
indirectly by constructing views or composables, or directly via an AccessibilityNodeProvider. They then subsequently fire events, and handle actions.
For WAI-ARIA implementers, of particular interest is the mapping into properties, actions, and events on AccessibilityNodeInfo and AccessibilityEvent.
Note: Many ARIA roles in this specification are mapped to android.view.View as a default or fallback mapping. This often reflects a baseline level of support where a more
specific Android widget class is not available or has not been defined yet. These mappings are subject to change as the Android accessibility ecosystem evolves and more specific mappings
are identified. In cases where no specific role mapping is available, Android's
setRoleDescription
can be used to convey the specific ARIA role semantics to assistive technologies.
Each platform accessibility API includes a way to assign and retrieve accessible name and accessible description properties for each accessible object created in the accessibility tree. How these properties are implemented and what they are called vary depending on the API.
For instance, in MSAA, all accessible objects support the accName property, which stores the object's
accessible name. Where the object also supports having an
accessible description, MSAA stores this property in the object's accDescription property.
Software using ATK can read and write to an object's accessible-name and accessible-description properties. In turn, AT-SPI can query the values of those
properties through its atspi_accessible_get_name and atspi_accessible_get_description functions.
Automation elements in the UIA accessibility tree have a Name property. Where the object also supports having an
accessible description, UIA stores this property in the object's FullDescription property.
An object's accessible description, where provided by
aria-description or aria-describedby, should be exposed in the accessibilityCustomContent API. Otherwise, it should be exposed as AXHelp.
In Android, accessible names map to a number of properties defined on AccessibilityNodeInfo such as content description, supplemental description, and text.
For more detail, see the Accessible Name and Description Computation specification.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY, MUST, MUST NOT, SHOULD, and SHOULD NOT in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
Normative sections provide requirements that user agents and assistive technologies MUST follow for an implementation to conform to this specification.
Non-normative (informative) sections provide information useful to understanding the specification. Such sections may contain examples of recommended practice, but it is not required to follow such recommendations in order to conform to this specification.
The WAI-ARIA specification lists some features as deprecated. Although this means authors are encouraged not to use such features, it is expected that the features could still be used in legacy content. Therefore, it is important that user agents continue to map these features to accessibility APIs, and doing so is part of conformance to this specification. When future versions of the WAI-ARIA specification change such features from deprecated to removed, they will be removed from the mappings as well and user agents will no longer be asked to continue support for those features.
Where supported by the platform Accessibility API, user agents expose WAI-ARIA semantics through the standard mechanisms of the desktop accessibility API. For example, for WAI-ARIA widgets, compare how the widget is exposed in a similar desktop widget. In general most WAI-ARIA widget capabilities are exposed through the role, value, Boolean states, and relations of the accessibility API.
With respect to WAI-ARIA 1.0 and 1.1, accessibility APIs operate in one direction only. User agents publish WAI-ARIA information (roles, states, and properties) via an accessibility API, and an AT can acquire that information using the same API. However, the other direction is not supported. WAI-ARIA 1.0 and 1.1 do not define mechanisms for assistive technologies to directly modify WAI-ARIA information.
The terms "exposing", "mapping", and "including" refer to the creation of accessible object nodes within the accessibility tree, and populating these objects with Accessibility API specific states and properties.
WAI-ARIA roles, states, and properties are intended to add semantic information when native host language elements with these semantics are not available, and are generally used on elements that have no native semantics of their own. They can also be used on elements that have similar but not identical semantics to the intended object (for instance, a nested list could be used to represent a tree structure). This method can be part of a fallback strategy for older browsers that have no WAI-ARIA implementation, or because native presentation of the repurposed element reduces the amount of style and/or script needed. Except for the cases outlined below, user agents MUST always use the WAI-ARIA semantics to define how it exposes the element to accessibility APIs, rather than using the host language semantics.
Host languages can have features that have implicit WAI-ARIA semantics corresponding to roles. When a
WAI-ARIA role is provided that has a corresponding role in the accessibility
API, user agents MUST use the semantic of the WAI-ARIA role for processing,
not the native semantic, unless the role requires WAI-ARIA states and properties whose attributes are explicitly forbidden on the
native element by the host language. Values for roles do not conflict in the same way as values for states and properties, and because authors are expected to have a valid reason to provide
a WAI-ARIA role even on elements that would not normally be repurposed. For example, spin buttons are typically constructed from
text fields (<input type="text">) in order to get most of the default keyboard support. But, the native role, "text field", is not correct because it
does not properly communicate the additional features of a spin button. The author adds the WAI-ARIA role of
spinbutton (<input type="text" role="spinbutton" ...>) so that the control is properly mapped in the accessibility
API. When a WAI-ARIA role is provided that does not have a corresponding role
in the accessibility API, user agents MAY expose the native semantic in addition to the
WAI-ARIA role. If the host language element is overridden by a
WAI-ARIA role whose semantics or structure is not equivalent to the native host language semantics or to a subclass of those
semantics, then treat any child elements having roles specified as Allowed Accessibility Child Roles as having presentation or
none.
Note
The above text differs slightly from the WAI-ARIA specification. The requirement for user agents to expose the WAI-ARIA role instead of the native role was intended to only apply in cases where there is a direct mapping from the WAI-ARIA role to a corresponding role in the accessibility API. The wording of the requirement is not clear in the WAI-ARIA specification, however, and has been interpreted differently by implementers. The requirement has been clarified here and an additional statement added to indicate that user agents may expose native semantics if there is not a direct mapping to a role in the accessibility API. Because there are differing implementations, authors will be advised against adding such WAI-ARIA roles to native elements that have their own semantics in the WAI-ARIA Authoring Practices Guide.
When WAI-ARIA states and properties correspond to host language features that have the same implicit
WAI-ARIA semantic, it can be problematic if the values become out of sync. For example, the
HTML checked attribute and the aria-checked attribute could have conflicting values. Therefore to prevent providing
conflicting states and properties to assistive technologies, host languages will explicitly declare where the use of
WAI-ARIA attributes on a host language element conflict with native attributes for that element. When a host language declares a
WAI-ARIA attribute to be in direct semantic conflict with a native attribute for a given element, user
agents MUST ignore the WAI-ARIA attribute and instead use the host language attribute with the same implicit semantic.
Host languages might also document features that cannot be overridden with WAI-ARIA (these are called "strong native semantics"). These can be features that have implicit WAI-ARIA semantics as well as features where the processing would be uncertain if the semantics were changed with WAI-ARIA. While conformance checkers might signal an error or warning when a WAI-ARIA role is used on elements with strong native semantics, user agents MUST still use the value of the semantic of the WAI-ARIA role when exposing the element to accessibility APIs.
Platform accessibility APIs might have features that are not in WAI-ARIA. Likewise, WAI-ARIA exposes capabilities that are not supported by accessibility APIs at the time of publication. There typically is not a one to one relationship between all WAI-ARIA attributes and platform accessibility APIs. When WAI-ARIA roles, states and properties do not directly map to an accessibility API, and there is a mechanism in the API to expose the WAI-ARIA role, states, and properties and their values, user agents MUST expose the WAI-ARIA data using that mechanism as follows:
-
In IAccessible2 and ATK/AT-SPI, use object attributes to expose
semantics that are not directly supported in the APIs. Object attributes are name-value pairs that are
loosely specified, and very flexible for exposing things where there is no specific interface in an accessibility API. For example,
at this time, the
aria-liveattribute can be exposed via an object attribute because accessibility APIs have no such property available. Specific rules for exposing object attribute name-value pairs are described throughout this document, and rules for the general cases are in State and Property Mapping. -
In Microsoft UIA, use the
AriaRoleandAriaPropertiesproperties to expose semantics that are not directly supported in the control type.
Note
MSAA does not provide a mechanism for exposing attributes that do not map directly to the API and among implementers, there is no agreement on how to do it.
User agents MUST also expose the entire role string through this mechanism and MAY also expose WAI-ARIA attributes and values through this mechanism even when there is a direct mapping to an accessibility API.
Browser implementers are advised to publicly document their API methods for exposing any relevant information, so that assistive technology developers can use the API to support user features.
Platform accessibility APIs traditionally have had a finite set of predefined roles that are expected by assistive technologies on that platform and only one or two roles may be exposed. In contrast, WAI-ARIA allows multiple roles to be specified as an ordered set of space-separated valid role tokens. The additional roles are fallback roles similar to the concept of specifying multiple fonts in case the first choice font type is not supported.
User agents MUST expose the WAI-ARIA role string if the API supports a mechanism to do so. This allows assistive technologies to do their own additional processing of roles.
-
MSAA:
not supported. User agents SHOULD NOT expose a custom role in
MSAA's
accRoleproperty. - IAccessible2: expose as an object attribute pair (
xml-roles:"string") -
UIA: expose as
AriaRoleproperty. TheAriaRole propertycan also support secondary roles using a space as a separator. -
ATK/AT-SPI: expose as an object attribute pair
(
xml-roles:"string")
The computedrole of an element is a string that represents the role of the element as computed by the browser engine. The computedrole is used primarily for the purposes of developer
tools and specification conformance and interoperability testing.
Note
When an element has a role but is not contained in the required context (for example, an orphaned listitem without the required accessible parent of role list), this is an authoring
error, but the user agent behavior is not specified as a single rule. For most roles, user agents can either recover the error by ignoring the role, or respect the author's intended role
in scenarios deemed by the implementation to be harmless. Please note that this permissiveness in how engines treat author role errors might be overridden in a language-specific mapping
document such as [HTML-AAM].
When host language elements do not have an exact or equivalent mapping to a valid, non-abstract role, the related Accessibilty API Mapping extension specification MAY specify a unique
computedrole string as the return value for interoperability testing purposes, such as <video> -> "html-video" in [HTML-AAM]. However, authors MUST NOT use any
host-language-prefixed computedrole string in the role attribute (such as html-video), unless the token also matches valid, defined role (such as dpub-chapter). User Agents MUST
ignore any abstract or invalid role token.
| ARIA Specification |
alert
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_ALERTEvent: The user agent SHOULD fire EVENT_SYSTEM_ALERT. [Note 2]
|
| UIA |
Control Type: GroupLocalized Control Type: alertLiveSetting: Assertive (2)Event: The user agent SHOULD fire a system alert event. [Note 2] |
| ATK/AT-SPI |
Role: ROLE_NOTIFICATIONEvent: The user agent SHOULD fire a system alert event. [Note 2] |
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXApplicationAlertEvent: The user agent SHOULD fire a system alert event. [Note 2] |
| Android |
android.view.View
|
| ARIA Specification |
alertdialog
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_DIALOGEvent: The user agent SHOULD fire EVENT_SYSTEM_ALERT. [Note 2]
|
| UIA |
Control Type: PaneEvent: The user agent SHOULD fire a system alert event. [Note 2] |
| ATK/AT-SPI |
Role: ROLE_ALERTATK Interface: WindowEvent: The user agent SHOULD fire a system alert event. [Note 2] |
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXApplicationAlertDialogEvent: The user agent SHOULD fire a system alert event. [Note 2] |
| Android |
android.app.Dialog / android.app.AlertDialog
|
| ARIA Specification |
application
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_APPLICATION
|
| UIA |
Control Type: PaneLocalized Control Type: application
|
| ATK/AT-SPI |
Role: ROLE_EMBEDDED
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXWebApplication |
| Android |
android.view.View
|
| ARIA Specification |
article
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_DOCUMENTState: STATE_SYSTEM_READONLYObject Attribute: xml-roles:article
|
| UIA |
Control Type: GroupLocalized Control Type: article
|
| ATK/AT-SPI |
Role: ROLE_ARTICLEObject Attribute: xml-roles:article
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXDocumentArticle |
| Android |
android.view.View
|
| ARIA Specification |
blockquote
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGRole: IA2_ROLE_BLOCK_QUOTE
|
| UIA |
Control Type: GroupLocalized Control Type: blockquote
|
| ATK/AT-SPI |
Role: ROLE_BLOCK_QUOTE |
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
button with default values for aria-pressed and
aria-haspopup
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_PUSHBUTTON
|
| UIA |
Control Type: Button
|
| ATK/AT-SPI |
Role: ROLE_PUSH_BUTTON
|
| AX API[Note 1] |
AXRole: AXButtonAXSubrole: <nil> |
| Android |
android.widget.Button
|
| ARIA Specification |
button with defined value for aria-pressed
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_PUSHBUTTONRole: IA2_ROLE_TOGGLE_BUTTON
|
| UIA |
Control Type: Button
|
| ATK/AT-SPI |
Role: ROLE_TOGGLE_BUTTON
|
| AX API[Note 1] |
AXRole: AXCheckBoxAXSubrole: AXToggle |
| Android |
android.widget.ToggleButton
|
| ARIA Specification |
caption
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGRole: IA2_ROLE_CAPTION
|
| UIA |
Control Type: Text
|
| ATK/AT-SPI |
Role: ROLE_CAPTION
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
cell
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_CELLInterface: IAccessibleTableCell
|
| UIA |
Control Type: DataItemLocalized Control Type: itemControl Pattern: GridItemControl Pattern: TableItem
|
| ATK/AT-SPI |
Role: ROLE_TABLE_CELLInterface: TableCell
|
| AX API[Note 1] |
AXRole: AXCellAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
checkbox
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_CHECKBUTTONSee also: aria-checked in the State and Property Mapping Tables
|
| UIA |
Control Type: CheckBoxSee also: aria-checked in the State and Property Mapping Tables
|
| ATK/AT-SPI |
Role: ROLE_CHECK_BOXSee also: aria-checked in the State and Property Mapping Tables
|
| AX API[Note 1] |
AXRole: AXCheckBoxAXSubrole: <nil>See also: aria-checked in the State and Property Mapping Tables
|
| Android |
android.widget.CheckBox
|
| ARIA Specification |
code
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_TEXT_FRAMEObject Attribute: xml-roles:code
|
| UIA |
Control Type: TextLocalized Control Type: code
|
| ATK/AT-SPI |
Role: ROLE_STATICObject Attribute: xml-roles:code
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXCodeStyleGroup |
| Android |
android.view.View
|
| ARIA Specification |
columnheader
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_COLUMNHEADERInterface: IAccessibleTableCell
|
| UIA |
Control Type: DataItemLocalized Control Type: column headerControl Pattern: GridItemControl Pattern: TableItem
|
| ATK/AT-SPI |
Role: ROLE_COLUMN_HEADERInterface: TableCell
|
| AX API[Note 1] |
AXRole: AXCellAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
combobox
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_COMBOBOXState: STATE_SYSTEM_HASPOPUPState: STATE_SYSTEM_COLLAPSED if aria-expanded is not "true"
|
| UIA |
Control Type: ComboBox
|
| ATK/AT-SPI |
Role: ROLE_COMBO_BOXState: STATE_EXPANDABLEState: STATE_HAS_POPUP
|
| AX API[Note 1] |
AXRole: AXComboBoxAXSubrole: <nil> |
| Android |
android.widget.EditText
|
| ARIA Specification |
complementary
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_LANDMARKObject Attribute: xml-roles:complementary
|
| UIA |
Control Type: GroupLocalized Control Type: complementaryLandmark Type: CustomLocalized Landmark Type: complementary
|
| ATK/AT-SPI |
Role: ROLE_LANDMARKObject Attribute: xml-roles:complementary
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXLandmarkComplementary |
| Android |
android.view.View
|
| ARIA Specification |
contentinfo
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_LANDMARKObject Attribute: xml-roles:contentinfo
|
| UIA |
Control Type: GroupLocalized Control Type: content informationLandmark Type: CustomLocalized Landmark Type: content information
|
| ATK/AT-SPI |
Role: ROLE_LANDMARKObject Attribute: xml-roles:contentinfo
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXLandmarkContentInfo |
| Android |
android.view.View
|
| ARIA Specification |
definition
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Object Attribute: xml-roles:definition
|
| UIA |
Control Type: GroupLocalized Control Type: definition
|
| ATK/AT-SPI |
Role: ROLE_DESCRIPTION_VALUEObject Attribute: xml-roles:definition
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXDefinition |
| Android |
android.view.View
|
| ARIA Specification |
deletion
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_CONTENT_DELETION
|
| UIA |
Control Type: TextLocalized Control Type: deletion
|
| ATK/AT-SPI |
Role: ROLE_CONTENT_DELETIONObject Attribute: xml-roles:deletion
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXDeleteStyleGroupAXAttributedStringForTextMarkerRange: contains AXIsSuggestedDeletion = 1; for all text contained in a deletion
|
| Android |
android.view.View
|
| ARIA Specification |
dialog
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_DIALOG
|
| UIA |
Control Type: Pane
|
| ATK/AT-SPI |
Role: ROLE_DIALOGATK Interface: Window
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXApplicationDialog |
| Android |
android.app.Dialog / android.app.AlertDialog
|
| ARIA Specification |
directory
|
|---|---|
| Computed Role |
list |
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_LIST
|
| UIA |
Control Type: List
|
| ATK/AT-SPI |
Role: ROLE_LIST
|
| AX API[Note 1] |
AXRole: AXListAXSubrole: AXContentList |
| Android |
android.view.View
|
| ARIA Specification |
document
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_DOCUMENTState: STATE_SYSTEM_READONLY
|
| UIA |
Control Type: Document
|
| ATK/AT-SPI |
Role: ROLE_DOCUMENT_FRAME
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXDocument |
| Android |
android.view.View
|
| ARIA Specification |
emphasis
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_TEXT_FRAMEObject Attribute: xml-roles:emphasis
|
| UIA |
Control Type: TextLocalized Control Type: emphasis
|
| ATK/AT-SPI |
Role: ROLE_STATICObject Attribute: xml-roles:emphasis
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXEmphasisStyleGroup |
| Android |
android.view.View
|
| ARIA Specification |
feed
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGObject Attribute: xml-roles:feed
|
| UIA |
Control Type: GroupLocalized Control Type: feed
|
| ATK/AT-SPI |
Role: ROLE_PANELObject Attribute: xml-roles:feed
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXApplicationGroup |
| Android |
android.view.View
|
| ARIA Specification |
figure
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGObject Attribute: xml-roles:figure
|
| UIA |
Control Type: GroupLocalized Control Type: figure
|
| ATK/AT-SPI |
Role: ROLE_PANELObject Attribute: xml-roles:figure
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
form with an accessible name
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_FORMObject Attribute: xml-roles:form
|
| UIA |
Control Type: GroupLocalized Control Type: formLandmark Type: Form
|
| ATK/AT-SPI |
Role: ROLE_LANDMARKObject Attribute: xml-roles:form
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXLandmarkForm |
| Android |
android.view.View
|
| ARIA Specification |
form without an accessible name
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Do not expose the element as a landmark. Use the native host language role of the element instead. |
| UIA | Do not expose the element as a landmark. Use the native host language role of the element instead. |
| ATK/AT-SPI | Do not expose the element as a landmark. Use the native host language role of the element instead. |
| AX API[Note 1] | Do not expose the element as a landmark. Use the native host language role of the element instead. |
| Android |
android.view.View
|
| ARIA Specification |
generic
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGRole: IA2_ROLE_SECTION
|
| UIA |
Control Type: Group
|
| ATK/AT-SPI |
Role: ROLE_SECTION |
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: <nil> |
| Android |
android.view.ViewNote: Exposed as android.widget.TextView if the element has only text children.
|
| ARIA Specification |
grid
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_TABLEObject Attribute: xml-roles:gridInterface: IAccessibleTable2Method: IAccessible::accSelect()Method: IAccessible::get_accSelection()
|
| UIA |
Control Type: DataGridControl Pattern: GridControl Pattern: TableControl Pattern: Selection
|
| ATK/AT-SPI |
Role: ROLE_TABLEObject Attribute: xml-roles:gridInterface: TableInterface: Selection
Because WAI-ARIA does not support modifying the selection via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXTableAXSubrole: <nil>AXColumnHeaderUIElements: a list of pointers to the columnheader elements AXHeader: a pointer to the row or group containing those columnheader elements AXRowHeaderUIElements: a list of pointers to the rowheader elements |
| Android |
android.widget.GridView
|
| ARIA Specification |
gridcell
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_CELLInterface: IAccessibleTableCell
|
| UIA |
Control Type: DataItemLocalized Control Type: itemControl Pattern: SelectionItemControl Pattern: GridItemControl Pattern: TableItemSelectionItem.SelectionContainer: the containing grid
|
| ATK/AT-SPI |
Role: ROLE_TABLE_CELLInterface: TableCell
|
| AX API[Note 1] |
AXRole: AXCellAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
group
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPING
|
| UIA |
Control Type: Group
|
| ATK/AT-SPI |
Role: ROLE_PANEL
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXApplicationGroup |
| Android |
android.view.View
|
| ARIA Specification |
heading
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_HEADINGObject Attribute: xml-roles:heading
|
| UIA |
Control Type: TextLocalized Control Type: heading
|
| ATK/AT-SPI |
Role: ROLE_HEADING
|
| AX API[Note 1] |
AXRole: AXHeadingAXSubrole: <nil> |
| Android |
android.view.ViewMethod: AccessibilityNodeInfo.isHeading: trueNote: Exposed as android.widget.TextView if the element has only text children.
|
| ARIA Specification |
image
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GRAPHICInterface: IAccessibleImage
|
| UIA |
Control Type: Image
|
| ATK/AT-SPI |
Role: ROLE_IMAGEInterface: Image
|
| AX API[Note 1] |
AXRole: AXImageAXSubrole: <nil> |
| Android |
android.widget.Image
|
| ARIA Specification |
img
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GRAPHICInterface: IAccessibleImage
|
| UIA |
Control Type: Image
|
| ATK/AT-SPI |
Role: ROLE_IMAGEInterface: Image
|
| AX API[Note 1] |
AXRole: AXImageAXSubrole: <nil> |
| Android |
android.widget.Image / android.widget.ImageButton
|
| ARIA Specification |
insertion
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_CONTENT_INSERTION
|
| UIA |
Control Type: TextLocalized Control Type: insertion
|
| ATK/AT-SPI |
Role: ROLE_CONTENT_INSERTIONObject Attribute: xml-roles:insertion
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXInsertStyleGroupAXAttributedStringForTextMarkerRange: contains AXIsSuggestedInsertion = 1; for all text contained in a insertion
|
| Android |
android.view.View
|
| ARIA Specification |
link
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_LINKState: STATE_SYSTEM_LINKEDState: STATE_SYSTEM_LINKED on its descendantsInterface: IAccessibleHypertext
|
| UIA |
Control Type: HyperLinkControl Pattern: Value
|
| ATK/AT-SPI |
Role: ROLE_LINKInterface: HyperlinkImpl
|
| AX API[Note 1] |
AXRole: AXLinkAXSubrole: <nil> |
| Android |
android.view.ViewMethod: AccessibilityNodeInfo.getText returns text containing an android.text.style.URLSpan when exposed as part of formatted text.
|
| ARIA Specification |
list
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_LISTState: STATE_SYSTEM_READONLY
|
| UIA |
Control Type: List
|
| ATK/AT-SPI |
Role: ROLE_LIST
|
| AX API[Note 1] |
AXRole: AXListAXSubrole: AXContentList |
| Android |
android.widget.ListView
|
| ARIA Specification |
listbox
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_LISTMethod: IAccessible::accSelect()Method: IAccessible::get_accSelection()
|
| UIA |
Control Type: ListControl Pattern: Selection
|
| ATK/AT-SPI |
Role: ROLE_LIST_BOXInterface: Selection
Because WAI-ARIA does not support modifying the selection via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXListAXSubrole: <nil> |
| Android |
android.widget.ListView
|
| ARIA Specification |
listbox
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_LISTMethod: IAccessible::accSelect()Method: IAccessible::get_accSelection()
|
| UIA |
Control Type: ListControl Pattern: Selection
|
| ATK/AT-SPI |
Role: ROLE_MENUInterface: Selection
Because WAI-ARIA does not support modifying the selection via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXListAXSubrole: <nil> |
| Android |
android.widget.ListView
|
| ARIA Specification |
listitem
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_LISTITEMState: STATE_SYSTEM_READONLY
|
| UIA |
Control Type: ListItemControl Pattern: SelectionItemSelectionItem.SelectionContainer: the containing list
|
| ATK/AT-SPI |
Role: ROLE_LIST_ITEM
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
log
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Object Attribute: xml-roles:logObject Attribute: container-live:politeObject Attribute: live:politeObject Attribute: container-live-role:log
|
| UIA |
Control Type: GroupLocalized Control Type: logLiveSetting: Polite (1)
|
| ATK/AT-SPI |
Role: ROLE_LOGObject Attribute: xml-roles:logObject Attribute: container-live:politeObject Attribute: live:politeObject Attribute: container-live-role:log
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXApplicationLog |
| Android |
android.view.View
|
| ARIA Specification |
main
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_LANDMARKObject Attribute: xml-roles:main
|
| UIA |
Control Type: GroupLocalized Control Type: mainLandmark Type: Main
|
| ATK/AT-SPI |
Role: ROLE_LANDMARKObject Attribute: xml-roles:main
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXLandmarkMain |
| Android |
android.view.View
|
| ARIA Specification |
mark
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGRole: IA2_ROLE_MARKObject Attribute: xml-roles:mark
|
| UIA |
Control Type: Group
|
| ATK/AT-SPI |
Role: ROLE_MARKObject Attribute: xml-roles:mark
|
| AX API[Note 1] |
AXRole: AXGroupAXRoleDescription: highlightAXAttributedStringForTextMarkerRange: contains AXHighlight = 1; for all text contained in a mark
|
| Android |
android.view.View
|
| ARIA Specification |
marquee
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_ANIMATIONObject Attribute: xml-roles:marquee
|
| UIA |
Control Type: GroupLocalized Control Type: marquee
|
| ATK/AT-SPI |
Role: ROLE_MARQUEE
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXApplicationMarquee |
| Android |
android.view.View
|
| ARIA Specification |
math
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_EQUATION
|
| UIA |
Control Type: GroupLocalized Control Type: math
|
| ATK/AT-SPI |
Role: ROLE_MATH
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXDocumentMath |
| Android |
android.view.ViewMethod: AccessibilityNodeInfo.getStructuredDataInfo returns mathematical content in an AccessibilityNodeInfo.MathInfo object.
|
| ARIA Specification |
meter
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_LEVEL_BARInterface: IAccessibleValue
|
| UIA |
Control Type: ProgressBarLocalized Control Type: meterControl Pattern: RangeValue
|
| ATK/AT-SPI |
Role: ROLE_LEVEL_BARInterface: Value
|
| AX API[Note 1] |
AXRole: AXLevelIndicatorAXSubrole: AXMeter |
| Android |
android.widget.ProgressBarMethod: AccessibilityNodeInfo.getRangeInfo returns an AccessibilityNodeInfo.RangeInfo object if it represents a numeric range without
aria-valuetext.
|
| ARIA Specification |
navigation
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_LANDMARKObject Attribute: xml-roles:navigation
|
| UIA |
Control Type: GroupLocalized Control Type: navigationLandmark Type: Navigation
|
| ATK/AT-SPI |
Role: ROLE_LANDMARKObject Attribute: xml-roles:navigation
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXLandmarkNavigation |
| Android | com.google.android.material.navigation.NavigationView |
| ARIA Specification |
none
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
For objects that have specified allowed accessibility children (e.g., a grid with gridcell children, a list with listitem children), and the descendant is in the
accessibility tree, expose it as |
| UIA |
For objects that have specified allowed accessibility children (e.g., a grid with gridcell children, a list with listitem children), and the descendant is in the
accessibility tree, expose it using the |
| ATK/AT-SPI |
For objects that have specified allowed accessibility children (e.g., a grid with gridcell children, a list with listitem children), and the descendant is in the
accessibility tree, expose it as |
| AX API[Note 1] |
For objects that have specified allowed accessibility children (e.g., a grid with gridcell children, a list with listitem children), and the descendant is in the
accessibility tree, expose it as |
| Android |
android.view.View
|
| ARIA Specification |
note
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_NOTE
|
| UIA |
Control Type: GroupLocalized Control Type: note
|
| ATK/AT-SPI |
Role: ROLE_COMMENT
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXDocumentNote |
| Android |
android.view.View
|
| ARIA Specification |
option not inside combobox
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_LISTITEMSee also: aria-checked in the State and Property Mapping Tables
|
| UIA |
Control Type: ListItemControl Pattern: InvokeSee also: aria-checked in the State and Property Mapping Tables
|
| ATK/AT-SPI |
Role: ROLE_LIST_ITEMSee also: aria-checked in the State and Property Mapping Tables |
| AX API[Note 1] |
AXRole: AXStaticTextAXSubrole: <nil>See also: aria-checked in the State and Property Mapping Tables
|
| Android |
android.view.View
|
| ARIA Specification |
option inside combobox
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_LISTITEMSee also: aria-checked in the State and Property Mapping Tables
|
| UIA |
Control Type: ListItemControl Pattern: InvokeSee also: aria-checked in the State and Property Mapping Tables
|
| ATK/AT-SPI |
Role: ROLE_MENU_ITEMSee also: aria-checked in the State and Property Mapping Tables |
| AX API[Note 1] |
AXRole: AXStaticTextAXSubrole: <nil>See also: aria-checked in the State and Property Mapping Tables
|
| Android |
android.view.ViewMethod: AccessibilityNodeInfo.getCollectionItemInfo returns an AccessibilityNodeInfo.CollectionItemInfo object.
|
| ARIA Specification |
paragraph
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGRole: IA2_ROLE_PARAGRAPH
|
| UIA |
Control Type: Text
|
| ATK/AT-SPI |
Role: ROLE_PARAGRAPH
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: <nil> |
| Android |
android.view.ViewNote: Exposed as android.widget.TextView if the element has only text children.
|
| ARIA Specification |
presentation
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
For objects that have specified allowed accessibility children (e.g., a grid with gridcell children, a list with listitem children), and the descendant is in the
accessibility tree, expose it as |
| UIA |
For objects that have specified allowed accessibility children (e.g., a grid with gridcell children, a list with listitem children), and the descendant is in the
accessibility tree, expose it using the |
| ATK/AT-SPI |
For objects that have specified allowed accessibility children (e.g., a grid with gridcell children, a list with listitem children), and the descendant is in the
accessibility tree, expose it as |
| AX API[Note 1] |
For objects that have specified allowed accessibility children (e.g., a grid with gridcell children, a list with listitem children), and the descendant is in the
accessibility tree, expose it as |
| Android |
android.view.View
|
| ARIA Specification |
progressbar
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_PROGRESSBARState: STATE_SYSTEM_READONLYInterface: IAccessibleValue
|
| UIA |
Control Type: ProgressBarControl Pattern: RangeValue if aria-valuenow, aria-valuemax, or aria-valuemin is present
|
| ATK/AT-SPI |
Role: ROLE_PROGRESS_BARInterface: Value
Because WAI-ARIA does not support modifying the value via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXProgressIndicatorAXSubrole: <nil> |
| Android |
android.widget.ProgressBarNote: Exposed with RangeInfo if it represents a numeric range without aria-valuetext.
|
| ARIA Specification |
radio
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_RADIOBUTTONSee also: aria-checked in the State and Property Mapping Tables
|
| UIA |
Control Type: RadioButtonControl Pattern: ToggleControl Pattern: SelectionItemSee also: aria-checked in the State and Property Mapping Tables
|
| ATK/AT-SPI |
Role: ROLE_RADIO_BUTTONSee also: aria-checked in the State and Property Mapping Tables
|
| AX API[Note 1] |
AXRole: AXRadioButtonAXSubrole: <nil>See also: aria-checked in the State and Property Mapping Tables
|
| Android |
android.widget.RadioButton
|
| ARIA Specification |
radiogroup
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPING
|
| UIA |
Control Type: List
|
| ATK/AT-SPI |
Role: ROLE_PANEL
|
| AX API[Note 1] |
AXRole: AXRadioGroupAXSubrole: <nil> |
| Android |
android.widget.RadioGroup
|
| ARIA Specification |
region with an accessible name
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_LANDMARKObject Attribute: xml-roles:region
|
| UIA |
Control Type: GroupLocalized Control Type: regionLandmark Type: CustomLocalized Landmark Type: region
|
| ATK/AT-SPI |
Role: ROLE_LANDMARKObject Attribute: xml-roles:region
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXLandmarkRegion |
| Android |
android.view.View
|
| ARIA Specification |
region without an accessible name
|
|---|---|
| Computed Role |
Use native host language role. |
| MSAA + IAccessible2 | Do not expose the element as a landmark. Use the native host language role of the element instead. |
| UIA | Do not expose the element as a landmark. Use the native host language role of the element instead. |
| ATK/AT-SPI | Do not expose the element as a landmark. Use the native host language role of the element instead. |
| AX API[Note 1] | Do not expose the element as a landmark. Use the native host language role of the element instead. |
| Android |
android.view.View
|
| ARIA Specification |
row not inside treegrid
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_ROW
|
| UIA |
Control Type: DataItemLocalized Control Type: rowControl Pattern: SelectionItem
|
| ATK/AT-SPI |
Role: ROLE_TABLE_ROW
|
| AX API[Note 1] |
AXRole: AXRowAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
row inside treegrid
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_OUTLINEITEM
|
| UIA |
Control Type: DataItemLocalized Control Type: rowControl Pattern: SelectionItem
|
| ATK/AT-SPI |
Role: ROLE_TABLE_ROW
|
| AX API[Note 1] |
AXRole: AXRowAXSubrole: <nil> |
| Android |
android.view.ViewNote: Exposed with CollectionItemInfo.
|
| ARIA Specification |
rowgroup
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPING
|
| UIA |
Control Type: Group
|
| ATK/AT-SPI |
Role: ROLE_PANEL
|
| AX API[Note 1] | Not mapped |
| Android |
android.view.View
|
| ARIA Specification |
scrollbar
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_SCROLLBARInterface: IAccessibleValue
|
| UIA |
Control Type: ScrollBarControl Pattern: RangeValue
|
| ATK/AT-SPI |
Role: ROLE_SCROLL_BARInterface: Value
Because WAI-ARIA does not support modifying the value via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXScrollBarAXSubrole: <nil> |
| Android |
android.view.ViewNote: Exposed with RangeInfo if it represents a numeric range without aria-valuetext.
|
| ARIA Specification |
search
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_LANDMARKObject Attribute: xml-roles:search
|
| UIA |
Control Type: GroupLocalized Control Type: searchLandmark Type: Search
|
| ATK/AT-SPI |
Role: ROLE_LANDMARKObject Attribute: xml-roles:search
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXLandmarkSearch |
| Android |
android.widget.SearchView
|
| ARIA Specification |
searchbox
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_TEXTObject Attribute: text-input-type:search
|
| UIA |
Control Type: EditLocalized Control Type: search box
|
| ATK/AT-SPI |
Role: ROLE_ENTRYObject Attribute: xml-roles:searchboxObject Attribute: text-input-type:search
Interface: EditableText if aria-readonly is not "true"
|
| AX API[Note 1] |
AXRole: AXTextFieldAXSubrole: AXSearchField |
| Android |
android.widget.EditText
|
| ARIA Specification |
separator (non-focusable)
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_SEPARATOR
|
| UIA |
Control Type: Separator
|
| ATK/AT-SPI |
Role: ROLE_SEPARATOR
|
| AX API[Note 1] |
AXRole: AXSplitterAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
separator (focusable)
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_SEPARATORInterface: IAccessibleValue
|
| UIA |
Control Type: ThumbControl Pattern: RangeValue
|
| ATK/AT-SPI |
Role: ROLE_SEPARATORInterface: Value
Because WAI-ARIA does not support modifying the value via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXSplitterAXSubrole: <nil> |
| Android |
android.view.ViewNote: Exposed with RangeInfo if it represents a numeric range without aria-valuetext.
|
| ARIA Specification |
slider
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_SLIDERInterface: IAccessibleValue
|
| UIA |
Control Type: SliderControl Pattern: RangeValue
|
| ATK/AT-SPI |
Role: ROLE_SLIDERInterface: Value
Because WAI-ARIA does not support modifying the value via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXSliderAXSubrole: <nil> |
| Android |
android.widget.SeekBar
|
| ARIA Specification |
spinbutton
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_SPINBUTTONInterface: IAccessibleValue
|
| UIA |
Control Type: SpinnerControl Pattern: RangeValue
|
| ATK/AT-SPI |
Role: ROLE_SPIN_BUTTONInterface: Value
Because WAI-ARIA does not support modifying the value via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXIncrementorAXSubrole: <nil> |
| Android |
android.widget.EditTextNote: Exposed with RangeInfo if it represents a numeric range without aria-valuetext.
|
| ARIA Specification |
status
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_STATUSBARObject Attribute: container-live:politeObject Attribute: live:politeObject Attribute: container-live-role:status
|
| UIA |
Control Type: GroupLocalized Control Type: statusLiveSetting: Polite (1)
|
| ATK/AT-SPI |
Role: ROLE_STATUS_BARObject Attribute: container-live:politeObject Attribute: live:politeObject Attribute: container-live-role:status
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXApplicationStatus |
| Android |
android.view.ViewMethod: AccessibilityNodeInfo.getLiveRegion: View.ACCESSIBILITY_LIVE_REGION_POLITE
|
| ARIA Specification |
strong
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_TEXT_FRAMEObject Attribute: xml-roles:strong
|
| UIA |
Control Type: TextLocalized Control Type: strong
|
| ATK/AT-SPI |
Role: ROLE_STATICObject Attribute: xml-roles:strong
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXStrongStyleGroup |
| Android |
android.view.ViewMethod: AccessibilityNodeInfo.getText returns text containing an android.text.style.StyleSpan with android.graphics.Typeface.BOLD.
|
| ARIA Specification |
subscript
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGRole: IA2_ROLE_TEXT_FRAMEText Attribute: text-position:sub
|
| UIA |
Control Type: TextStyles used are exposed by IsSubscript attribute of the TextRange Control Pattern implemented on the accessible object.
|
| ATK/AT-SPI |
Role: ROLE_SUBSCRIPT
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXSubscriptStyleGroup |
| Android |
android.view.ViewMethod: AccessibilityNodeInfo.getText returns text containing an android.text.style.SubscriptSpan.
|
| ARIA Specification |
suggestion
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_SUGGESTIONObject Attribute: xml-roles:suggestion
|
| UIA |
Control Type: GroupLocalized Control Type: suggestion |
| ATK/AT-SPI |
Role: ROLE_SUGGESTIONObject Attribute: xml-roles:suggestion
|
| AX API[Note 1] |
AXRole: AXGroupAXAttributedStringForTextMarkerRange: contains AXIsSuggestion = 1; for all text contained in a suggestion
|
| Android |
android.view.ViewMethod: AccessibilityNodeInfo.getText returns text containing an android.text.style.SuggestionSpan.
|
| ARIA Specification |
superscript
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGRole: IA2_ROLE_TEXT_FRAMEText Attribute: text-position:super
|
| UIA |
Control Type: TextStyles used are exposed by IsSuperscript attribute of the TextRange Control Pattern implemented on the accessible object.
|
| ATK/AT-SPI |
Role: ROLE_SUPERSCRIPT
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXSuperscriptStyleGroup |
| Android |
android.view.ViewMethod: AccessibilityNodeInfo.getText returns text containing an android.text.style.SuperscriptSpan.
|
| ARIA Specification |
switch
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_CHECKBUTTONRole: IA2_ROLE_TOGGLE_BUTTONObject Attribute: xml-roles:switchSee also: aria-checked in the State and Property Mapping Tables
|
| UIA |
Control Type: ButtonLocalized Control Type: toggleswitchControl Pattern: ToggleSee also: aria-checked in the State and Property Mapping Tables
|
| ATK/AT-SPI |
Role: ROLE_TOGGLE_BUTTONObject Attribute: xml-roles:switchSee also: aria-checked in the State and Property Mapping Tables
|
| AX API[Note 1] |
AXRole: AXCheckBoxAXSubrole: AXSwitchSee also: aria-checked in the State and Property Mapping Tables
|
| Android |
android.widget.Switch
|
| ARIA Specification |
tab
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_PAGETABState: STATE_SYSTEM_SELECTED if focus is inside tabpanel associated with
aria-labelledby
|
| UIA |
Control Type: TabItem
|
| ATK/AT-SPI |
Role: ROLE_PAGE_TABState: STATE_SELECTED if focus is inside tabpanel associated with
aria-labelledby
|
| AX API[Note 1] |
AXRole: AXRadioButtonAXSubrole: AXTabButton |
| Android |
android.view.ViewNote: Exposed with CollectionItemInfo.
|
| ARIA Specification |
table
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_TABLEObject Attribute: xml-roles:tableInterface: IAccessibleTable2
|
| UIA |
Control Type: TableControl Pattern: GridControl Pattern: Table
|
| ATK/AT-SPI |
Role: ROLE_TABLEObject Attribute: xml-roles:tableInterface: Table
|
| AX API[Note 1] |
AXRole: AXTableAXSubrole: <nil>AXColumnHeaderUIElements: a list of pointers to the columnheader elements AXHeader: a pointer to the row or group containing those columnheader elements AXRowHeaderUIElements: a list of pointers to the rowheader elements |
| Android |
android.widget.GridView
|
| ARIA Specification |
tablist
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_PAGETABLISTMethod: IAccessible::accSelect()Method: IAccessible::get_accSelection()
|
| UIA |
Control Type: TabControl Pattern: Selection
|
| ATK/AT-SPI |
Role: ROLE_PAGE_TAB_LISTInterface: Selection
Because WAI-ARIA does not support modifying the selection via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXTabGroupAXSubrole: <nil> |
| Android |
android.widget.TabWidget
|
| ARIA Specification |
tabpanel
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_PANE or ROLE_SYSTEM_PROPERTYPAGE
|
| UIA |
Control Type: Pane
|
| ATK/AT-SPI |
Role: ROLE_SCROLL_PANE
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXTabPanel |
| Android |
android.view.View
|
| ARIA Specification |
term
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: IA2_ROLE_TEXT_FRAMEObject Attribute: xml-roles:term
|
| UIA |
Control Type: TextLocalized Control Type: term
|
| ATK/AT-SPI |
Role: ROLE_DESCRIPTION_TERM
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXTerm |
| Android |
android.view.View
|
| ARIA Specification |
textbox when aria-multiline is false
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_TEXTState: IA2_STATE_SINGLE_LINE
|
| UIA |
Control Type: Edit
|
| ATK/AT-SPI |
Role: ROLE_ENTRYState: STATE_SINGLE_LINEInterface: EditableText if aria-readonly is not "true"
|
| AX API[Note 1] |
AXRole: AXTextFieldAXSubrole: <nil> |
| Android |
android.widget.EditText
|
| ARIA Specification |
textbox when aria-multiline is true
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_TEXTState: IA2_STATE_MULTI_LINE
|
| UIA |
Control Type: Edit
|
| ATK/AT-SPI |
Role: ROLE_ENTRYState: STATE_MULTI_LINEInterface: EditableText if aria-readonly is not "true"
|
| AX API[Note 1] |
AXRole: AXTextAreaAXSubrole: <nil> |
| Android |
android.widget.EditTextMethod: AccessibilityNodeInfo.isMultiLine: true
|
| ARIA Specification |
time
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_GROUPINGObject Attribute: xml-roles:time
|
| UIA |
Control Type: TextLocalized Control Type: timeNote: create a separate UIA Control of type Text. This is different from most UIA text mappings, which only create ranges in the page text pattern. |
| ATK/AT-SPI |
Role: ROLE_STATICObject Attribute: xml-roles:time
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXTimeGroup |
| Android |
android.widget.TimePicker
|
| ARIA Specification |
timer
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Object Attribute: xml-roles:timer
|
| UIA |
Control Type: GroupLocalized Control Type: timer
|
| ATK/AT-SPI |
Role: ROLE_TIMER
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXApplicationTimer |
| Android |
android.view.View
|
| ARIA Specification |
toolbar
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_TOOLBAR
|
| UIA |
Control Type: ToolBar
|
| ATK/AT-SPI |
Role: ROLE_TOOL_BAR
|
| AX API[Note 1] |
AXRole: AXToolbarAXSubrole: <nil> |
| Android |
android.view.View
|
| ARIA Specification |
tooltip
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_TOOLTIP
|
| UIA |
Control Type: ToolTip
|
| ATK/AT-SPI |
Role: ROLE_TOOL_TIP
|
| AX API[Note 1] |
AXRole: AXGroupAXSubrole: AXUserInterfaceTooltip |
| Android |
android.view.ViewNote: The tooltip text is typically exposed via AccessibilityNodeInfo.getTooltipText on the associated anchor element.
|
| ARIA Specification |
tree
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_OUTLINEMethod: IAccessible::accSelect()Method: IAccessible::get_accSelection()
|
| UIA |
Control Type: Tree
|
| ATK/AT-SPI |
Role: ROLE_TREEInterface: Selection
Because WAI-ARIA does not support modifying the selection via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXOutlineAXSubrole: <nil> |
| Android |
android.view.ViewNote: Exposed with CollectionInfo.
|
| ARIA Specification |
treegrid
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_OUTLINEInterface: IAccessibleTable2Method: IAccessible::accSelect()Method: IAccessible::get_accSelection()
|
| UIA |
Control Type: DataGrid
|
| ATK/AT-SPI |
Role: ROLE_TREE_TABLEInterface: TableInterface: Selection
Because WAI-ARIA does not support modifying the selection via the accessibility API, user agents MUST return
|
| AX API[Note 1] |
AXRole: AXTableAXSubrole: <nil> |
| Android |
android.widget.GridView
|
| ARIA Specification |
treeitem
|
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 |
Role: ROLE_SYSTEM_OUTLINEITEMSee also: aria-checked in the State and Property Mapping Tables
|
| UIA |
Control Type: TreeItemSee also: aria-checked in the State and Property Mapping Tables
|
| ATK/AT-SPI |
Role: ROLE_TREE_ITEMSee also: aria-checked in the State and Property Mapping Tables
|
| AX API[Note 1] |
AXRole: AXRowAXSubrole: AXOutlineRowSee also: aria-checked in the State and Property Mapping Tables
|
| Android |
android.view.ViewNote: Exposed with CollectionItemInfo.
|
Note
[Note 1] User agent should return a user-presentable, localized string value for the AXRoleDescription.
Note
[Note 2] This specification does not currently contain guidance for when user agents should fire system alert events. Some guidance may be added to the specification at a later date but it will be a recommendation (SHOULD), not a requirement (MUST).
This section describes how to expose WAI-ARIA states and properties.
-
User agents MUST compute managed states
VISIBLE/INVISIBLE,SHOWING/OFFSCREEN, etc. This typically is done in the same way as for ordinary elements that do not have WAI-ARIA attributes present. TheFOCUSABLE/FOCUSEDstates may be affected byaria-activedescendant. -
User agents MUST continue to expose native semantics in addition to WAI-ARIA state and property semantics except where an
explicit WAI-ARIA override is allowed by the host language. For example, an HTML checkbox may have an
aria-labelledbyattribute but the native HTML semantics must still be exposed. - User agents MUST expose additional states for certain roles as defined in the Role Mapping Tables.
- User agents MUST compute states for the relevant WAI-ARIA attributes and map to the accessibility API as specified in the State and Property Mapping Tables. To determine the relevant WAI-ARIA attributes, refer to the Definition of Roles [WAI-ARIA-1.2]]. Where the author has not provided values for required attributes, user agents SHOULD process as if the default value was provided.
-
Some WAI-ARIA properties are not global, and are only supported on certain roles. If a non-global
WAI-ARIA state or property is used where it is not supported, user agents SHOULD NOT map the given
WAI-ARIA property to the platform accessibility API. For example, if
aria-checked="true"is specified on<div role="grid">, it should not be exposed in MSAA implementations asSTATE_SYSTEM_CHECKED. -
When an explicit or inherited role of
noneorpresentationis applied to an element, the user agent MUST implement the rules for thenoneor thepresentationrole defined in Accessible Rich Internet Applications (WAI-ARIA) 1.2 [WAI-ARIA-1.2]].
There are a number of occurrences in the table where a given state or property is declared "Not mapped". In some cases, this occurs for the default value of the state/property, and is equivalent to its absence. User agents might find it quicker to map the value than check to see if it is the default. For computational efficiency, user agents MAY expose the state or property value if doing so is equivalent to not mapping it. These cases are marked with an asterisk.
In other cases, it is mandatory that the state/property not be mapped, since exposing it implies a related affordance. An example is
aria-grabbed. Its absence not only indicates that the accessible object is not grabbed, but further defines it as not grab-able. These cases are marked as "Not mapped" without an asterisk.
| ARIA Specification |
aria-activedescendant
|
|---|---|
| MSAA + IAccessible2 | See Focus Changes. |
| UIA | See Focus Changes. |
| ATK/AT-SPI | See Focus Changes. |
| AX API |
See Focus Changes. Property: AXSelectedRows: pointer to active descendant node
|
| Android | TBD |
| ARIA Specification |
aria-atomic=true
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: atomic:trueObject Attribute: container-atomic:trueObject Attribute: container-atomic:true on all descendantsRelation: IA2_RELATION_MEMBER_OF pointing to this element (the atomic root)See also: Changes to document content or node visibility |
| UIA |
Property: AriaProperties.atomic: trueSee also: Changes to document content or node visibility |
| ATK/AT-SPI |
Object Attribute: atomic:trueObject Attribute: container-atomic:trueObject Attribute: container-atomic:true on all descendantsRelation: RELATION_MEMBER_OF pointing to this element (the atomic root)See also: Changes to document content or node visibility |
| AX API |
Property: AXARIAAtomic: YESSee also: Changes to document content or node visibility |
| Android | TBD |
| ARIA Specification |
aria-atomic=false
|
|---|---|
| MSAA + IAccessible2 |
Not mapped*, but if mapped: Object Attribute: atomic:falseObject Attribute: container-atomic:falseObject Attribute: container-atomic:false on all descendantsRelation: IA2_RELATION_MEMBER_OF pointing to this element (the atomic root)See also: Changes to document content or node visibility |
| UIA |
Property: AriaProperties.atomic: falseSee also: Changes to document content or node visibility |
| ATK/AT-SPI |
Not mapped*, but if mapped: Object Attribute: atomic:falseObject Attribute: container-atomic:falseObject Attribute: container-atomic:false on all descendantsRelation: RELATION_MEMBER_OF pointing to this element (the atomic root)See also: Changes to document content or node visibility |
| AX API |
Property: AXARIAAtomic: NOSee also: Changes to document content or node visibility |
| Android | TBD |
| ARIA Specification |
aria-autocomplete=inline, list, or both
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: autocomplete:<value>State: IA2_STATE_SUPPORTS_AUTOCOMPLETION
|
| UIA | Not mapped |
| ATK/AT-SPI |
Object Attribute: autocomplete:<value>State: STATE_SUPPORTS_AUTOCOMPLETION
|
| AX API | Not mapped |
| Android | TBD |
| ARIA Specification |
aria-autocomplete=none
|
|---|---|
| MSAA + IAccessible2 | Not mapped* |
| UIA | Not mapped* |
| ATK/AT-SPI | Not mapped* |
| AX API | Not mapped* |
| Android | TBD |
| ARIA Specification |
aria-braillelabel
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: braillelabel:<value>
|
| UIA |
Property: AriaProperties.braillelabel: <value>
|
| ATK/AT-SPI |
Object Attribute: braillelabel:<value>
|
| AX API | Property: AXBrailleLabel |
| Android | TBD |
| ARIA Specification |
aria-brailleroledescription
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: brailleroledescription:<value>
|
| UIA |
Property: AriaProperties.brailleroledescription: <value>
|
| ATK/AT-SPI |
Object Attribute: brailleroledescription:<value>
|
| AX API | Property: AXBrailleRoleDescription |
| Android | TBD |
| ARIA Specification |
aria-brailleroledescription is undefined or the empty string
|
|---|---|
| MSAA + IAccessible2 | Not mapped |
| UIA | Not mapped |
| ATK/AT-SPI | Not mapped |
| AX API | Not mapped |
| Android | TBD |
| ARIA Specification |
aria-busy=true
|
|---|---|
| MSAA + IAccessible2 |
State: STATE_SYSTEM_BUSY
|
| UIA |
Property: AriaProperties.busy: true
|
| ATK/AT-SPI |
State: STATE_BUSY
|
| AX API |
Property: AXElementBusy: YES
|
| Android | TBD |
| ARIA Specification |
aria-busy=false
|
|---|---|
| MSAA + IAccessible2 |
State: STATE_SYSTEM_BUSY not exposed
|
| UIA |
Property: AriaProperties.busy: false
|
| ATK/AT-SPI |
State: STATE_BUSY not exposed
|
| AX API |
Property: AXElementBusy: NO
|
| Android | TBD |
| ARIA Specification |
aria-checked=true
|
|---|---|
| MSAA + IAccessible2 |
State: STATE_SYSTEM_CHECKEDObject Attribute: checkable:true
|
| UIA |
Property: Toggle.ToggleState: On (1)Property: SelectionItem.IsSelected: True for radio and menuitemradio
|
| ATK/AT-SPI |
State: STATE_CHECKABLEState: STATE_CHECKED
|
| AX API |
Property: AXValue: 1Property: AXMenuItemMarkChar: ✓ for menuitemcheckbox and menuitemradio
|
| Android | TBD |
| ARIA Specification |
aria-checked=false
|
|---|---|
| MSAA + IAccessible2 |
State: STATE_SYSTEM_CHECKED not exposedObject Attribute: checkable:true
|
| UIA |
Property: Toggle.ToggleState: Off (0)Property: SelectionItem.IsSelected: False for radio and menuitemradio
|
| ATK/AT-SPI |
State: STATE_CHECKABLEState: STATE_CHECKED not exposed
|
| AX API |
Property: AXValue: 0Property: AXMenuItemMarkChar: <nil> for menuitemcheckbox and menuitemradio
|
| Android | TBD |
| ARIA Specification |
aria-checked=mixed
|
|---|---|
| MSAA + IAccessible2 |
State: STATE_SYSTEM_MIXEDObject Attribute: checkable:true
|
| UIA |
Property: Toggle.ToggleState: Indeterminate (2)
|
| ATK/AT-SPI |
State: STATE_INDETERMINATEState: STATE_CHECKABLEState: STATE_CHECKED not exposed
|
| AX API |
Property: AXValue: 2Property: AXMenuItemMarkChar: <nil> for menuitemcheckbox and menuitemradio
|
| Android | TBD |
| ARIA Specification |
aria-checked is undefined
|
|---|---|
| MSAA + IAccessible2 | Not mapped |
| UIA | Not mapped |
| ATK/AT-SPI | Not mapped |
| AX API | Not mapped |
| Android | TBD |
| ARIA Specification |
aria-colcount
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: colcount:<value>Method: IAccessible2::groupPosition(): similarItemsInGroup=<value> on cells and headers
|
| UIA |
Property: Grid.ColumnCount: <value>
|
| ATK/AT-SPI |
Object Attribute: colcount should contain the author-provided value.Method: atk_table_get_n_columns() should return the actual number of columns.
|
| AX API |
Property: AXARIAColumnCount: <value>
|
| Android | TBD |
| ARIA Specification |
aria-colindex
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: colindex:<value>Method: IAccessible2::groupPosition(): positionInGroup=<value> on cells and headers
|
| UIA |
Property: GridItem.Column: <value> (zero-based)
|
| ATK/AT-SPI |
Object Attribute: colindex should contain the author-provided value.Method: atk_table_cell_get_position() should return the actual (zero-based) column index.
|
| AX API |
Property: AXARIAColumnIndex: <value>
|
| Android | TBD |
| ARIA Specification |
aria-colindextext
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: colindextext:<value>
|
| UIA |
Property: AriaProperties.colindextext: <value>
|
| ATK/AT-SPI |
Object Attribute: colindextext:<value>
|
| AX API |
Property: AXColumnIndexDescription: <value>
|
| Android | TBD |
| ARIA Specification |
aria-colspan
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: colspan:<value>Method: IAccessibleTableCell::columnExtent(): <value>
|
| UIA |
Property: GridItem.ColumnSpan: <value>
|
| ATK/AT-SPI |
Object Attribute: colspan should contain the author-provided value.Method: atk_table_cell_get_row_column_span() should return the actual column span.
|
| AX API |
Property: AXColumnIndexRange.length: <value>
|
| Android | TBD |
| ARIA Specification |
aria-controls
|
|---|---|
| MSAA + IAccessible2 |
Relation: IA2_RELATION_CONTROLLER_FOR points to accessible nodes matching IDREFsReverse Relation: IA2_RELATION_CONTROLLED_BY points to elementSee also: Mapping Additional Relations |
| UIA |
Property: ControllerFor: pointers to accessible nodes matching IDREFs
|
| ATK/AT-SPI |
Relation: RELATION_CONTROLLER_FOR points to accessible nodes matching IDREFsReverse Relation: RELATION_CONTROLLED_BY points to elementSee also: Mapping Additional Relations |
| AX API |
Property: AXLinkedUIElements: pointers to accessible nodes matching IDREFs
|
| Android | TBD |
| ARIA Specification |
aria-current with non-false allowed value
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: current:<value>
|
| UIA |
Property: AriaProperties.current: <value>
|
| ATK/AT-SPI |
Object Attribute: current:<value>State: STATE_ACTIVE
|
| AX API |
Property: AXARIACurrent: <value>
|
| Android | TBD |
| ARIA Specification |
aria-current with unrecognized value
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: current:true
|
| UIA |
Property: AriaProperties.current: true
|
| ATK/AT-SPI |
Object Attribute: current:trueState: STATE_ACTIVE
|
| AX API |
Property: AXARIACurrent: true
|
| Android | TBD |
| ARIA Specification |
aria-current is false or undefined
|
|---|---|
| MSAA + IAccessible2 | Not mapped* |
| UIA | Not mapped* |
| ATK/AT-SPI | Not mapped* |
| AX API | Not mapped* |
| Android | TBD |
| ARIA Specification |
aria-describedby
|
|---|---|
| MSAA + IAccessible2 |
Property: accDescription: <value>Relation: IA2_RELATION_DESCRIBED_BY points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: IA2_RELATION_DESCRIPTION_FOR points to elementSee also: Name Computation and Mapping Additional Relations |
| UIA |
Property: FullDescription: <value>See also: Name Computation |
| ATK/AT-SPI |
Property: Description: <value>Relation: RELATION_DESCRIBED_BY points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: RELATION_DESCRIPTION_FOR points to elementSee also: Name Computation and Mapping Additional Relations |
| AX API |
In the accessibilityCustomContent API, expose as an AXCustomContent object with { label: "description" } and `value` set to the description
string.- See also: Name Computation |
| Android | TBD |
| ARIA Specification |
aria-description
|
|---|---|
| MSAA + IAccessible2 |
Property: accDescription: <value>See also: Name Computation |
| UIA |
Property: FullDescription: <value>See also: Name Computation |
| ATK/AT-SPI |
Property: Description: <value>See also: Name Computation |
| AX API |
In the accessibilityCustomContent API, expose as an AXCustomContent object with { label: "description" } and `value` set to the description
string.See also: Name Computation |
| Android | TBD |
| ARIA Specification |
aria-details
|
|---|---|
| MSAA + IAccessible2 |
Relation: IA2_RELATION_DETAILS points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: IA2_RELATION_DETAILS_FOR points to elementSee also: Mapping Additional Relations |
| UIA |
Property: DescribedBy: points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility tree
|
| ATK/AT-SPI |
Relation: RELATION_DETAILS points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: RELATION_DETAILS_FOR points to elementSee also: Mapping Additional Relations |
| AX API |
Property: AXDetailsElements: pointers to accessible nodes matching IDREFs
|
| Android | TBD |
| ARIA Specification |
aria-disabled=true
|
|---|---|
| MSAA + IAccessible2 |
State: STATE_SYSTEM_UNAVAILABLEState: STATE_SYSTEM_UNAVAILABLE on all descendants with STATE_SYSTEM_FOCUSABLE
|
| UIA |
Property: IsEnabled: false
|
| ATK/AT-SPI |
State: STATE_ENABLED not exposed
|
| AX API |
Property: AXEnabled: NO
|
| Android | TBD |
| ARIA Specification |
aria-disabled=false
|
|---|---|
| MSAA + IAccessible2 |
State: STATE_SYSTEM_UNAVAILABLE not exposed
|
| UIA |
Property: IsEnabled: true
|
| ATK/AT-SPI |
State: STATE_ENABLED
|
| AX API |
Property: AXEnabled: YES
|
| Android | TBD |
| ARIA Specification |
aria-dropeffect=none
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: dropeffect:none if there are no other valid tokensNot mapped* if not specified by the author |
| UIA | Not mapped* |
| ATK/AT-SPI |
Object Attribute: dropeffect:none if there are no other valid tokensNot mapped* if not specified by the author |
| AX API | Not mapped* |
| Android | TBD |
| ARIA Specification |
aria-errormessage
|
|---|---|
| MSAA + IAccessible2 |
Relation: IA2_RELATION_ERROR points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: IA2_RELATION_ERROR_FOR points to elementSee also: Mapping Additional Relations |
| UIA |
Property: ControllerFor: pointer to the target accessible object
|
| ATK/AT-SPI |
Relation: RELATION_ERROR_MESSAGE points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: RELATION_ERROR_FOR points to elementSee also: Mapping Additional Relations |
| AX API |
Property: AXErrorMessageElements: pointers to accessible nodes matching IDREFs
|
| Android | TBD |
| ARIA Specification |
aria-expanded=true
|
|---|---|
| MSAA + IAccessible2 |
State: STATE_SYSTEM_EXPANDED
|
| UIA |
Property: ExpandCollapse.ExpandCollapseState: Expanded
|
| ATK/AT-SPI |
State: STATE_EXPANDABLEState: STATE_EXPANDED
|
| AX API |
Property: AXExpanded: YES
|
| Android | TBD |
| ARIA Specification |
aria-expanded=false
|
|---|---|
| MSAA + IAccessible2 |
State: STATE_SYSTEM_COLLAPSED
|
| UIA |
Property: ExpandCollapse.ExpandCollapseState: Collapsed
|
| ATK/AT-SPI |
State: STATE_EXPANDABLEState: STATE_EXPANDED not exposed
|
| AX API |
Property: AXExpanded: NO
|
| Android | TBD |
| ARIA Specification |
aria-expanded is undefined
|
|---|---|
| MSAA + IAccessible2 | Not mapped |
| UIA | Not mapped |
| ATK/AT-SPI | Not mapped |
| AX API | Not mapped |
| Android | TBD |
| ARIA Specification |
aria-flowto
|
|---|---|
| MSAA + IAccessible2 |
Relation: IA2_RELATION_FLOW_TO points to accessible nodes matching IDREFsReverse Relation: IA2_RELATION_FLOW_FROM points to elementSee also: Mapping Additional Relations |
| UIA |
Property: FlowsTo: pointers to accessible nodes matching IDREFs
|
| ATK/AT-SPI |
Relation: RELATION_FLOWS_TO points to accessible nodes matching IDREFsReverse Relation: RELATION_FLOWS_FROM points to elementSee also: Mapping Additional Relations |
| AX API |
Property: AXLinkedUIElements: pointers to accessible nodes matching IDREFs
|
| Android | TBD |
| ARIA Specification |
aria-grabbed=true
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: grabbed:true
|
| UIA |
Property: AriaProperties.grabbed: true
|
| ATK/AT-SPI |
Object Attribute: grabbed:true
|
| AX API |
Property: AXGrabbed: YES
|
| Android | TBD |
| ARIA Specification |
aria-grabbed=false
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: grabbed:false
|
| UIA |
Property: AriaProperties.grabbed: false
|
| ATK/AT-SPI |
Object Attribute: grabbed:false
|
| AX API |
Property: AXGrabbed: NO
|
| Android | TBD |
| ARIA Specification |
aria-grabbed is undefined
|
|---|---|
| MSAA + IAccessible2 | Not mapped |
| UIA | Not mapped |
| ATK/AT-SPI | Not mapped |
| AX API | Not mapped |
| Android | TBD |
| ARIA Specification |
aria-hidden=true on unfocused element
|
|---|---|
| MSAA + IAccessible2 |
Element SHOULD NOT be exposed See also: Including Elements in the Accessibility Tree in the WAI-ARIA specification |
| UIA |
Element SHOULD NOT be exposed See also: Including Elements in the Accessibility Tree in the WAI-ARIA specification |
| ATK/AT-SPI |
Element SHOULD NOT be exposed See also: Including Elements in the Accessibility Tree in the WAI-ARIA specification |
| AX API |
Element SHOULD NOT be exposed See also: Including Elements in the Accessibility Tree in the WAI-ARIA specification |
| Android | TBD |
| ARIA Specification |
aria-hidden=true when element is focused or fires an accessibility event
|
|---|---|
| MSAA + IAccessible2 |
Object Attribute: hidden:trueSee also: Including Elements in the Accessibility Tree in the WAI-ARIA specification |
| UIA |
Property: AriaProperties.hidden: trueSee also: Including Elements in the Accessibility Tree in the WAI-ARIA specification |
| ATK/AT-SPI |
Object Attribute: hidden:trueSee also: Including Elements in the Accessibility Tree in the WAI-ARIA specification |
| AX API |
Not mapped See also: Including Elements in the Accessibility Tree in the WAI-ARIA specification |
| Android | TBD |
| ARIA Specification |
aria-hidden=false
|
|---|---|
| MSAA + IAccessible2 | Not mapped |
| UIA | Not mapped |
| ATK/AT-SPI | Not mapped |
| AX API | Not mapped |
| Android | TBD |
| ARIA Specification |
aria-invalid=true
|
|---|---|
| MSAA + IAccessible2 |
State: IA2_STATE_INVALID_ENTRYText Attribute: invalid:true
|
| UIA |
Property: IsDataValidForForm: false
|
| ATK/AT-SPI |
State: STATE_INVALID_ENTRYText Attribute: invalid:true
|
| AX API |
Property: AXInvalid: true
|
| Android | TBD |
| ARIA Specification |
aria-invalid=false
|
|---|---|
| MSAA + IAccessible2 |
State: IA2_STATE_INVALID_ENTRY not exposed
|
| UIA |
Property: IsDataValidForForm: true
|
| ATK/AT-SPI |
State: STATE_INVALID_ENTRY not exposed
|
| AX API |
Property: AXInvalid: false
|
| Android | TBD |
| ARIA Specification |
aria-invalid=spelling or grammar
|
|---|---|
| MSAA + IAccessible2 |
State: IA2_STATE_INVALID_ENTRYText Attribute: invalid:<value>
|
| UIA |
Property: IsDataValidForForm: <value>
|
| ATK/AT-SPI |
State: STATE_INVALID_ENTRYText Attribute: invalid:<value>
|
| AX API |
Property: AXInvalid: <value>
|
| Android | TBD |
| ARIA Specification |
aria-invalid with unrecognized value
|
|---|---|
| MSAA + IAccessible2 |
State: IA2_STATE_INVALID_ENTRYText Attribute: invalid:true
|
| UIA |
Property: IsDataValidForForm: false
|
| ATK/AT-SPI |
State: STATE_INVALID_ENTRYText Attribute: invalid:true
|
| AX API |
Property: AXInvalid: true
|
| Android | TBD |
| ARIA Specification |
aria-keyshortcuts
|
|---|---|
| MSAA + IAccessible2 |
Property: accKeyboardShortcut: <value>
|
| UIA |
Property: AcceleratorKey: <value>
|
| ATK/AT-SPI |
Object Attribute: keyshortcuts:<value>
|
| AX API |
Property: AXKeyShortcutsValue: <value>
|
| Android | TBD |
| ARIA Specification |
aria-label
|
|---|---|
| MSAA + IAccessible2 |
Property: accName: <value>See also: Name Computation |
| UIA |
Property: Name: <value>See also: Name Computation |
| ATK/AT-SPI |
Property: Name: <value>See also: Name Computation |
| AX API |
Property: AXTitle: <value>See also: Name Computation |
| Android | TBD |
| ARIA Specification |
aria-labelledby
|
|---|---|
| MSAA + IAccessible2 |
Property: accName: <value>Relation: IA2_RELATION_LABELLED_BY points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: IA2_RELATION_LABEL_FOR points to elementSee also: Name Computation and Mapping Additional Relations |
| UIA |
Property: Name: <value>Property: LabeledBy: points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeSee also: Name Computation |
| ATK/AT-SPI |
Property: Name: <value>Relation: RELATION_LABELLED_BY points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: RELATION_LABEL_FOR points to |