Copyright © 2014-2026World Wide Web Consortium.W3C®liability,trademark andpermissive document license rules apply.
This document describes howuser agents should expose semantics of web content languages toaccessibilityAPIs. This helps users with disabilities to obtain and interact with information usingassistive technologies. Documenting these mappings promotes interoperable exposure of roles, states, properties, and events implemented by accessibilityAPIs and helps to ensure that this information appears in a manner consistent with author intent.
This Core AccessibilityAPI Mappings specification defines support that applies across multiple content technologies, including general keyboard navigation support and mapping of general-purposeroles, states, and properties provided in Web content viaWAI-ARIA [WAI-ARIA-1.2]. Other AccessibilityAPI Mappings specifications depend on and extend this Core specification for specific technologies, including native technology features andWAI-ARIA extensions. This document updates and will eventually supersede the guidance in theCore AccessibilityAPI Mappings 1.1 [CORE-AAM-1.1]W3C Recommendation. It is part of theWAI-ARIA suite described in theWAI-ARIA Overview.
This section describes the status of this document at the time of its publication. A list of currentW3C publications and the latest revision of this technical report can be found in theW3C 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 theW3C core-aam GitHub repository. If this is not feasible, send email topublic-aria@w3.org (comment archive). In-progress updates to the document may be viewed in thepublicly visible editors' draft.
Living specification — This document is maintained as a living specification. For the latest normative version, visitCore AccessibilityAPI Mappings.
This document was published by theAccessible Rich Internet Applications Working Group as an Editor's Draft.
Publication as an Editor's Draft does not imply endorsement byW3C and its Members.
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 theW3C Patent Policy.W3C maintains apublic 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 containsEssential Claim(s) must disclose the information in accordance withsection 6 of theW3C Patent Policy.
This document is governed by the18 August 2025W3C Process Document.
This section is non-normative.
The Core AccessibilityAPI Mappings specifies howWAI-ARIAroles,states, andproperties are expected to be exposed by user agents via platform accessibilityAPIs. It is part of a set of resources that define and support theWAI-ARIA specification which includes the following documents:
For an introduction toWAI-ARIA, see theWAI-ARIA Overview.
AccessibilityAPIs make it possible to communicate accessibility information about user interfaces to assistive technologies. This information includes:
AccessibilityAPIs covered by this specification are:
TheWAI-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 useUI Automation instead.
If user agent developers need to expose information using other accessibilityAPIs, it is recommended that they work closely with the developer of the platform where theAPI runs, and assistive technology developers on that platform.
For various technological and historical reasons, accessibilityAPIs 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 theAPIs.
MSAA, IAccessible2,UIA, andAX API each define anAPI 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 accessibilityAPI:ATK orAT-SPI.
ATK defines an interface that is implemented by software in order to expose accessibility information, whereasAT-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 GNOMEGUI toolkit [GTK], implements the relevant aspects ofATK 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, whereasAT-SPI is relevant to consumers. In the context of mappingWAI-ARIA roles, states and properties, user agents are implementors and useATK. Assistive Technologies are consumers, and useAT-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:
All automation elements inherit from theIUIAutomationElement 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:
Current{PropertyName}, e.g.IUIAutomationElement::CurrentName for theName propertyCached{PropertyName}, e.g.IUIAutomationElement::CachedName for theName property. Using cached values is preferred when providers and clients are used in remote environments.GetCurrentPropertyValue and passing theUIA Property ID enumeration value corresponding to that property to get the current value, e.g.IUIAutomationElement::GetCurrentPropertyValue(UIA_NamePropertyId) for theName property.GetCachedPropertyValue and passing theUIA Property ID enumeration value corresponding to that property to get the cached value, e.g.IUIAutomationElement::GetCachedPropertyValue(UIA_NamePropertyId) for theName property. 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 ofAccessibilityNodeInfo objects. Accessibility services receive events, traverse theAccessibilityNodeInfo tree, retrieve properties, and perform actions on a node. Conversely, Android applications build theAccessibilityNodeInfo tree indirectly by constructing views or composables, or directly via anAccessibilityNodeProvider. They then subsequently fire events, and handle actions.
Each platform accessibilityAPI includes a way to assign and retrieveaccessible name andaccessible description properties for eachaccessible object created in theaccessibility tree. How these properties are implemented and what they are called vary depending on theAPI.
For instance, inMSAA, allaccessible objects support theaccName property, which stores the object'saccessible name. Where the object also supports having anaccessible description,MSAA stores this property in the object'saccDescription property.
Software usingATK can read and write to an object'saccessible-name andaccessible-description properties. In turn,AT-SPI can query the values of those properties through itsatspi_accessible_get_name andatspi_accessible_get_description functions.
Automation elements in theUIA accessibility tree have aName property. Where the object also supports having anaccessible description,UIA stores this property in the object'sFullDescription property.
An object'saccessible description, where provided byaria-description oraria-describedby, should be exposed in theaccessibilityCustomContentAPI. Otherwise, it should be exposed asAXHelp.
In Android, accessible names map to a number of properties defined onAccessibilityNodeInfo such as content description, supplemental description, and text.
For more detail, see theAccessible 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 wordsMAY,MUST,MUST NOT,SHOULD, andSHOULD NOT in this document are to be interpreted as described inBCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
Normative sections provide requirements that user agents and assistive technologiesMUST 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.
TheWAI-ARIA specificationlists 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 accessibilityAPIs, and doing so is part of conformance to this specification. When future versions of theWAI-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 platformAccessibilityAPI,user agents exposeWAI-ARIAsemantics through the standard mechanisms of the desktop accessibilityAPI. For example, forWAI-ARIAwidgets, compare how the widget is exposed in a similar desktop widget. In general mostWAI-ARIA widget capabilities are exposed through therole, value, Booleanstates, and relations of the accessibilityAPI.
With respect toWAI-ARIA 1.0 and 1.1, accessibilityAPIs operate in one direction only. User agents publishWAI-ARIA information (roles, states, and properties) via an accessibilityAPI, and anAT can acquire that information using the sameAPI. However, the other direction is not supported.WAI-ARIA 1.0 and 1.1 do not define mechanisms for assistive technologies to directly modifyWAI-ARIA information.
The terms "exposing", "mapping", and "including" refer to the creation ofaccessible objectnodes within theaccessibility tree, and populating these objects withAccessibilityAPI specificstates andproperties.
WAI-ARIA roles, states, and properties are intended to addsemantic information when native host languageelements 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 noWAI-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 agentsMUST always use theWAI-ARIA semantics to define how it exposes the element toaccessibilityAPIs, rather than using the host language semantics.
Host languages can have features that have implicitWAI-ARIA semantics corresponding toroles. When aWAI-ARIA role is provided that has a corresponding role in the accessibilityAPI, user agentsMUST use the semantic of theWAI-ARIA role for processing, not the native semantic, unless the role requiresWAI-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 aWAI-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 theWAI-ARIA role ofspinbutton (<input type="text" role="spinbutton" ...>) so that the control is properly mapped in the accessibilityAPI. When aWAI-ARIA role is provided that does not have a corresponding role in the accessibilityAPI, user agentsMAY expose the native semantic in addition to theWAI-ARIA role. If the host language element is overridden by aWAI-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 havingpresentation ornone.
The above text differs slightly from theWAI-ARIA specification. The requirement for user agents to expose theWAI-ARIA role instead of the native role was intended to only apply in cases where there is a direct mapping from theWAI-ARIA role to a corresponding role in the accessibilityAPI. The wording of the requirement is not clear in theWAI-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 accessibilityAPI. Because there are differing implementations, authors will be advised against adding suchWAI-ARIA roles to native elements that have their own semantics in theWAI-ARIA Authoring Practices Guide.
WhenWAI-ARIA states and properties correspond to host language features that have the same implicitWAI-ARIA semantic, it can be problematic if the values become out of sync. For example, theHTMLchecked attribute and thearia-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 ofWAI-ARIA attributes on a host language element conflict with native attributes for that element. When a host language declares aWAI-ARIAattribute to be in direct semantic conflict with a native attribute for a given element, user agentsMUST ignore theWAI-ARIA attribute and instead use the host language attribute with the same implicit semantic.
Host languages might also document features that cannot be overridden withWAI-ARIA (these are called "strong native semantics"). These can be features that have implicitWAI-ARIA semantics as well as features where the processing would be uncertain if the semantics were changed withWAI-ARIA. While conformance checkers might signal an error or warning when aWAI-ARIA role is used on elements with strong native semantics, user agentsMUST still use the value of the semantic of theWAI-ARIA role when exposing the element to accessibilityAPIs.
PlatformaccessibilityAPIs might have features that are not inWAI-ARIA. Likewise,WAI-ARIA exposes capabilities that are not supported by accessibilityAPIs at the time of publication. There typically is not a one to one relationship between allWAI-ARIAattributes and platform accessibilityAPIs. WhenWAI-ARIAroles,states andproperties do not directly map to an accessibilityAPI, and there is a mechanism in theAPI to expose theWAI-ARIA role, states, and properties and their values,user agentsMUST expose theWAI-ARIA data using that mechanism as follows:
aria-live attribute can be exposed via an object attribute because accessibilityAPIs 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 inState and Property Mapping.AriaRole andAriaProperties properties to expose semantics that are not directly supported in the control type.MSAA does not provide a mechanism for exposing attributes that do not map directly to theAPI and among implementers, there is no agreement on how to do it.
User agentsMUST also expose the entire role string through this mechanism andMAY also exposeWAI-ARIA attributes and values through this mechanism even when there is a direct mapping to an accessibilityAPI.
Browser implementers are advised to publicly document theirAPI methods for exposing any relevant information, so thatassistive technology developers can use theAPI to support user features.
PlatformaccessibilityAPIs traditionally have had a finite set of predefinedroles that are expected byassistive 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 agentsMUST expose theWAI-ARIA role string if theAPI supports a mechanism to do so. This allows assistive technologies to do their own additional processing of roles.
accRole property.xml-roles:"string")AriaRole property. TheAriaRole property can also support secondary roles using a space as a separator.xml-roles:"string") Thecomputedrole of an element is a string that represents the role of the element as computed by the browser engine. Thecomputedrole is used primarily for the purposes of developer tools and specification conformance and interoperability testing.
User agents provide this role string, for example, in developer tools, and in response to the WebDriver functiongetComputedRole, which is used forinteroperability testing of ARIA,HTML-AAM, and other specifications.
<button><!-- computedrole returns "button" --><ahref="#"role="button"><!-- computedrole returns "button" --> When an element has a role but is not contained in the required context (for example, an orphanedlistitem without the required accessible parent of rolelist), 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].
<divrole="listitem"><!-- Author error: orphaned listitem. computedrole is unspecified. --><divrole="list"><!-- computedrole returns "list" --><divrole="listitem"><!-- computedrole returns "listitem" in the appropriate context. --> When host language elements do not have an exact or equivalent mapping to a valid, non-abstract role, the related AccessibiltyAPI Mapping extension specificationMAY specify a uniquecomputedrole string as the return value for interoperability testing purposes, such as<video> -> "html-video" in [HTML-AAM]. However, authorsMUST NOT use any host-language-prefixedcomputedrole string in therole attribute (such ashtml-video), unless the token also matches valid, defined role (such asdpub-chapter). User AgentsMUST ignore any abstract or invalid role token.
<video><!-- computedrole returns "html-video" --><mainrole="html-video"><!-- Author error. computedrole returns "main" -->| ARIA Specification | alert |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_ALERTEvent: The user agentSHOULD fire EVENT_SYSTEM_ALERT.[Note 2] |
| UIA | Control Type:GroupLocalized Control Type: alertLiveSetting: Assertive (2)Event: The user agentSHOULD fire a system alertevent.[Note 2] |
| ATK/AT-SPI | Role:ROLE_NOTIFICATIONEvent: The user agentSHOULD fire a system alertevent.[Note 2] |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXApplicationAlertEvent: The user agentSHOULD fire a system alertevent.[Note 2] |
| Android | TBD |
| ARIA Specification | alertdialog |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_DIALOGEvent: The user agentSHOULD fire EVENT_SYSTEM_ALERT.[Note 2] |
| UIA | Control Type:PaneEvent: The user agentSHOULD fire a system alertevent.[Note 2] |
| ATK/AT-SPI | Role:ROLE_ALERTInterface: WindowEvent: The user agentSHOULD fire a system alertevent.[Note 2] |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXApplicationAlertDialogEvent: The user agentSHOULD fire a system alertevent.[Note 2] |
| Android | TBD |
| 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 | TBD |
| 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 | TBD |
| ARIA Specification | banner |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:IA2_ROLE_LANDMARKObject Attribute: xml-roles:banner |
| UIA | Control Type:GroupLocalized Control Type: bannerLandmark Type: CustomLocalized Landmark Type: banner |
| ATK/AT-SPI | Role:ROLE_LANDMARKObject Attribute: xml-roles:banner |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXLandmarkBanner |
| Android | TBD |
| 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 | TBD |
| ARIA Specification | button with default values foraria-pressed andaria-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 | TBD |
| ARIA Specification | button with non-false value foraria-haspopup |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_BUTTONMENU |
| UIA | Control Type:Button |
| ATK/AT-SPI | Role:ROLE_PUSH_BUTTON |
| AX API[Note 1] | AXRole:AXPopUpButtonAXSubrole: <nil> |
| Android | TBD |
| ARIA Specification | button with defined value foraria-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 | TBD |
| 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 | TBD |
| 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 | TBD |
| ARIA Specification | checkbox |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_CHECKBUTTONSee also: aria-checked in theState and Property Mapping Tables |
| UIA | Control Type:CheckboxSee also: aria-checked in theState and Property Mapping Tables |
| ATK/AT-SPI | Role:ROLE_CHECK_BOXSee also: aria-checked in theState and Property Mapping Tables |
| AX API[Note 1] | AXRole:AXCheckBoxAXSubrole: <nil>See also: aria-checked in theState and Property Mapping Tables |
| Android | TBD |
| 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 | TBD |
| 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 | TBD |
| ARIA Specification | combobox |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_COMBOBOXState: STATE_SYSTEM_HASPOPUPState: STATE_SYSTEM_COLLAPSED ifaria-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 | TBD |
| ARIA Specification | comment |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:IA2_ROLE_COMMENTObject Attribute: xml-roles:comment |
| UIA | Control Type:GroupLocalized Control Type: comment |
| ATK/AT-SPI | Role:ROLE_COMMENTObject Attribute: xml-roles:comment |
| AX API[Note 1] | AXRole:AXGroup |
| Android | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 adeletion |
| Android | TBD |
| ARIA Specification | dialog |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_DIALOG |
| UIA | Control Type:Pane |
| ATK/AT-SPI | Role:ROLE_DIALOGInterface: Window |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXApplicationDialog |
| Android | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| ARIA Specification | form without an accessible name |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Do not expose theelement as a landmark. Use the native host language role of the element instead. |
| UIA | Do not expose theelement as a landmark. Use the native host language role of the element instead. |
| ATK/AT-SPI | Do not expose theelement as a landmark. Use the native host language role of the element instead. |
| AX API[Note 1] | Do not expose theelement as a landmark. Use the native host language role of the element instead. |
| Android | TBD |
| 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 | TBD |
| 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 BecauseWAI-ARIA does not support modifying the selection via the accessibilityAPI, user agentsMUST 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 ainsertion |
| Android | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 BecauseWAI-ARIA does not support modifying the selection via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXListAXSubrole: <nil> |
| Android | TBD |
| 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 BecauseWAI-ARIA does not support modifying the selection via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXListAXSubrole: <nil> |
| Android | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 amark |
| Android | TBD |
| 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 | TBD |
| 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 | TBD |
| ARIA Specification | menu |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_MENUPOPUPMethod: IAccessible::accSelect()Method: IAccessible::get_accSelection() |
| UIA | Control Type:Menu |
| ATK/AT-SPI | Role:ROLE_MENUInterface: Selection BecauseWAI-ARIA does not support modifying the selection via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXMenuAXSubrole: <nil> |
| Android | TBD |
| ARIA Specification | menubar |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_MENUBARMethod: IAccessible::accSelect()Method: IAccessible::get_accSelection() |
| UIA | Control Type:MenuBar |
| ATK/AT-SPI | Role:ROLE_MENU_BARInterface: Selection BecauseWAI-ARIA does not support modifying the selection via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXMenuBarAXSubrole: <nil> |
| Android | TBD |
| ARIA Specification | menuitem |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_MENUITEM |
| UIA | Control Type:MenuItem |
| ATK/AT-SPI | Role:ROLE_MENU_ITEM |
| AX API[Note 1] | AXRole:AXMenuItemAXSubrole: <nil> |
| Android | TBD |
| ARIA Specification | menuitemcheckbox |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_CHECKBUTTON orROLE_SYSTEM_MENUITEMRole: IA2_ROLE_CHECK_MENU_ITEMSee also: aria-checked in theState and Property Mapping Tables |
| UIA | Control Type:MenuItemControl Pattern: ToggleSee also: aria-checked in theState and Property Mapping Tables |
| ATK/AT-SPI | Role:ROLE_CHECK_MENU_ITEMSee also: aria-checked in theState and Property Mapping Tables |
| AX API[Note 1] | AXRole:AXMenuItemAXSubrole: <nil>See also: aria-checked in theState and Property Mapping Tables |
| Android | TBD |
| ARIA Specification | menuitemradio |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_RADIOBUTTON orROLE_SYSTEM_MENUITEMRole: IA2_ROLE_RADIO_MENU_ITEMSee also: aria-checked in theState and Property Mapping Tables |
| UIA | Control Type:MenuItemControl Pattern: ToggleControl Pattern: SelectionItemSee also: aria-checked in theState and Property Mapping Tables |
| ATK/AT-SPI | Role:ROLE_RADIO_MENU_ITEMSee also: aria-checked in theState and Property Mapping Tables |
| AX API[Note 1] | AXRole:AXMenuItemAXSubrole: <nil>See also: aria-checked in theState and Property Mapping Tables |
| Android | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 theaccessibility 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 theaccessibility 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 theaccessibility 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 theaccessibility tree, expose it as |
| Android | TBD |
| 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 | TBD |
| ARIA Specification | option not insidecombobox |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_LISTITEMSee also: aria-checked in theState and Property Mapping Tables |
| UIA | Control Type:ListItemControl Pattern: InvokeSee also: aria-checked in theState and Property Mapping Tables |
| ATK/AT-SPI | Role:ROLE_LIST_ITEMSee also: aria-checked in theState and Property Mapping Tables |
| AX API[Note 1] | AXRole:AXStaticTextAXSubrole: <nil>See also: aria-checked in theState and Property Mapping Tables |
| Android | TBD |
| ARIA Specification | option insidecombobox |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_LISTITEMSee also: aria-checked in theState and Property Mapping Tables |
| UIA | Control Type:ListItemControl Pattern: InvokeSee also: aria-checked in theState and Property Mapping Tables |
| ATK/AT-SPI | Role:ROLE_MENU_ITEMSee also: aria-checked in theState and Property Mapping Tables |
| AX API[Note 1] | AXRole:AXStaticTextAXSubrole: <nil>See also: aria-checked in theState and Property Mapping Tables |
| Android | TBD |
| 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 | TBD |
| 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 theaccessibility 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 theaccessibility 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 theaccessibility 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 theaccessibility tree, expose it as |
| Android | TBD |
| ARIA Specification | progressbar |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_PROGRESSBARState: STATE_SYSTEM_READONLYInterface: IAccessibleValue |
| UIA | Control Type:ProgressBarControl Pattern: RangeValue ifaria-valuenow,aria-valuemax, oraria-valuemin is present |
| ATK/AT-SPI | Role:ROLE_PROGRESS_BARInterface: Value BecauseWAI-ARIA does not support modifying the value via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXProgressIndicatorAXSubrole: <nil> |
| Android | TBD |
| ARIA Specification | radio |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_RADIOBUTTONSee also: aria-checked in theState and Property Mapping Tables |
| UIA | Control Type:RadioButtonControl Pattern: ToggleControl Pattern: SelectionItemSee also: aria-checked in theState and Property Mapping Tables |
| ATK/AT-SPI | Role:ROLE_RADIO_BUTTONSee also: aria-checked in theState and Property Mapping Tables |
| AX API[Note 1] | AXRole:AXRadioButtonAXSubrole: <nil>See also: aria-checked in theState and Property Mapping Tables |
| Android | TBD |
| 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 | TBD |
| 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 | TBD |
| ARIA Specification | region without an accessible name |
|---|---|
| Computed Role | Use native host language role. |
| MSAA + IAccessible2 | Do not expose theelement as a landmark. Use the native host language role of the element instead. |
| UIA | Do not expose theelement as a landmark. Use the native host language role of the element instead. |
| ATK/AT-SPI | Do not expose theelement as a landmark. Use the native host language role of the element instead. |
| AX API[Note 1] | Do not expose theelement as a landmark. Use the native host language role of the element instead. |
| Android | TBD |
| ARIA Specification | row not insidetreegrid |
|---|---|
| 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 | TBD |
| ARIA Specification | row insidetreegrid |
|---|---|
| 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 | TBD |
| 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 | TBD |
| ARIA Specification | rowheader |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_ROWHEADERInterface: IAccessibleTableCell |
| UIA | Control Type:HeaderItem |
| ATK/AT-SPI | Role:ROLE_ROW_HEADERInterface: TableCell |
| AX API[Note 1] | AXRole:AXCellAXSubrole: <nil> |
| Android | TBD |
| 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 BecauseWAI-ARIA does not support modifying the value via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXScrollBarAXSubrole: <nil> |
| Android | TBD |
| 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 | TBD |
| 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:searchInterface: EditableText ifaria-readonly is not"true" |
| AX API[Note 1] | AXRole:AXTextFieldAXSubrole: AXSearchField |
| Android | TBD |
| ARIA Specification | sectionfooter |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_GROUPINGObject Attribute: xml-roles:sectionfooter |
| UIA | Control Type:GroupLocalized Control Type: section footer |
| ATK/AT-SPI | Role:ROLE_FOOTER |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXSectionFooterAXRoleDescription: section footer |
| Android | TBD |
| ARIA Specification | sectionheader |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_GROUPINGObject Attribute: xml-roles:sectionheader |
| UIA | Control Type:GroupLocalized Control Type: section header |
| ATK/AT-SPI | Role:ROLE_HEADER |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXSectionHeaderAXRoleDescription: section header |
| Android | TBD |
| 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 | TBD |
| 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 BecauseWAI-ARIA does not support modifying the value via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXSplitterAXSubrole: <nil> |
| Android | TBD |
| 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 BecauseWAI-ARIA does not support modifying the value via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXSliderAXSubrole: <nil> |
| Android | TBD |
| 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 BecauseWAI-ARIA does not support modifying the value via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXIncrementorAXSubrole: <nil> |
| Android | TBD |
| 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_STATUSBARObject Attribute: container-live:politeObject Attribute: live:politeObject Attribute: container-live-role:status |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXApplicationStatus |
| Android | TBD |
| 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 | TBD |
| 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 theTextRange Control Pattern implemented on the accessible object. |
| ATK/AT-SPI | Role:ROLE_SUBSCRIPT |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXSubscriptStyleGroup |
| Android | TBD |
| 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 asuggestion |
| Android | TBD |
| 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 theTextRange Control Pattern implemented on the accessible object. |
| ATK/AT-SPI | Role:ROLE_SUPERSCRIPT |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXSuperscriptStyleGroup |
| Android | TBD |
| ARIA Specification | switch |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_CHECKBUTTONRole: IA2_ROLE_TOGGLE_BUTTONObject Attribute: xml-roles:switchSee also: aria-checked in theState and Property Mapping Tables |
| UIA | Control Type:ButtonLocalized Control Type: toggleswitchControl Pattern: ToggleSee also: aria-checked in theState and Property Mapping Tables |
| ATK/AT-SPI | Role:ROLE_TOGGLE_BUTTONObject Attribute: xml-roles:switchSee also: aria-checked in theState and Property Mapping Tables |
| AX API[Note 1] | AXRole:AXCheckBoxAXSubrole: AXSwitchSee also: aria-checked in theState and Property Mapping Tables |
| Android | TBD |
| ARIA Specification | tab |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_PAGETABState: STATE_SYSTEM_SELECTED if focus is insidetabpanel associated witharia-labelledby |
| UIA | Control Type:TabItem |
| ATK/AT-SPI | Role:ROLE_PAGE_TABState: STATE_SELECTED if focus is insidetabpanel associated witharia-labelledby |
| AX API[Note 1] | AXRole:AXRadioButtonAXSubrole: AXTabButton |
| Android | TBD |
| 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 | TBD |
| 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 BecauseWAI-ARIA does not support modifying the selection via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXTabGroupAXSubrole: <nil> |
| Android | TBD |
| ARIA Specification | tabpanel |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_PANE orROLE_SYSTEM_PROPERTYPAGE |
| UIA | Control Type:Pane |
| ATK/AT-SPI | Role:ROLE_SCROLL_PANE |
| AX API[Note 1] | AXRole:AXGroupAXSubrole: AXTabPanel |
| Android | TBD |
| 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 | TBD |
| ARIA Specification | textbox whenaria-multiline isfalse |
|---|---|
| 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 ifaria-readonly is not"true" |
| AX API[Note 1] | AXRole:AXTextFieldAXSubrole: <nil> |
| Android | TBD |
| ARIA Specification | textbox whenaria-multiline istrue |
|---|---|
| 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 ifaria-readonly is not"true" |
| AX API[Note 1] | AXRole:AXTextAreaAXSubrole: <nil> |
| Android | TBD |
| ARIA Specification | time |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_GROUPINGObject Attribute: xml-roles:time |
| UIA | Control Type:TextLocalized Control Type: timeNote: create a separateUIA Control of type Text. This is different from mostUIA 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 | TBD |
| 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 BecauseWAI-ARIA does not support modifying the selection via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXOutlineAXSubrole: <nil> |
| Android | TBD |
| 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 BecauseWAI-ARIA does not support modifying the selection via the accessibilityAPI, user agentsMUST return |
| AX API[Note 1] | AXRole:AXTableAXSubrole: <nil> |
| Android | TBD |
| ARIA Specification | treeitem |
|---|---|
| Computed Role |
|
| MSAA + IAccessible2 | Role:ROLE_SYSTEM_OUTLINEITEMSee also: aria-checked in theState and Property Mapping Tables |
| UIA | Control Type:TreeItemSee also: aria-checked in theState and Property Mapping Tables |
| ATK/AT-SPI | Role:ROLE_TREE_ITEMSee also: aria-checked in theState and Property Mapping Tables |
| AX API[Note 1] | AXRole:AXRowAXSubrole: AXOutlineRowSee also: aria-checked in theState and Property Mapping Tables |
| Android | TBD |
[Note 1] User agent should return a user-presentable, localized string value for the AXRoleDescription.
[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 exposeWAI-ARIAstates andproperties.
VISIBLE/INVISIBLE,SHOWING/OFFSCREEN, etc. This typically is done in the same way as for ordinaryelements that do not haveWAI-ARIA attributes present. TheFOCUSABLE/FOCUSED states may be affected byaria-activedescendant.aria-labelledby attribute but the nativeHTML semantics must still be exposed.aria-checked="true" is specified on<div role="grid">, it should not be exposed inMSAA implementations asSTATE_SYSTEM_CHECKED.none orpresentation is applied to an element, the user agentMUST implement the rules for thenone or thepresentationrole defined inAccessible 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 agentsMAY 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 isaria-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 | SeeFocus Changes. |
| UIA | SeeFocus Changes. |
| ATK/AT-SPI | SeeFocus Changes. |
| AX API | SeeFocus 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, orboth |
|---|---|
| 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 forradio andmenuitemradio |
| ATK/AT-SPI | State:STATE_CHECKABLEState: STATE_CHECKED |
| AX API | Property:AXValue:1Property: AXMenuItemMarkChar:✓ formenuitemcheckbox andmenuitemradio |
| 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 forradio andmenuitemradio |
| ATK/AT-SPI | State:STATE_CHECKABLEState: STATE_CHECKED not exposed |
| AX API | Property:AXValue:0Property: AXMenuItemMarkChar:<nil> formenuitemcheckbox andmenuitemradio |
| 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> formenuitemcheckbox andmenuitemradio |
| 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 isfalse 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 andMapping 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 andMapping Additional Relations |
| AX API | In the accessibilityCustomContentAPI, expose as anAXCustomContent 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 accessibilityCustomContentAPI, expose as anAXCustomContent 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 | Not mapped* |
| Android | TBD |
| ARIA Specification | aria-disabled=true |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_UNAVAILABLEState: STATE_SYSTEM_UNAVAILABLE on all descendants withSTATE_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=copy,move,link,execute, orpopup |
|---|---|
| MSAA + IAccessible2 | Object Attribute:dropeffect:<value> |
| UIA | Property:AriaProperties.dropeffect:<value> |
| ATK/AT-SPI | Object Attribute:dropeffect:<value> |
| AX API | array AXDropEffects |
| 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-haspopup=true |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_HASPOPUPObject Attribute: haspopup:menu |
| UIA | Control Pattern:ExpandCollapseSee also:aria-expanded |
| ATK/AT-SPI | State:STATE_HAS_POPUPObject Attribute: haspopup:menu |
| AX API | Property:AXPopupValue:menuAction: AXShowMenu |
| Android | TBD |
| ARIA Specification | aria-haspopup=false |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_HASPOPUP not exposedObject Attribute: haspopup:false |
| UIA | Not mapped* |
| ATK/AT-SPI | Not mapped* |
| AX API | Not mapped* |
| Android | TBD |
| ARIA Specification | aria-haspopup=dialog |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_HASPOPUPObject Attribute: haspopup:dialog |
| UIA | Control Pattern:ExpandCollapseSee also: aria-expanded |
| ATK/AT-SPI | State:STATE_HAS_POPUPObject Attribute: haspopup:dialog |
| AX API | Property:AXPopupValue:dialogAction: AXShowMenu |
| Android | TBD |
| ARIA Specification | aria-haspopup=grid |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_HASPOPUPObject Attribute: haspopup:grid |
| UIA | Control Pattern:ExpandCollapseSee also: aria-expanded |
| ATK/AT-SPI | State:STATE_HAS_POPUPObject Attribute: haspopup:grid |
| AX API | Property:AXPopupValue:gridAction: AXShowMenu |
| Android | TBD |
| ARIA Specification | aria-haspopup=listbox |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_HASPOPUPObject Attribute: haspopup:listbox |
| UIA | Control Pattern:ExpandCollapseSee also: aria-expanded |
| ATK/AT-SPI | State:STATE_HAS_POPUPObject Attribute: haspopup:listbox |
| AX API | Property:AXPopupValue:listboxAction: AXShowMenu |
| Android | TBD |
| ARIA Specification | aria-haspopup=menu |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_HASPOPUPObject Attribute: haspopup:menu |
| UIA | Control Pattern:ExpandCollapseSee also: aria-expanded |
| ATK/AT-SPI | State:STATE_HAS_POPUPObject Attribute: haspopup:menu |
| AX API | Property:AXPopupValue:menuAction: AXShowMenu |
| Android | TBD |
| ARIA Specification | aria-haspopup=tree |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_HASPOPUPObject Attribute: haspopup:tree |
| UIA | Control Pattern:ExpandCollapseSee also: aria-expanded |
| ATK/AT-SPI | State:STATE_HAS_POPUPObject Attribute: haspopup:tree |
| AX API | Property:AXPopupValue:treeAction: AXShowMenu |
| Android | TBD |
| ARIA Specification | aria-hidden=true on unfocused element |
|---|---|
| MSAA + IAccessible2 | ElementSHOULD NOT be exposed See also:Including Elements in the Accessibility Tree in theWAI-ARIA specification |
| UIA | ElementSHOULD NOT be exposed See also:Including Elements in the Accessibility Tree in theWAI-ARIA specification |
| ATK/AT-SPI | ElementSHOULD NOT be exposed See also:Including Elements in the Accessibility Tree in theWAI-ARIA specification |
| AX API | ElementSHOULD NOT be exposed See also:Including Elements in the Accessibility Tree in theWAI-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 theWAI-ARIA specification |
| UIA | Property:AriaProperties.hidden:trueSee also:Including Elements in the Accessibility Tree in theWAI-ARIA specification |
| ATK/AT-SPI | Object Attribute:hidden:trueSee also:Including Elements in the Accessibility Tree in theWAI-ARIA specification |
| AX API | Not mapped See also:Including Elements in the Accessibility Tree in theWAI-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 orgrammar |
|---|---|
| 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 andMapping 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 elementSee also:Name Computation andMapping Additional Relations |
| AX API | Property:AXTitle:<value>Property: AXTitleUIElement points to accessible node matching IDREF, if there is a single referenced element that is in the accessibility treeSee also:Name Computation |
| Android | TBD |
| ARIA Specification | aria-level on non-heading |
|---|---|
| MSAA + IAccessible2 | Object Attribute:level:<value>Method: IAccessible2::groupPosition():groupLevel=<value> on roles that supportaria-posinset andaria-setsizeSee also: groupPosition() |
| UIA | Property:AriaProperties.level:<value> |
| ATK/AT-SPI | Object Attribute:level:<value> |
| AX API | Property:AXDisclosureLevel:<value> (zero-based), when used on an outline row (like atreeitem orgroup) |
| Android | TBD |
| ARIA Specification | aria-level onheading |
|---|---|
| MSAA + IAccessible2 | Object Attribute:level:<value> |
| UIA | Property:AriaProperties.level:<value>Property: StyleId_Heading:<value> |
| ATK/AT-SPI | Object Attribute:level:<value> |
| AX API | Property:AXValue:<value> |
| Android | TBD |
| ARIA Specification | aria-live=assertive |
|---|---|
| MSAA + IAccessible2 | Object Attribute:live:assertiveObject Attribute: container-live:assertiveObject Attribute: container-live:assertive on all descendantsSee also:Changes to document content or node visibility |
| UIA | Property::"assertive"See also:Changes to document content or node visibility |
| ATK/AT-SPI | Object Attribute:live:assertiveObject Attribute: container-live:assertiveObject Attribute: container-live:assertive on all descendantsSee also:Changes to document content or node visibility |
| AX API | Property:AXARIALive:"assertive"See also:Changes to document content or node visibility |
| Android | TBD |
| ARIA Specification | aria-live=polite |
|---|---|
| MSAA + IAccessible2 | Object Attribute:live:politeObject Attribute: container-live:politeObject Attribute: container-live:polite on all descendantsSee also:Changes to document content or node visibility |
| UIA | Property::"polite"See also:Changes to document content or node visibility |
| ATK/AT-SPI | Object Attribute:live:politeObject Attribute: container-live:politeObject Attribute: container-live:polite on all descendantsSee also:Changes to document content or node visibility |
| AX API | Property:AXARIALive:"polite"See also:Changes to document content or node visibility |
| Android | TBD |
| ARIA Specification | aria-live=off |
|---|---|
| MSAA + IAccessible2 | Object Attribute:live:offObject Attribute: container-live:offObject Attribute: container-live:off on all descendants |
| UIA | Property::"off" |
| ATK/AT-SPI | Object Attribute:live:offObject Attribute: container-live:offObject Attribute: container-live:off on all descendants |
| AX API | Property:AXARIALive:"off" |
| Android | TBD |
| ARIA Specification | aria-modal=true |
|---|---|
| MSAA + IAccessible2 | State:IA2_STATE_MODAL |
| UIA | Property:Window.IsModal:true |
| ATK/AT-SPI | State:STATE_MODAL |
| AX API | Prune the accessibility tree such that the background content is no longer exposed. No specific property is set on theaccessible object that corresponds to theelement witharia-modal="true". Only the tree whose root is that modal accessible object is exposed. |
| Android | TBD |
| ARIA Specification | aria-modal=false |
|---|---|
| MSAA + IAccessible2 | State:IA2_STATE_MODAL not exposed |
| UIA | Property:Window.IsModal:false |
| ATK/AT-SPI | State:STATE_MODAL not exposed |
| AX API | Grow the accessibility tree such that the background content is exposed. No specific property is set on theaccessible object that corresponds to theelement witharia-modal="false". |
| Android | TBD |
| ARIA Specification | aria-multiline=true |
|---|---|
| MSAA + IAccessible2 | State:IA2_STATE_MULTI_LINEState: IA2_STATE_SINGLE_LINE not exposed |
| UIA | Property:AriaProperties.multiline:true |
| ATK/AT-SPI | State:STATE_MULTI_LINEState: STATE_SINGLE_LINE not exposed |
| AX API | Not mapped See also: textbox in the Role Mapping Tables |
| Android | TBD |
| ARIA Specification | aria-multiline=false |
|---|---|
| MSAA + IAccessible2 | State:IA2_STATE_SINGLE_LINEState: IA2_STATE_MULTI_LINE not exposed |
| UIA | Not mapped |
| ATK/AT-SPI | State:STATE_SINGLE_LINEState: STATE_MULTI_LINE not exposed |
| AX API | Not mapped See also: textbox in the Role Mapping Tables |
| Android | TBD |
| ARIA Specification | aria-multiselectable=true |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_MULTISELECTABLEState: STATE_SYSTEM_EXTSELECTABLESee also:Selection for details on accessibility events |
| UIA | Property:Selection.CanSelectMultiple:trueSee also:Selection for details on accessibility events |
| ATK/AT-SPI | State:STATE_MULTISELECTABLESee also:Selection for details on accessibility events |
| AX API | Property:AXIsMultiSelectable:YESSee also:Selection for details on accessibility events |
| Android | TBD |
| ARIA Specification | aria-multiselectable=false |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_MULTISELECTABLE not exposedState: STATE_SYSTEM_EXTSELECTABLE not exposedSee also:Selection for details on accessibility events |
| UIA | Not mapped* |
| ATK/AT-SPI | State:STATE_MULTISELECTABLE not exposed |
| AX API | Not mapped* |
| Android | TBD |
| ARIA Specification | aria-orientation=horizontal |
|---|---|
| MSAA + IAccessible2 | State:IA2_STATE_HORIZONTALState: IA2_STATE_VERTICAL not exposed |
| UIA | Property:Orientation:horizontal |
| ATK/AT-SPI | State:STATE_HORIZONTALState: STATE_VERTICAL not exposed |
| AX API | Property:AXOrientation:AXHorizontalOrientation |
| Android | TBD |
| ARIA Specification | aria-orientation=vertical |
|---|---|
| MSAA + IAccessible2 | State:IA2_STATE_VERTICALState: IA2_STATE_HORIZONTAL not exposed |
| UIA | Property:Orientation:vertical |
| ATK/AT-SPI | State:STATE_VERTICALState: STATE_HORIZONTAL not exposed |
| AX API | Property:AXOrientation:AXVerticalOrientation |
| Android | TBD |
| ARIA Specification | aria-orientation is undefined |
|---|---|
| MSAA + IAccessible2 | Not mapped* |
| UIA | Not mapped* |
| ATK/AT-SPI | State:STATE_VERTICAL not exposedState: STATE_HORIZONTAL not exposed |
| AX API | Property:AXOrientation:AXUnknownOrientation |
| Android | TBD |
| ARIA Specification | aria-owns |
|---|---|
| MSAA + IAccessible2 | User agentsMAY expose the elements that are referenced by this property as children of the current element. In which case, if multiple IA2_RELATION_NODE_PARENT_OF points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: IA2_RELATION_NODE_CHILD_OF points to elementSee also:Mapping Additional Relations |
| UIA | Expose the elements that are referenced by this property as children of the current element. If multiplearia-owns relationships are found, use only the first one. |
| ATK/AT-SPI | User agentsMAY expose the elements that are referenced by this property as children of the current element. In which case, if multiple RELATION_NODE_PARENT_OF points to accessible nodes matching IDREFs, if the referenced objects are in the accessibility treeReverse Relation: RELATION_NODE_CHILD_OF points to elementSee also:Mapping Additional Relations |
| AX API | Property:AXOwns: pointers to accessible nodes matching IDREFs |
| Android | TBD |
| ARIA Specification | aria-placeholder |
|---|---|
| MSAA + IAccessible2 | Object Attribute:placeholder-text:<value> |
| UIA | Property:HelpText:<value> |
| ATK/AT-SPI | Object Attribute:placeholder-text:<value> |
| AX API | Property:AXPlaceholderValue:<value> |
| Android | TBD |
| ARIA Specification | aria-posinset |
|---|---|
| MSAA + IAccessible2 | Object Attribute:posinset:<value>See also:Group Position |
| UIA | Property:AriaProperties.posinset:<value>See also:Group Position |
| ATK/AT-SPI | Object Attribute:posinset:<value>See also:Group Position |
| AX API | Property:AXARIAPosInSet:<value>See also:Group Position |
| Android | TBD |
| ARIA Specification | aria-pressed=true |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_PRESSEDSee also: button with defined value foraria-pressed |
| UIA | Property:Toggle.ToggleState:On (1) |
| ATK/AT-SPI | State:STATE_PRESSEDSee also: button with defined value foraria-pressed |
| AX API | Property:AXValue:1See also: button with defined value foraria-pressed |
| Android | TBD |
| ARIA Specification | aria-pressed=mixed |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_MIXEDSee also: button with defined value foraria-pressed |
| UIA | Property:Toggle.ToggleState:Indeterminate (2) |
| ATK/AT-SPI | State:STATE_INDETERMINATESee also: button with defined value foraria-pressed |
| AX API | Property:AXValue:2See also: button with defined value foraria-pressed |
| Android | TBD |
| ARIA Specification | aria-pressed=false |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_PRESSED not exposedSee also: button with defined value foraria-pressed |
| UIA | Property:Toggle.ToggleState:Off (3) |
| ATK/AT-SPI | State:STATE_PRESSED not exposedSee also: button with defined value foraria-pressed |
| AX API | Property:AXValue:0See also: button with defined value foraria-pressed |
| Android | TBD |
| ARIA Specification | aria-pressed is undefined |
|---|---|
| MSAA + IAccessible2 | Not mapped* |
| UIA | Not mapped* |
| ATK/AT-SPI | Not mapped* |
| AX API | Not mapped* |
| Android | TBD |
| ARIA Specification | aria-readonly=true |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_READONLY |
| UIA | Property:Value.IsReadOnly:true, if the element implementsIValueProvider.Property: RangeValue.IsReadOnly:true, if the element implementsIRangeValueProvider.Property: AriaProperties.readonly:true |
| ATK/AT-SPI | State:STATE_READ_ONLYState: STATE_EDITABLE not exposed on text input rolesState: STATE_CHECKABLE not exposed on roles supportingaria-checkedState: STATE_CHECKABLE not exposed onradio descendants when used on aradiogroup |
| AX API | Method:AXUIElementIsAttributeSettable(AXValue):NO |
| Android | TBD |
| ARIA Specification | aria-readonly=false |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_READONLY not exposedState: IA2_STATE_EDITABLE |
| UIA | Property:Value.IsReadOnly:false, if the element implementsIValueProvider.Property: RangeValue.IsReadOnly:false, if the element implementsIRangeValueProvider.Property: AriaProperties.readonly:false |
| ATK/AT-SPI | State:STATE_READ_ONLY not exposed |
| AX API | Method:AXUIElementIsAttributeSettable(AXValue):YES |
| Android | TBD |
| ARIA Specification | aria-readonly is unspecified ongridcell |
|---|---|
| MSAA + IAccessible2 | ThegridcellMUST inherit any author-provided value foraria-readonly from the containinggrid ortreegrid. Expose the inherited value on thegridcell as described foraria-readonly="true" andaria-readonly="false". |
| UIA | ThegridcellMUST inherit any author-provided value foraria-readonly from the containinggrid ortreegrid. Expose the inherited value on thegridcell as described foraria-readonly="true" andaria-readonly="false". |
| ATK/AT-SPI | ThegridcellMUST inherit any author-provided value foraria-readonly from the containinggrid ortreegrid. Expose the inherited value on thegridcell as described foraria-readonly="true" andaria-readonly="false". |
| AX API | ThegridcellMUST inherit any author-provided value foraria-readonly from the containinggrid ortreegrid. Expose the inherited value on thegridcell as described foraria-readonly="true" andaria-readonly="false". |
| Android | TBD |
| ARIA Specification | aria-relevant |
|---|---|
| MSAA + IAccessible2 | Object Attribute:relevant:<value>Object Attribute: container-relevant:<value>Object Attribute: container-relevant:<value> on all descendantsSee also:Changes to document content or node visibility |
| UIA | Property:AriaProperties.relevant:<value>See also:Changes to document content or node visibility |
| ATK/AT-SPI | Object Attribute:relevant:<value>Object Attribute: container-relevant:<value>Object Attribute: container-relevant:<value> on all descendantsSee also:Changes to document content or node visibility |
| AX API | Property:AXARIARelevant:<value>See also:Changes to document content or node visibility |
| Android | TBD |
| ARIA Specification | aria-required=true |
|---|---|
| MSAA + IAccessible2 | State:IA2_STATE_REQUIRED |
| UIA | Property:IsRequiredForForm:true |
| ATK/AT-SPI | State:STATE_REQUIRED |
| AX API | Property:AXRequired:YES |
| Android | TBD |
| ARIA Specification | aria-required=false |
|---|---|
| MSAA + IAccessible2 | Not mapped* |
| UIA | Not mapped* |
| ATK/AT-SPI | Not mapped* |
| AX API | Not mapped* |
| Android | TBD |
| ARIA Specification | aria-roledescription |
|---|---|
| MSAA + IAccessible2 | Method:localizedExtendedRole():<value> |
| UIA | Localized Control Type:<value> |
| ATK/AT-SPI | Object Attribute:roledescription:<value> |
| AX API | Property:AXRoleDescription:<value> |
| Android | TBD |
| ARIA Specification | aria-roledescription is undefined or the empty string |
|---|---|
| MSAA + IAccessible2 | Not mapped |
| UIA | Localized Control Type is defined as that specified for the role of the element: based on the explicit role if the role attribute is provided; otherwise, based on the implicit role for the host language. |
| ATK/AT-SPI | Not mapped |
| AX API | AXRoleDescription is defined as that specified for the role of the element: based on the explicit role if the role attribute is provided; otherwise, based on the implicit role for the host language. |
| Android | TBD |
| ARIA Specification | aria-rowcount |
|---|---|
| MSAA + IAccessible2 | Object Attribute:rowcount:<value>Method: IAccessible2::groupPosition():similarItemsInGroup=<value> on rows |
| UIA | Property:Grid.RowCount:<value> |
| ATK/AT-SPI | Object Attribute:rowcount should contain the author-provided value.Method: atk_table_get_n_rows() should return the actual number of rows. |
| AX API | Property:AXARIARowCount:<value> |
| Android | TBD |
| ARIA Specification | aria-rowindex |
|---|---|
| MSAA + IAccessible2 | Object Attribute:rowindex:<value>Method: IAccessible2::groupPosition():positionInGroup=<value> on rows |
| UIA | Property:GridItem.Row:<value> (zero-based) |
| ATK/AT-SPI | Object Attribute:rowindex should contain the author-provided value.Method: atk_table_cell_get_position() should return the actual (zero-based) row index. |
| AX API | Property:AXARIARowIndex:<value> |
| Android | TBD |
| ARIA Specification | aria-rowindextext |
|---|---|
| MSAA + IAccessible2 | Object Attribute:rowindextext:<value> |
| UIA | Property:AriaProperties.rowindextext:<value> |
| ATK/AT-SPI | Object Attribute:rowindextext:<value> |
| AX API | Property:AXRowIndexDescription:<value> |
| Android | TBD |
| ARIA Specification | aria-rowspan |
|---|---|
| MSAA + IAccessible2 | Object Attribute:rowspan:<value>Method: IAccessibleTableCell::rowExtent():column=<value> |
| UIA | Property:GridItem.RowSpan:<value> |
| ATK/AT-SPI | Object Attribute:rowspan should contain the author-provided value.Method: atk_table_cell_get_row_column_span() should return the actual row span. |
| AX API | Property:AXRowIndexRange.length:<value> |
| Android | TBD |
| ARIA Specification | aria-selected=true |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_SELECTABLEState: STATE_SYSTEM_SELECTEDSee also:Selection for details on accessibility events |
| UIA | Property:SelectionItem.IsSelected:true |
| ATK/AT-SPI | State:STATE_SELECTABLEState: STATE_SELECTEDSee also:Selection for details on accessibility events |
| AX API | Property:AXSelected:YES |
| Android | TBD |
| ARIA Specification | aria-selected=false |
|---|---|
| MSAA + IAccessible2 | State:STATE_SYSTEM_SELECTABLEState: STATE_SYSTEM_SELECTED not exposedSee also:Selection for details on accessibility events |
| UIA | Property:SelectionItem.IsSelected:false |
| ATK/AT-SPI | State:STATE_SELECTABLEState: STATE_SELECTED not exposedSee also:Selection for details on accessibility events |
| AX API | Property:AXSelected:NO |
| Android | TBD |
| ARIA Specification | aria-selected is undefined |
|---|---|
| MSAA + IAccessible2 | Not mapped |
| UIA | Not mapped |
| ATK/AT-SPI | Not mapped |
| AX API | Not mapped |
| Android | TBD |
| ARIA Specification | aria-setsize |
|---|---|
| MSAA + IAccessible2 | Object Attribute:setsize:<value>See also:Group Position |
| UIA | Property:AriaProperties.setsize:<value>See also:Group Position |
| ATK/AT-SPI | If the author-provided value of setsize:<value>State: STATE_INDETERMINATE if the author-provided value is-1See also:Group Position |
| AX API | Property:AXARIASetSize:<value>See also:Group Position |
| Android | TBD |
| ARIA Specification | aria-sort=ascending |
|---|---|
| MSAA + IAccessible2 | Object Attribute:sort:ascending |
| UIA | Property:AriaProperties.sort:ascendingProperty: ItemStatus:ascending if the element maps toHeaderItem Control Type |
| ATK/AT-SPI | Object Attribute:sort:ascending |
| AX API | Property:AXSortDirection:AXAscendingSortDirection |
| Android | TBD |
| ARIA Specification | aria-sort=descending |
|---|---|
| MSAA + IAccessible2 | Object Attribute:sort:descending |
| UIA | Property:AriaProperties.sort:descendingProperty: ItemStatus:descending if the element maps toHeaderItem Control Type |
| ATK/AT-SPI | Object Attribute:sort:descending |
| AX API | Property:AXSortDirection:AXDescendingSortDirection |
| Android | TBD |
| ARIA Specification | aria-sort=other |
|---|---|
| MSAA + IAccessible2 | Object Attribute:sort:other |
| UIA | Property:AriaProperties.sort:otherProperty: ItemStatus:other if the element maps toHeaderItem Control Type |
| ATK/AT-SPI | Object Attribute:sort:other |
| AX API | Property:AXSortDirection:AXUnknownSortDirection |
| Android | TBD |
| ARIA Specification | aria-sort=none |
|---|---|
| MSAA + IAccessible2 | Object Attribute:sort:none, if the value is not unspecified |
| UIA | Not mapped* |
| ATK/AT-SPI | Object Attribute:sort:none, if the value is not unspecified |
| AX API | Not mapped* |
| Android | TBD |
| ARIA Specification | aria-valuemax |
|---|---|
| MSAA + IAccessible2 | Method:IAccessibleValue::maximumValue():<value>See also:Handling Author Errors for States and Properties |
| UIA | Property:RangeValue.Maximum:<value>See also:Handling Author Errors for States and Properties |
| ATK/AT-SPI | Method:atk_value_get_maximum_value():<value>See also:Handling Author Errors for States and Properties |
| AX API | Property:AXMaxValue:<value>See also:Handling Author Errors for States and Properties |
| Android | TBD |
| ARIA Specification | aria-valuemin |
|---|---|
| MSAA + IAccessible2 | Method:IAccessibleValue::minimumValue():<value>See also:Handling Author Errors for States and Properties |
| UIA | Property:RangeValue.Minimum:<value>See also:Handling Author Errors for States and Properties |
| ATK/AT-SPI | Method:atk_value_get_minimum_value():<value>See also:Handling Author Errors for States and Properties |
| AX API | Property:AXMinValue:<value>See also:Handling Author Errors for States and Properties |
| Android | TBD |
| ARIA Specification | aria-valuenow |
|---|---|
| MSAA + IAccessible2 | Method:IAccessibleValue::currentValue():<value>Method: IAccessible::get_accValue():<value> ifaria-valuetext is not definedSee also:Handling Author Errors for States and Properties |
| UIA | Property:RangeValue.Value:<value>See also:Handling Author Errors for States and Properties |
| ATK/AT-SPI | Method:atk_value_get_current_value():<value>See also:Handling Author Errors for States and Properties |
| AX API | Property:AXValue:<value>See also:Handling Author Errors for States and Properties |
| Android | TBD |
| ARIA Specification | aria-valuetext |
|---|---|
| MSAA + IAccessible2 | Method:IAccessible::get_accValue():<value>Object Attribute: valuetext:<value>See also:Handling Author Errors for States and Properties |
| UIA | Property:Value.Value:<value>See also:Handling Author Errors for States and Properties |
| ATK/AT-SPI | Object Attribute:valuetext:<value>See also:Handling Author Errors for States and Properties |
| AX API | Property:AXValueDescription:<value>See also:Handling Author Errors for States and Properties |
| Android | TBD |
For information on how to compute anaccessible name oraccessible description, see the section titledAccessible Name and Description Computation of theAccessible Name and Description Computation specification.
Often in aGUI, there arerelationships between thewidgets that can be exposed programmatically toassistive technology.WAI-ARIA provides several relationshipproperties which are globally applicable to anyelement:aria-controls,aria-describedby,aria-flowto,aria-labelledby,aria-owns,aria-posinset, andaria-setsize. Therefore, it is not important to check therole before computing them.User agents can simply map these relations toaccessibilityAPIs as defined in the section titledState and Property Mapping.
A reverse relation exists when an element's ID is referenced by aproperty in anotherelement. ForAPIs that support reverse relations,user agentsMUST use the mapping defined in theState and Property Mapping Tables when an element's ID is referenced by a relation property of another element and the referenced element is in the accessibility tree. AllWAI-ARIA references must point to an element that is exposed as an accessible object in the accessibility tree. When the referenced object is not exposed in the accessibility tree (e.g. because it ishidden), the reference is null.aria-labelledby andaria-describedby have an additional feature, which allows them to pull a flattened string from the referenced element to populate the name or description fields of the accessibilityAPI. This feature is described in theName and Description section.
Special case: If botharia-labelledby andHTML<label for= … > are used, the user agentMUST use theWAI-ARIA relation andMUST ignore theHTML label relation.
Note thataria-describedby may reference structured or interactive information where users would want to be able to navigate to different sections of content. User agentsMAY provide a way for the user to navigate to structured information referenced byaria-describedby andassistive technologySHOULD provide such a method.
In addition to the explicit relations defined byWAI-ARIAproperties, reverse relations are implied in two other situations:elements withrole="treeitem" where the ancestor does not have anaria-owns property and descendants of elements witharia-atomic property.
In the case ofrole="treeitem", whenaria-owns is not used,user agentsSHOULD do the following where reverse relations are supported by theAPI:
treeitem usesaria-level, then walk backwards in the tree until atreeitem is found with a loweraria-level, then setRELATION_NODE_CHILD_OF to that element. If the top of the tree is reached, then setRELATION_NODE_CHILD_OF to the tree element itself.treeitem has arole ofgroup, then walk backwards from thegroup until an element with a role oftreeitem is found, then setRELATION_NODE_CHILD_OF to that element. In the case ofaria-atomic, where reverse relations are supported by theAPI:
aria-atomic="true". If found, user agentsSHOULD set theRELATION_MEMBER_OF relation to point to the ancestor that setsaria-atomic="true".aria-level,aria-posinset, andaria-setsize are all 1-based. When theproperty is not present or is "0", it indicates the property is not computed or not supported. If any of these properties are specified by the author as either "0" or a negative number,user agentsSHOULD use "1" instead.
Ifaria-level is not provided or inherited for an element ofroletreeitem orcomment, user agents implementing IAccessible2 orATK/AT-SPIMUST compute it by following the explicit or computedRELATION_NODE_CHILD_OF relations.
Ifaria-posinset andaria-setsize are not provided, user agentsMUST compute them as follows:
role="treeitem" androle="comment", walk the tree backward and forward until the explicit or computed level becomes less than the current item's level. Count items only if they are at the same level as the current item.aria-posinset andaria-setsize, process the parent (DOM parent or parent defined byaria-owns), counting items that have the same role.aria-posinset, include the current item and other group items if they are before the current item in theDOM. Foraria-setsize, add to that the number of items in the same group after the current item in theDOM. If the author provides one or more ofaria-setsize andaria-posinset, it is the author's responsibility to supply them for all elements in the set.User agent correction of missing values in this case is not defined.
MSAA/IAccessible2API mappings involve an additional function,groupPosition() [IAccessible2], whenaria-level,aria-posinset, and/oraria-setsize are present on an element, or are computed by the user agent. When this occurs:
aria-level is exposed in thegroupLevel parameter ofgroupPosition(),aria-setsize is exposed in thesimilarItemsInGroup parameter, andaria-posinset is exposed in thepositionInGroup parameter.As part of mapping roles to accessible objects as defined inRole Mapping, users agents expose a default action on the object.
DoDefaultAction on an accessible object, the user agentSHOULD simulate a click on theDOM element which is mapped to that accessible object.IAccessibleAction on an accessible object, the user agentSHOULD simulate a click on theDOM element which is mapped to that accessible object.AXPress action on an accessible object, the user agentSHOULD simulate a click on theDOM element which is mapped to that accessible object.Authors will need to create handlers for those click events that updateWAI-ARIA states and properties in theDOM accordingly, so that those updated states can be populated by the user agent in the AccessibilityAPI.
User agents fireevents for user actions,WAI-ARIAstate changes, changes to document content or node visibility, changes in selection and operation of menus as defined in the following sections.
User agentsMUST notifyassistive technology ofstate changes as defined in the table below,SHOULD notify assistive technology ofproperty changes if theaccessibilityAPI defines a changeevent for the property, andSHOULD NOT notify assistive technology of property changes if the accessibilityAPI does not define a change event for the property. For example, IAccessible2 defines an event to be used whenaria-activedescendant changes.WAI-ARIA properties that are expected to change includearia-activedescendant,aria-valuenow, andaria-valuetext.
For simplicity and performance the user agentMAY trim out change events for state or property changes thatassistive technologies typically ignore, such as events that are happening in a window that does not currently have focus.
Translators: For label text associated with the following table and its toggle buttons, see themappingTableLabels object in the<head> section of this document.
| ARIA Specification | aria-activedescendant |
|---|---|
| MSAA + IAccessible2 event | SeeFocus Changes. In addition:
|
| UIA event | SeeFocus Changes. In addition:
Property: |
| ATK/AT-SPI event | SeeFocus Changes. |
| AX API Notification | SeeFocus Changes. In addition: |
| Android | TBD |
| ARIA Specification | aria-busy (state) |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_STATECHANGE |
| UIA event | PropertyChangedEventProperty: |
| ATK/AT-SPI event | object:state-changed:busy |
| AX API Notification | AXElementBusyChanged |
| Android | TBD |
| ARIA Specification | aria-checked (state) |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_STATECHANGE |
| UIA event | PropertyChangedEventProperties: |
| ATK/AT-SPI event | object:state-changed:checked |
| AX API Notification | AXValueChanged |
| Android | TBD |
| ARIA Specification | aria-current (state) |
|---|---|
| MSAA + IAccessible2 event | IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED |
| UIA event | PropertyChangedEventProperty: |
| ATK/AT-SPI event | object:state-changed:active |
| AX API Notification | AXCurrentStateChanged |
| Android | TBD |
| ARIA Specification | aria-disabled (state) |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_STATECHANGE |
| UIA event | PropertyChangedEventProperties: |
| ATK/AT-SPI event | object:state-changed:enabled andobject:state-changed:sensitive |
| AX API Notification | AXDisabledStateChanged |
| Android | TBD |
| ARIA Specification | aria-describedby |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_DESCRIPTIONCHANGE |
| UIA event | PropertyChangedEventProperties: |
| ATK/AT-SPI event | object:property-change:accessible-description |
| AX API Notification | AXDescribedByChanged |
| Android | TBD |
| ARIA Specification | aria-dropeffect (property, deprecated) |
|---|---|
| MSAA + IAccessible2 event | IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED |
| UIA event | PropertyChangedEventProperty: |
| ATK/AT-SPI event | object:property-change |
| AX API Notification | AXDropEffectChanged |
| Android | TBD |
| ARIA Specification | aria-expanded (state) |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_STATECHANGE |
| UIA event | PropertyChangedEventProperties: |
| ATK/AT-SPI event | object:state-changed:expanded |
| AX API Notification | AXRowExpanded,AXRowCollapsed,AXRowCountChanged |
| Android | TBD |
| ARIA Specification | aria-grabbed (state, deprecated) |
|---|---|
| MSAA + IAccessible2 event |
|
| UIA event | PropertyChangedEventProperty: |
| ATK/AT-SPI event | object:property-change |
| AX API Notification | AXGrabbedStateChanged |
| Android | TBD |
| ARIA Specification | aria-hidden (state) |
|---|---|
| MSAA + IAccessible2 event | IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED |
| UIA event | StructureChangedEvent
Property: |
| ATK/AT-SPI event | object:property-change |
| AX API Notification | AXUIElementDestroyed,AXUIElementCreated |
| Android | TBD |
| ARIA Specification | aria-invalid (state) |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_STATECHANGE |
| UIA event | PropertyChangedEventProperties: |
| ATK/AT-SPI event | object:state-changed:invalid_entry |
| AX API Notification | AXInvalidStatusChanged |
| Android | TBD |
| ARIA Specification | aria-label andaria-labelledby |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_NAMECHANGE |
| UIA event | PropertyChangedEventProperty for Property for |
| ATK/AT-SPI event | object:property-change:accessible-name |
| AX API Notification | AXLabelCreated |
| Android | TBD |
| ARIA Specification | aria-pressed (state) |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_STATECHANGE |
| UIA event | PropertyChangedEventProperties: |
| ATK/AT-SPI event | object:state-changed:pressed |
| AX API Notification | AXPressedStateChanged |
| Android | TBD |
| ARIA Specification | aria-readonly |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_STATECHANGE |
| UIA event | PropertyChangedEventProperty: |
| ATK/AT-SPI event | object:state-changed:readonly |
| AX API Notification | AXReadOnlyStatusChanged |
| Android | TBD |
| ARIA Specification | aria-required |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_STATECHANGE |
| UIA event | PropertyChangedEventProperties: |
| ATK/AT-SPI event | object:state-changed:required |
| AX API Notification | AXRequiredStatusChanged |
| Android | TBD |
| ARIA Specification | aria-selected (state) |
|---|---|
| MSAA + IAccessible2 event | See sectionSelection for details. |
| UIA event | See sectionSelection for details. |
| ATK/AT-SPI event | See sectionSelection for details. |
| AX API Notification | See sectionSelection for details. |
| Android | TBD |
| ARIA Specification | aria-valuenow |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_VALUECHANGE |
| UIA event | PropertyChangedEventProperties: |
| ATK/AT-SPI event | object:property-change:accessible-value |
| AX API Notification | AXValueChanged |
| Android | TBD |
| ARIA Specification | aria-valuetext |
|---|---|
| MSAA + IAccessible2 event | EVENT_OBJECT_VALUECHANGE |
| UIA event | PropertyChangedEventProperty: |
| ATK/AT-SPI event | object:property-change:accessible-value |
| AX API Notification | AXValueChanged |
| Android | TBD |
Processing document changes is important regardless ofWAI-ARIA. The events described in the table below are used by user agents to informAT of changes to theDOM via the accessibility tree. For the purposes of conformance with this standard,user agentsMUST implement the behavior described in this section wheneverWAI-ARIA attributes are applied to dynamic content on a Web page.
| Scenario | MSAA + IAccessible2 event | UIA event | ATK/AT-SPI event | AX API Notification |
|---|---|---|---|---|
| When text is removed | IA2_EVENT_TEXT_REMOVED | EVENT_OBJECT_LIVEREGIONCHANGED | text_changed::delete | If in alive region,AXLiveRegionChanged.If in aria-errormessage,AXValidationErrorChanged. |
| When text is inserted | IA2_EVENT_TEXT_INSERTED | EVENT_OBJECT_LIVEREGIONCHANGED | text_changed::insert | If in alive region,AXLiveRegionChanged.If in aria-errormessage,AXValidationErrorChanged. |
| When text is changed | IA2_EVENT_TEXT_REMOVE andIA2_EVENT_TEXT_INSERTED | EVENT_OBJECT_LIVEREGIONCHANGED | text_changed::delete andtext_changed::insert | If in alive region,AXLiveRegionChanged.If in aria-errormessage,AXValidationErrorChanged. |
Fire the following events for node changes where the node in question is an element and has anaccessible object. Theaccessibility subtree of a node is itsaccessible object in theaccessibility tree and all of it'saccessibility descendants. It does not include objects which have relationships other than parent-child in that tree. For example, it does not include objects linked viaaria-flowto unless those objects are also descendants in theaccessibility tree.
| Scenario | MSAA | MicrosoftUIA event | ATK/AT-SPI event | AX API Notification |
|---|---|---|---|---|
| When anaccessibility subtree ishidden | EVENT_OBJECT_HIDETheMSAA event called EVENT_OBJECT_DESTROY is not used because this has a history of stability issues and assistive technology avoids it. In any case, from the user's point of view, there is no difference between something that is hidden or destroyed. | AutomationElement..::.StructureChangedEvent | children_changed::remove |
If in a live region, |
| When an accessibility subtree is removed | EVENT_OBJECT_REORDERTheMSAA event called EVENT_OBJECT_DESTROY is not used because this has a history of stability issues and assistive technology avoids it. In any case, from the user's point of view, there is no difference between something that is hidden or destroyed. | AutomationElement..::.StructureChangedEvent | children_changed::remove |
If in a live region, |
| When an accessibility subtree is shown | EVENT_OBJECT_SHOW | children_changed::add |
If in a live region, | |
| When an accessibility subtree is inserted | EVENT_OBJECT_REORDER | children_changed::add |
If in a live region, | |
| When an accessibility subtree is moved | Treat it as a removal from one place and insertion in another | Treat it as a removal from one place and insertion in another | Treat it as a removal from one place and insertion in another |
If in a live region, |
| When an accessibility subtree is changed (e.g. replaceNode) | Treat it as a removal and insertion | Treat it as a removal and insertion | Treat it as a removal and insertion |
If in a live region, |
In some cases, node changes may occur where the node is not an element or has no accessible object. For example, a numbered list bullet ("12.") may have a node in the accessibility tree but not in theDOM tree. For text within a paragraph marked inHTML as<strong>, the<strong> element has a node in theDOM tree but may not have one in the accessibility tree. The text itself will of course be in the accessibility tree along with the identification of the range of text that is formatted as strong. If any of the changes described in the table above occur on such a node, user agentsSHOULD compute and fire relevant text change events as described above.
User agentsSHOULD ensure that an assistive technology, running in process can receive notification of a node being removed prior to removal. This allows an assistive technology, such as a screen reader, to refer back to the correspondingDOM node being deleted. This is important forlive regions where removals are important. For example, a screen reader would want to notify a user that another user has left a chat room. The event inMSAA would be EVENT_OBJECT_HIDE. ForATK/AT-SPI this would bechildren_changed::remove. And in macOS, the event isAXLiveRegionChanged. This also requires the user agent to provide a unique ID in theaccessibilityAPI notification identifying the unique node being removed.
When firing any of the above-mentioned change events, it is very useful to provide information about whether the change was caused by user input (as opposed to a timeout initiated from the page load, etc.). This allows the assistive technology to have different rules for presenting changes from the real world as opposed to from user action. Mouse hovers are not considered explicit user input because they can occur from accidental bumps of the mouse.
To expose whether a change occurred from user input:
event-from-user-input:true on the accessible object for the event, if the user caused the change.Exposing additional useful information about the context of the change:
RELATION_MEMBER_OF relation on the accessible event's target accessible objectSHOULD point to any ancestor witharia-atomic="true" (if any).container-live,container-relevant,container-busy,container-atomic object attributesSHOULD be exposed on the accessible event object, providing the computed value for the relatedWAI-ARIA properties. The computed value is the value of the closest ancestor. It is recommended to not expose the object attribute if the default value is used.AdditionalMSAA events may be necessary:
ROLE_SYSTEM_ALERT, then anEVENT_SYSTEM_ALERT eventSHOULD be fired for the alert. The alert role has an implied value of "assertive" for thearia-live property.The following table defines the accessibilityAPI keyboard focus states and events.
| MSAA | MicrosoftUIA | ATK/AT-SPI | AX API | |
|---|---|---|---|---|
| Focusable state | STATE_SYSTEM_FOCUSABLE | Current state reflected inIUIAutomationElement::CurrentIsKeyboardFocusable, can be retrieved withIUIAutomationElement::GetCurrentPropertyValue method usingUIA_IsKeyboardFocusablePropertyId property identifier. | STATE_FOCUSABLE | boolean AXFocused: theAXUIElementIsAttributeSettable method returnsYES. |
| Focused state | STATE_SYSTEM_FOCUSED | Current state reflected inIUIAutomationElement::CurrentHasKeyboardFocus, can be retrieved withIUIAutomationElement::GetCurrentPropertyValue method usingUIA_HasKeyboardFocusPropertyId property identifier. | STATE_FOCUSED | boolean AXFocused |
| Focus event | EVENT_OBJECT_FOCUS | Clients can subscribe withIUIAutomation::AddFocusChangedEventHandler using callback interface isIUIAutomationFocusChangedEventHandler | object:state-changed:focused and:
| AXFocusedUIElementChanged |
There are two cases for selection:
In the single selection case, selection follows focus (see the section "Focus States and Events Table" for information about focus events). User agentsMUST fire the following events whenaria-selected changes:
| Scenario | MSAA | MicrosoftUIA | ATK/AT-SPI | AX API |
|---|---|---|---|---|
| Focus change | EVENT_OBJECT_SELECTION andEVENT_OBJECT_STATECHANGE on newly focused item. | UIA_SelectionItem_ElementSelectedEventId on the newly focused element.If on a |
| AXSelectedChildrenChanged |
The multiple selection case occurs whenaria-multiselectable="true" on anelement with arole that supports thatproperty. User agentsMUST fire the following events whenaria-selected changes on a descendant, as follows:
The multiple selection case occurs whenaria-multiselectable="true" on anelement with arole that supports thatproperty. There are several important aspects:
Selection andSelectionItem Control Patterns expose the selection availability, state, and methods.aria-selected changes on a descendant, as follows:| Scenario | MSAA | MicrosoftUIA | ATK/AT-SPI | AX API |
|---|---|---|---|---|
Togglearia-selected | EVENT_OBJECT_SELECTIONADD/EVENT_OBJECT_SELECTIONREMOVE on the item. | SelectionItem Control Pattern:UIA_SelectionItem_ElementAddedToSelectionEventId orUIA_SelectionItem_ElementRemovedFromSelectionEventId on the item. |
| AXSelectedChildrenChanged |
| Selection follows focus | EVENT_OBJECT_SELECTION andEVENT_OBJECT_STATECHANGE on newly focused item. | FocusChangedEvent should be fired but individual selection event may not happen, to avoid redundancy. |
| AXSelectedChildrenChanged |
| Select or deselect many items at once | User agentMAY fire anEVENT_OBJECT_SELECTIONWITHIN. If this event is fired the other events noted aboveMAY be trimmed out for performance. | For each element selected or deselected, fireSelectionItem Control Pattern:UIA_SelectionItem_ElementAddedToSelectionEventId orUIA_SelectionItem_ElementRemovedFromSelectionEventId on the current container. User agentsMAY choose to fire the Selection Control Pattern Invalidated event, which indicates that the selection in a container has changed significantly and requires sending more addition and removal events than theInvalidateLimit constant permits. |
| AXSelectedChildrenChanged |
SomeAPIs, provide specialevents whenever a menu is opened or closed.User agentsSHOULD provide the events as described in the table below. If provided, because menus can be made visible orhidden using a variety of techniques, auser agentMUST ensure that the events are nested and symmetrical.
Frequently, amenubar is used to organize a hierarchy of menus. In those cases, the menubarMUST be aDOM parent of the associatedmenuitems, or one defined byaria-owns. In other cases, no menubar is involved; for example, when themenu is associated with a toolbar button, or is a context menu. Nonetheless the relevant menu events are provided as described in the following table.
| Scenario | MSAA | MicrosoftUIA | AX API |
|---|---|---|---|
Menubar is currently not active, and user moves focus to the menubar from elsewhere thereby activating it. As a result, a menuitem in the menubar is focused. | Activate the menubar and fireEVENT_SYSTEM_MENUSTART on the accessible object for the menubar. | MenuModeStartEvent on the accessible object for the menu. | AXMenuOpenedNotification |
Focus a menuitem while menubar is activated, or focus a menuitem in a menu. | EVENT_OBJECT_FOCUS | AutomationFocusChangedEvent | AXMenuItemSelectedNotification |
Menu popup made visible (menu is opened). Should only be fired once until the menu is closed and opened again. | EVENT_SYSTEM_MENUPOPUPSTART | MenuOpenedEvent, then afocus event on a menuitem. | AXMenuOpenedNotification |
| Menu popup hidden (menu is closed). | EVENT_SYSTEM_MENUPOPUPEND once only for accessible menu object and only ifEVENT_SYSTEM_MENUPOPUPSTART was fired for it. | MenuClosedEvent | AXMenuClosedNotification |
| Any open menus are closed including sub-menus, and user moves focus away from the menubar; menubar is deactivated. | EVENT_SYSTEM_MENUEND on the menubar and deactivate the menubar. | MenuClosedEvent, thenMenuModeEndEvent | AXMenuClosedNotification |
TheARIANotifyMixin provides a method for announcing content to assistive technologies. The following algorithm mappings specify how these announcements will be implemented across different accessibilityAPIs to ensure consistent behavior for users of assistive technologies.
Toaria notify givennode,announcement, andpriority:
| ARIA Specification | aria notify |
|---|---|
| Preconditions | Ifnode isexcluded from the accessibility tree, then abort these steps. |
| Language | User agents and assistive technologiesMUST determine the language of the announcement by taking the first valid BCP 47 language tag from the following sources:
Assistive technologiesMUST present the announcement using that language (for example, voice, pronunciation rules, braille table). |
| MSAA + IAccessible2 | No implementation specified (see fallback note). |
| UIA |
Note If the platform accessibility implementation determines thatnode is not represented in theUIAControl view orContent view, user agentsSHOULD instead raise the notification event on the nearest ancestor that is represented as aUIA Control. If no such ancestor exists, user agentsSHOULD raise it on the document root (which is expected to be in one of these views) to ensure assistive technologies that ignore events on elements not in the Control or Content view receive the notification. |
| ATK |
On older Linux accessibility stacks prior toATK 2.50.0, user agentsMAY use the fallback;see fallback note. |
| AT-SPI |
|
| AX API |
|
When no suitable platform notificationAPI is available (for example, older Linux accessibility stacks prior toATK 2.50.0 that lack the newer notification signal, or on Windows when the user agent is not able to useUIA), a user agentMAY synthesize a temporary, assistive-technology-only live region in its accessibility tree to convey anaria notify announcement. Such fallback nodes are not exposed to or detectable by web content and this behavior is not required.
In accordance withWeb Platform Design Principles, this specification provides no programmatic interface to determine if information is being used by Assistive Technologies. However, this specification does allow an author to present different information to users of Assistive Technologies from the information available to users who do not use Assistive Technologies. This is possible using many features of the ARIA and CORE-AAM specifications, just as this is possible using many other parts of the web technology stack. This content disparity could be abused to performactive fingerprinting of users of Assistive Technologies.
This specification introduces no new security considerations.
role=image (synonym ofimg)label andlegend.aria-colindex,aria-colspan,aria-colcount,aria-rowindex,aria-rowspan, andaria-rowcount.alert andalertdialog.comment,mark, andsuggestion roles. Includecomment in calculation foraria-label and group position.aria-description.strong andemphasis roles forAX API.code role forAX API.aria-colindextext andaria-rowindextext roles forATK, IA2, andUIA.strong andemphasis roles forATK, IA2, andUIA.code role forATK, IA2, andUIA.subscript andsuperscriptgeneric role.insertion anddeletion roles.legend role.label role.time role.subscript andsuperscript roles.meter role.aria-placeholder.blockquote,caption, andparagraph roles.AXTitle for exposing rendered labels for AXAPI.aria-label,aria-labelledby, andaria-describedby.This section is non-normative.
The following people contributed to the development of this document.
This publication has been funded in part with U.S. Federal funds from the Department of Education, National Institute on Disability, Independent Living, and Rehabilitation Research (NIDILRR), initially under contract number ED-OSE-10-C-0067, then under contract number HHSP23301500054C, and now under HHS75P00120P00168. The content of this publication does not necessarily reflect the views or policies of the U.S. Department of Education, nor does mention of trade names, commercial products, or organizations imply endorsement by the U.S. Government.