Abstract

This is draft documentation mapping HTML elements and attributes to accessibility API Roles, States and Properties on a variety of platforms. It provides recommendations on deriving the accessible names and descriptions for HTML elements. It also provides accessible feature implementation examples.

Status of This Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

This document is subject to change without notice.

This document was published by the HTML Working Group as a Working Draft. This document is intended to become a W3C Recommendation. If you wish to make comments regarding this document, please send them to public-html-comments@w3.org (subscribe, archives). All comments are welcome.

Publication as a Working Draft does not imply endorsement by the W3C Membership. 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 work in progress.

This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.

Table of Contents

1. Introduction: Accessibility APIs

This section is non-normative.

To provide access to desktop GUI applications, assistive technologies originally used heuristic techniques to determine the meaning of the user interface and built an alternative off screen model. For example, a row of labels displayed horizontally near the top of an application window might be a menu. Labels with a border drawn around them might be buttons. Heuristic techniques are not always accurate, however, and require assistive technologies to be updated whenever the software application is updated.

A much better technique is for the software application to provide the necessary information for interoperability with assistive technology. To meet this need, platform owners have developed specialized interfaces, called accessibility APIs, which can be used to communicate accessibility information about user interfaces to assistive technologies.

In the case of static Web pages, the Document Object Model (DOM) is used to represent the structure and state of the elements in the document being rendered by a user agent. The elements of the document are organized into a hierarchy of nodes known as the DOM tree. For traditional static Web pages, assistive technologies, such as screen readers, interact with user agents using the DOM. For UI elements that are known to be interactive, such as HTML form elements and desktop applications, assistive technologies may use platform accessibility APIs.

Accessibility APIs covered by this document are:

If User Agent developers need to expose to other accessibility APIs, it is recommended that they work closely with the developer of the platform where the API runs, and assistive technology developers on that platform.

2. Exposing HTML features that do not directly map to accessibility API properties

This section is non-normative.

HTML may have features that are not supported by accessibility APIs at the time of publication. There is not a one to one relationship between all features and platform accessibility APIs. When HTML roles, states and properties do not directly map to an accessibility API, and there is a method in the API to expose a text string, expose the undefined role, states and properties via that method.

IAccessible2 and ATK use object attributes to expose semantics that are not directly supported in the APIs. Object attributes are name-value pairs that are loosely specified, and very flexible for exposing things where there is no specific interface in an accessibility API. For example, at this time, the HTML5 header element can be exposed via an object attribute because accessibility APIs have no such role available.

For accessibility APIs that do not have "object attributes" per se, it is useful to find a similar mechanism or develop a new interface to expose name/value pairs. Under the Mac OS X Accessibility Protocol, all getters are already simply name-value pairs and it is possible to expose new semantics whenever necessary. Keep in mind, this also requires working with the assistive technology developers to gain support for the new semantics.

3. HTML Element to Accessibility API Role Mapping Matrix

Notes:

Mappings of HTML elements to platform accessibility APIs: ARIA, MSAA + UIA Express, MSAA + IAccessible2, UIA, ATK, and AX
HTML element HTML4 HTML5 WAI-ARIA MSAA + UIA Express MSAA + IAccessible2 UIA Control Type and Other Features AT-SPI AX
a (represents a hyperlink) Yes Yes link role
Role: ROLE_SYSTEM_LINK
States: STATE_SYSTEM_LINKED to link and all its descendants. If link is visited then STATE_SYSTEM_TRAVERSED.
Actions: "Jump" action on link and all its descendants.
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_LINK
States: STATE_SYSTEM_LINKED to link and all its descendants. If link is visited then STATE_SYSTEM_TRAVERSED.
Actions: "jump" action on link and all its descendants.
Interfaces: IAccessibleHyperlink; IAccessibleText2; IAccessibleHypertext2;
Control Type: Hyperlink
Role: ROLE_LINK
States: If link is visited then STATE_VISITED.
Actions: "jump" action on link and all its descendants.
Interfaces: Hyperlink; Text; Hypertext
AXRole: AXLink
AXSubrole: (nil)
AXRoleDescription: link
a (no href attribrute) Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_TEXT_FRAME
Interfaces: IAccessibleHyperlink; IAccessibleText2; IAccessibleHypertext2;
Control Type: Text
Role: ROLE_TEXT
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
abbr Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_TEXT_FRAME
Object attributes: "abbr" attribute on the containing td if a single child, text content used as a value
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Text
Role: ROLE_TEXT
Object attributes: "abbr" attribute on the containing td if a single child, text content used as a value
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
address Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_PARAGRAPH
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Text
Role: ROLE_PARAGRAPH
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: AXLandmarkContentInfo
AXRoleDescription: content information
Note: recommend AXRoleDescription of "address" to disambiguate from "contentinfo" landmark role. Refer to WebKit bug 83989
area (represents a hyperlink) Yes Yes link role
Role: ROLE_SYSTEM_LINK
States: STATE_SYSTEM_LINKED
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_LINK exposed as a child of connected img element
States: STATE_LINKED
Actions: jump
Interfaces: IAccessibleHyperlink
Control Type: Hyperlink
Role: ROLE_LINK exposed as a child of connected img element
Actions: jump
Interfaces: Hyperlink
AXRole: AXLink
AXSubrole: (nil)
AXRoleDescription: link
area (no href attribute) Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_SHAPE
Control Type: Text
Role: ROLE_TEXT
Not mapped
article No Yes article role
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_DOCUMENT
States: STATE_SYSTEM_READONLY
Object attributes: xml-roles:article
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Group
Role: ROLE_DOCUMENT_FRAME
Object attributes: xml-roles:article
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: AXDocumentArticle
AXRoleDescription: article
aside No Yes complementary role
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_NOTE
Object attributes: xml-roles:complementary
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Group
Role: ROLE_SECTION
Object attributes: xml-roles:complementary
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: AXLandmarkComplementary
AXRoleDescription: complementary
audio No Yes none
Role: ROLE_SYSTEM_GROUPING
Role: ROLE_SYSTEM_GROUPING
Control Type: Group
Role: ROLE_PANEL
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
Note: UI controls within the audio element exposed as AXToolbar.
b Yes Yes none
Role: ROLE_SYSTEM_TEXT


Use MSAA or UIA guidance
Doesn't have an accessible, exposed as "font-weight" text attribute on the text container. The value depends on the platform.
Control Type: Text
Doesn't have an accessible, exposed as "font-weight" text attribute on the text container. The value depends on the platform.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
base Yes Yes none
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
bdi none ?
Doesn't have an accessible. May affect on "writing-mode" text attribute on its text container.
?
Doesn't have an accessible. May affect on "writing-mode" text attribute on its text container.
bdo Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Doesn't have an accessible. Exposed as "writing-mode" text attribute on its text container.
Control Type: Text
Doesn't have an accessible. Exposed as "writing-mode" text attribute on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
blockquote Yes Yes none
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_SECTION
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Group
Role: ROLE_SECTION
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
body Yes Yes document role
Role: ROLE_SYSTEM_DOCUMENT
States: STATE_SYSTEM_READONLY
Use MSAA or UIA guidance
Doesn't have an accessible. All DOM attributes are proccessed as they belonged to its document accessible.
Control Type: Document
Doesn't have an accessible. All DOM attributes are proccessed as they belonged to its document accessible. The document accessible has ROLE_DOCUMENT_FRAME.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
br Yes Yes none
Role: ROLE_SYSTEM_WHITESPACE
Role: ROLE_SYSTEM_WHITESPACE
?
Doesn't have an accesible. Exposed as '\n' character via Text interface on the text container.
Not mapped
button Yes Yes button role
Role: ROLE_SYSTEM_PUSHBUTTON
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_PUSHBUTTON
States: STATE_SYSTEM_DEFAULT if the button is default
Actions: press
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Button
?? When it is in a <menu> it defines a command.  Is it still a button, or is it a menuitem??
Role: ROLE_PUSH_BUTTON
States: STATE_DEFAULT if the button is default
Actions: press
Interfaces: Text; Hypertext
AXRole: AXButton
AXSubrole: (nil)
AXRoleDescription: button
canvas No Yes none
Role: SYSTEM_ROLE_GRAPHIC
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_CANVAS
Control Type: Image
NOTE: subdom elements will be mapped separately.
Role: ROLE_CANVAS
AXRole: AXImage
AXSubrole: (nil)
AXRoleDescription: image
caption Yes Yes none
Role: ROLE_SYSTEM_TEXT
States: STATE_SYSTEM_READONLY
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_CAPTION
Relations: IA2_RELATION_LABEL_FOR with containing table accessible
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Text
Properties: UIA_LabeledByPropertyId on the parent table pointing to the UIA element for the caption element.
Role: ROLE_CAPTION
Relations: RELATION_LABEL_FOR with containing table accessible
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
cite Yes Yes none
Role: ROLE_SYSTEM_TEXT ??GROUP??
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
Control Type: ??Text or Group??
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
code Yes Yes none
Role: ROLE_SYSTEM_TEXT
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
Control Type: Text
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
col Yes Yes none
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
colgroup Yes Yes none
Role: ROLE_SYSTEM_GROUPING
TODO:  look in more detail at UIA table implemenation
Not mapped
?TODO:  look in more detail at UIA table implementation
Not mapped
Not mapped
Command: an element that defines a command, whose Type facet is "checkbox", and that is a descendant of a menu element whose type attribute is in the toolbar state No Yes menuitemcheckbox role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise
Role: ROLE_SYSTEM_MENUITEM
Use UIA guidance
IA2_ROLE_CHECK_MENU_ITEM + object attribute checkable="true"
Control Type: MenuItem
Control Pattern: Toggle
ROLE_CHECK_MENU_ITEM + object attribute checkable="true"
AXRole: AXCheckbox
AXSubrole: (nil)
AXRoleDescription: check box
Command: an element that defines a command, whose Type facet is "command", and that is a descendant of a menu element whose type attribute is in the toolbar state No Yes menuitem role
Role: ROLE_SYSTEM_MENUITEM
Use UIA guidance
ROLE_SYSTEM_MENUITEM
Control Type: MenuItem
ROLE_MENU_ITEM Depends on element used to define command
Command: an element that defines a command, whose Type facet is "radio", and that is a descendant of a menu element whose type attribute is in the toolbar state No Yes menuitemradio role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise
Role: ROLE_SYSTEM_MENUITEM
Use UIA guidance
IA2_ROLE_RADIO_MENU_ITEM + object attribute checkable="true"
Control Type: MenuItem
Control Pattern: Toggle
ROLE_RADIO_MENU_ITEM + object attribute checkable="true"
AXRole: AXRadioButton
AXSubrole: (nil)
AXRoleDescription: radio button
data No
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
datalist No Yes listbox role, with the aria-multiselectable property set to "false"
Role: ROLE_SYSTEM_COMBOBOX
States: STATE_SYSTEM_HASPOPUP.
Use UIA guidance
Used to constuct a list of options for autocompletes (in other words it can have no accessible itself)
Role: ROLE_SYSTEM_LIST
Control Type: Combo Box
Used to constuct a list of options for autocompletes (in other words it can have no accessible itself)
Interfaces: Selection
AXRole: AXComboBox
AXSubrole: (nil)
AXRoleDescription: combo box
dd Yes Yes none
Role: ROLE_SYSTEM_TEXT
Role: tag name BSTR (MSAA) and IA2_ROLE_PARAGRAPH
Interfaces: IAccessibleText2; IAccessibleHypertext2;
?
Role: ROLE_PARAGRAPH
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: AXDefinition
AXRoleDescription: definition
del Yes Yes none
Role: ROLE_SYSTEM_TEXT
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
Control Type: Text
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
details No Yes none
??dialog seems closer??
Role: ROLE_SYSTEM_GROUPING
Role: ROLE_SYSTEM_GROUPING
Control Type: Group ??window??
Role: ROLE_PANEL
?
dfn Yes Yes none
Role: ROLE_SYSTEM_TEXT
Doesn't have an accessible. Used styles are exposed by text attributes on its text container.
?
Doesn't have an accessible. Used styles are exposed by text attributes on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
dialog
Role: ROLE_SYSTEM_DIALOG
Role: ROLE_SYSTEM_DIALOG
Role: ROLE_DIALOG
div Yes Yes none
Role: ROLE_SYSTEM_GROUPING
May not have an accessible if has no semantic meaning. Otherwise
Role: tag name BSTR (MSAA) and IA2_ROLE_SECTION
Interfaces: IAccessibleText2; IAccessibleHypertext2;
?
May not have an accessible if has no semantic meaning. Otherwise
Role: ROLE_SECTION
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
dl Yes Yes none
Role: ROLE_SYSTEM_LIST
States: STATE_SYSTEM_READONLY
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_LIST
States: STATE_SYSTEM_READONLY
Control Type: List
Role: ROLE_LIST
AXRole: AXList
AXSubrole: AXDefinitionList
AXRoleDescription: definition list
dt Yes Yes none
Role: ROLE_SYSTEM_LISTITEM
States: STATE_SYSTEM_READONLY
Role: ROLE_SYSTEM_LISTITEM
States: STATE_SYSTEM_READONLY
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: List Item
Role: ROLE_LISTITEM
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: AXTerm
AXRoleDescription: term
em Yes Yes none
Role: ROLE_SYSTEM_TEXT
Doesn't have an accessible. Used styles are mapped into text attributes on its text container
?
Doesn't have an accessible. Used styles are mapped into text attributes on its text container
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
embed No Yes none
Role: ROLE_SYSTEM_CLIENT
Role: tag name BSTR (MSAA) and IA2_ROLE_EMBEDDED_OBJECT
States: STATE_SYSTEM_UNAVAILABLE for windowless plugin
Control Type: ?Pane? Window?
Role: ROLE_EMBEDDED
Depends on format of data file
fieldset Yes Yes none
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_GROUPING
Relations: IA2_RELATION_LABELLED_BY with child legend element
Control Type: Group
Role: ROLE_PANEL
Relations: RELATION_LABELLED_BY with child legend element
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
figcaption No Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_CAPTION
Relations: IA2_RELATION_LABEL_FOR with parent figure element
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Text
Role: ROLE_CAPTION
Relations: RELATION_LABEL_FOR with parent figure element
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
figure No Yes none
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_GROUPING
Object attributes: xml-roles:figure
Name: related figcaption content
Relations: IA2_RELATION_LABELLED_BY with child figcaption element
Control Type: Group
??discuss graphic/image vs. group??
Role: ROLE_PANEL
Object attributes: xml-roles:figure
Name: related figcaption content
Relations: RELATION_LABELLED_BY with child figcaption element
?
form Yes Yes form role
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Role: tag name BSTR (MSAA) and IA2_ROLE_FORM
Control Type: Group
Role: ROLE_FORM
AXRole: AXGroup
AXSubrole: AXLandmarkForm
AXRoleDescription: form
frame Yes No ?
Role: ROLE_SYSTEM_DOCUMENT
States: STATE_SYSTEM_READONLY
??currently mapped as pane not document.  the document inside is mapped as document??
Role: tag name BSTR (MSAA) and IA2_ROLE_INTERNAL_FRAME
Child: ROLE_SYSTEM_DOCUMENT having STATE_SYSTEM_READONLY
Control Type: Document
Role: ROLE_INTERNAL_FRAME
Child: ROLE_DOCUMENT_FRAME
AXRole: AXWebArea
AXSubrole: (nil)
AXRoleDescription: HTML content
frameset Yes No ? ?
Doesn't have an accessible. All DOM attributes are proccessed as they belonged to its document accessible. Similar to body element.
?
Doesn't have an accessible. All DOM attributes are proccessed as they belonged to its document accessible. Similar to body element.
Not mapped
h1, h2, h3, h4, h5, h6 Yes Yes heading role, with the aria-level property set to the element's outline depth
Role: ROLE_SYSTEM_TEXT
??or use xml-roles??
Role: tag name BSTR (MSAA) and IA2_ROLE_HEADING
Object attributes: level:<heading_level>
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Text
Role: ROLE_HEADING
Object attributes: level:<heading_level>
Interfaces: Text; Hypertext
AXRole: AXHeading
AXSubrole: (nil)
AXRoleDescription: heading
Properties: Use AXLevel to expose the heading level
head Yes Yes none
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
header No Yes none
Role: ROLE_SYSTEM_GROUPING
Role: tag name BSTR (MSAA) and IA2_ROLE_HEADER
Object attributes: xml-roles:banner if not contained by article or section elements
Interfaces: IAccessibleText2; IAccessibleHypertext2;
Control Type: Group
Properties: Do not put "header" in LocalizedControlType string because there is a header role for table headers
Role: ROLE_HEADER
Object attributes: xml-roles:banner if not contained by article or section elements
Interfaces: Text; Hypertext
If contained in article or section elements:
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
Otherwise:
AXRole: AXGroup
AXSubrole: AXLandmarkBanner
AXRoleDescription: banner
hr Yes Yes separator role
Role: ROLE_SYSTEM_SEPARATOR
Role: ROLE_SYSTEM_SEPARATOR
Control Type: Separator
Role: ROLE_SEPARATOR
?
html Yes Yes none
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
i Yes Yes none
Role: ROLE_SYSTEM_TEXT
Doesn't have an accessible, exposed as "font-style:italic" text attribute on its text container.
Control Type: Text
Doesn't have an accessible, exposed as "font-style:italic" text attribute on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
iframe Yes Yes none
Role: ROLE_SYSTEM_DOCUMENT ??pane??
States: STATE_SYSTEM_READONLY
Role: tag name BSTR (MSAA) and IA2_ROLE_INTERNAL_FRAME
Child: ROLE_SYSTEM_DOCUMENT having STATE_SYSTEM_READONLY
Control Type: Document ??Pane??
Role: ROLE_INTERNAL_FRAME
Child: ROLE_DOCUMENT_FRAME
AXRole: AXWebArea
AXSubrole: (nil)
AXRoleDescription: html content
img Yes Yes img role
Role: ROLE_SYSTEM_GRAPHIC
Role: ROLE_SYSTEM_GRAPHIC
Actions: 1) "jump" or "click" inherited from the container if any 2) "showlongdesc" if the image has a longdesc attribute
Interfaces: IAccessibleImage
Children: ROLE_SYSTEM_LINK generated from area elements in case of image map
Control Type: Image
Role: ROLE_IMAGE
Actions: 1) "jump" or "click" inherited from the container if any 2) "showlongdesc" if the image has a longdesc attribute
Interfaces: Image
Children: ROLE_LINK generated from area elements in case of image map
AXRole: AXImage
AXSubrole: (nil)
AXRoleDescription: image
img (alt attribute is empty) Yes Yes presentation role
Do not expose this object
Do not expose this object
Control Type: Image
Properties: NameProperty set to the empty string
Do not expose this object
Do not expose this object
input (type attribute in the Button state) Yes Yes button role
Role: ROLE_SYSTEM_PUSHBUTTON
Role: ROLE_SYSTEM_PUSHBUTTON
Actions: press
Control Type: Button
Role: ROLE_PUSH_BUTTON
Actions: press
AXRole: AXButton
AXSubrole: (nil)
AXRoleDescription: button
input (type attribute in the Button state and parent is a menu) ? ? ?
Role: ROLE_SYSTEM_MENUITEM
Role: ROLE_SYSTEM_MENUITEM
Control Type: Menu Item
Role: ROLE_MENU_ITEM
?
input (type attribute in the Color state) No Yes ?
Role: If implemented as a textbox, ROLE_SYSTEM_TEXT
Use UIA guidance
Role: IA2_ROLE_COLOR_CHOOSER
Control Type: If implemented as a textbox, Edit.
Properties: If implemented as a color picker, set LocalizedControlType string to "Color Picker".
Control Pattern: If implemented as a color picker, implement IUIAutomationSelectionPattern for the container and IUIAutomationSelectionItemPattern for each color choice
Role: ROLE_COLOR_CHOOSER
If implemented as a textbox:
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: textfield
If implemented as a color picker:
AXRole: AXColorWell
AXSubrole: (nil)
AXRoleDescription: color chooser
input (type attribute in the Checkbox state) Yes Yes checkbox role, with the aria-checked state set to "mixed" if the element's indeterminate IDL attribute is true, or "true" if the element's checkedness is true, or "false" otherwise
Role: ROLE_SYSTEM_CHECKBUTTON
Role: ROLE_SYSTEM_CHECKBUTTON
States: IA2_STATE_CHECKABLE; STATE_SYSTEM_CHECKED if checked; STATE_SYSTEM_MIXED if in mixed state
Actions: "check" or "uncheck" depending on the state
Control Type: Check Box
Role: ROLE_CHECK_BOX
States: STATE_CHECKED if checked; STATE_INDETERMINATE if in mixed state
Object attributes: checkable:true
Actions: "check" or "uncheck" depending on the state
AXRole: AXCheckBox
AXSubrole: (nil)
AXRoleDescription: check box
input (type attribute in the Checkbox state and parent is a menu) ? ? ?
Role: ROLE_SYSTEM_CHECKBUTTON
UIA MenuItem
Role: IA2_ROLE_CHECK_MENU_ITEM
States: IA2_STATE_CHECKABLE; STATE_SYSTEM_CHECKED if checked; STATE_SYSTEM_MIXED if in mixed state
Control Type: MenuItem
Control Pattern: Toggle
Role: ROLE_CHECK_MENU_ITEM
States: STATE_CHECKED if checked; STATE_INDETERMINATE if in mixed state
Object attributes: checkable:true
?
input (type attribute in the Date state) No Yes none
Role: ROLE_SYSTEM_DROPLIST
UIA Calendar
Role: IA2_ROLE_DATE_EDITOR
Control Type: Calendar
Role: ROLE_CALENDAR
AXRole: AXDateField
AXSubrole: (nil)
AXRoleDescription: date field
input (type attribute in the Date and Time state) No Yes none
Role: ROLE_SYSTEM_DROPLIST
UIA Calendar
Role: IA2_ROLE_DATE_EDITOR
Control Type: Calendar
Role: ROLE_CALENDAR
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
input (type attribute in the Local Date and Time state) No Yes none
Role: ROLE_SYSTEM_DROPLIST
UIA Calendar
Role: IA2_ROLE_DATE_EDITOR
Control Type: Calendar
Role: ROLE_CALENDAR
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
input (type attribute in the E-mail state with no suggestions source element) No Yes textbox role
Role: ROLE_SYSTEM_TEXT
UIA Edit
Role: ROLE_SYSTEM_TEXT
States: IA2_STATE_SINGLE_LINE; STATE_SYSTEM_READONLY if readonly, otherwise IA2_STATE_EDITABLE
Actions: activate
Interfaces: IAccessibleText2; IAccessibleEditableText
Control Type: Edit
Role: ROLE_ENTRY
States: STATE_SINGLE_LINE; STATE_EDITABLE if not readonly
Actions: activate
Interfaces: Text; EditableText
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
input (type attribute in the File Upload state) Yes Yes none
Role: ROLE_SYSTEM_PUSHBUTTON
Role: tag name BSTR (MSAA) and IA2_ROLE_TEXT_FRAME
Children: A button and label (implementation specific)
Control Type: Button
Role: ROLE_TEXT
Children: ROLE_PUSH_BUTTON when pressed ROLE_FILE_CHOOSER dialog shown
AXRole: AXButton
AXSubrole: (nil)
AXRoleDescription: button
input (type attribute in the Hidden state) Yes Yes none
Do not expose this object
Not mapped
Do not expose this object
Not mapped
Do not expose this object
input (type attribute in the Image Button state) Yes Yes button role
Role: ROLE_SYSTEM_PUSHBUTTON
Role: ROLE_SYSTEM_PUSHBUTTON
States: STATE_SYSTEM_DEFAULT if the button is default
Actions: press
Control Type: Button
Role: ROLE_PUSH_BUTTON
States: STATE_DEFAULT if the button is default
Actions: press
AXRole: AXButton
AXSubrole: (nil)
AXRoleDescription: button
input (type attribute in the Image Button state and parent is a menu) ? ? ? ? ?
?? does this define a command??
? ?
input (type attribute in the Month state) No Yes none
Role: ROLE_SYSTEM_DROPLIST
UIA Calendar
Role: IA2_ROLE_DATE_EDITOR
Control Type: Calendar
Role: ROLE_DATE_EDITOR
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
input (type attribute in the Number state) No Yes spinbutton role
Role: ROLE_SYSTEM_SPINBUTTON
Role: ROLE_SYSTEM_SPINBUTTON or ROLE_SYSTEM_TEXT (implementation dependent)
Control Type: Spinner
Role: ROLE_SPIN_BUTTON or ROLE_ENTRY (implementation dependent)
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
Note: Stepper controls are assigned roles seperately from the AXTextField in Webkit. The stepper is not currently recognized by VoiceOver. Refer to Webkit bug 79095
input (type attribute in the Password state) Yes Yes textbox role
Role: ROLE_SYSTEM_TEXT
States: STATE_SYSTEM_PROTECTED
UIA Edit with UIA_IsPasswordPropertyId
Role: ROLE_SYSTEM_TEXT
States: STATE_SYSTEM_PROTECTED; IA2_STATE_SINGLE_LINE; STATE_SYSTEM_READONLY if readonly, otherwise IA2_STATE_EDITABLE
Actions: activate
Control Type: Edit
Properties: UIA_IsPasswordPropertyId
Role: ROLE_PASSWORD_TEXT
States: STATE_SINGLE_LINE; STATE_EDITABLE until readonly
Actions: activate
AXRole: AXTextField
AXSubrole: AXSecureTextField
AXRoleDescription: secure text field
input (type attribute in the Radio Button state) Yes Yes radio role, with the aria-checked state set to "true" if the element's checkedness is true, or "false" otherwise
Role: ROLE_SYSTEM_RADIOBUTTON
Role: ROLE_SYSTEM_RADIOBUTTON
States: IA2_STATE_CHECKABLE and STATE_SYSTEM_CHECKED if checked
Actions: select
Control Type: Radio Button
Role: ROLE_RADIO_BUTTON
States: STATE_CHECKED if checked
Object attributes: checkable:true
Actions: select
AXRole: AXRadioButton
AXSubrole: (nil)
AXRoleDescription: radio button
input (type attribute in the Radio Button state and parent is a menu) ? ? ? ? ?
Control Type: MenuItem
Control Pattern: Toggle
? ?
input (type attribute in the Range state) No Yes slider role
Role: ROLE_SYSTEM_SLIDER
Role: ROLE_SYSTEM_SLIDER
Interfaces: IAccessibleValue
Control Type: Slider
Role: ROLE_SLIDER
Interfaces: Value
Slider:
AXRole: AXSlider
AXSubrole: (nil)
AXRoleDescription: slider
Properties: AXOrientation: AXHorizontalOrientation
Thumb:
AXRole: AXValueIndicator
AXSubrole: (nil)
AXRoleDescription: value indicator
Actions: AXIncrement - increment; AXDecrement - decrement
input (type attribute in the Reset Button state) Yes Yes button role
Role: ROLE_SYSTEM_PUSHBUTTON
Role: ROLE_SYSTEM_PUSHBUTTON
Actions: press
Control Type: Button
Role: ROLE_PUSH_BUTTON
Actions: press
AXRole: AXButton
AXSubrole: (nil)
AXRoleDescription: button
input (type attribute in the Submit Button state) Yes Yes button role
Role: ROLE_SYSTEM_PUSHBUTTON
Role: ROLE_SYSTEM_PUSHBUTTON
States: STATE_SYSTEM_DEFAULT if the button is default
Actions: press
Control Type: Button
Role: ROLE_PUSH_BUTTON
States: STATE_DEFAULT if the button is default
Actions: press
AXRole: AXButton
AXSubrole: (nil)
AXRoleDescription: button
input (type attribute in the Telephone state with no suggestions source element) No Yes textbox role
Role: ROLE_SYSTEM_TEXT
UIA Edit
Role: ROLE_SYSTEM_TEXT
States: IA2_STATE_SINGLE_LINE; STATE_SYSTEM_READONLY if readonly, otherwise IA2_STATE_EDITABLE
Actions: activate
Interfaces: IAccessibleText2; IAccessibleEditableText
Control Type: Edit
Role: ROLE_ENTRY
States: STATE_SINGLE_LINE; STATE_EDITABLE if not readonly
Actions: activate
Interfaces: Text; EditableText
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
input (type attribute in the Text state with no suggestions source element) Yes Yes textbox role
Role: ROLE_SYSTEM_TEXT
UIA Edit
Role: ROLE_SYSTEM_TEXT
States: IA2_STATE_SINGLE_LINE; STATE_SYSTEM_READONLY if readonly, otherwise IA2_STATE_EDITABLE
Actions: activate
Interfaces: IAccessibleText2; IAccessibleEditableText
Control Type: Edit
Role: ROLE_ENTRY
States: STATE_SINGLE_LINE; STATE_EDITABLE if not readonly
Actions: activate
Interfaces: Text; EditableText
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
input (type attribute in the Text, Search, Telephone, URL, or E-mail states with a suggestions source element) No Yes combobox role, with the aria-owns property set to the same value as the list attribute
Role: ROLE_SYSTEM_COMBOBOX
States: STATE_SYSTEM_HASPOPUP
Same as ordinal elements.
States: STATE_SYSTEM_HASPOPUP and IA2_STATE_SUPPORTS_AUTOCOMPLETION
Actions: activate
Interfaces: IAccessibleText2; IAccessibleEditableText
Control Type: Combo Box
Same as ordinal elements.
States: STATE_SUPPORTS_AUTOCOMPLETION
Object attributes: haspopup:true
Actions: activate
Interfaces: Text; EditableText
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
input (type attribute in the Time state) No Yes none
Role: ROLE_SYSTEM_SPINBUTTON
Role: ROLE_SYSTEM_SPINBUTTON
Control Type: Spinner
Role: ROLE_SPIN_BUTTON
AXRole: AXTimeField
AXSubrole: (nil)
AXRoleDescription: time field
input (type attribute in the URL state with no suggestions source element) No Yes textbox role
Role: ROLE_SYSTEM_TEXT
UIA Edit
Role: ROLE_SYSTEM_TEXT
States: IA2_STATE_SINGLE_LINE; STATE_SYSTEM_READONLY if readonly, otherwise IA2_STATE_EDITABLE
Actions: activate
Interfaces: IAccessibleText2; IAccessibleEditableText
Control Type: Edit
Role: ROLE_ENTRY
States: STATE_SINGLE_LINE; STATE_EDITABLE if not readonly
Actions: activate
Interfaces: Text; EditableText
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
input (type attribute in the Week state) No Yes none
Role: ROLE_SYSTEM_DROPLIST
UIA Calendar
Role: IA2_ROLE_DATE_EDITOR
Control Type: Calendar
Role: ROLE_CALENDAR
AXRole: AXTextField
AXSubrole: (nil)
AXRoleDescription: text field
ins Yes Yes none
Role: ROLE_SYSTEM_TEXT
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
?
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
kbd Yes Yes none
Role: ROLE_SYSTEM_TEXT
Doesn't have an accessible. Mapped into "font-family:monospace" text attribute on its text container.
?
Doesn't have an accessible. Mapped into "font-family:monospace" text attribute on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
keygen No Yes listbox role, with the aria-multiselectable property set to "false"
Role: ROLE_SYSTEM_COMBOBOX
States: STATE_SYSTEM_HASPOPUP
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_COMBOBOX
States: STATE_SYSTEM_HASPOPUP; STATE_SYSTEM_EXPANDED or STATE_SYSTEM_COLLAPSED depending on the state
Actions: "open" or "close" depending on the state
Control Type: Combo Box
Role: ROLE_COMBO_BOX
States: STATE_EXPANDABLE; STATE_COLLAPSED if collapsed
Object attributes: haspopup:true
Actions: "open" or "close" depending on the state
AXRole: AXList
AXSubrole: (nil)
AXRoleDescription: list
label Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use UIA guidance
Role: ROLE_SYSTEM_STATICTEXT and IA2_ROLE_LABEL
Relations: IA2_RELATION_LABEL_FOR for a child form element or form element referred by for attribute. Note, related form element provides IA2_RELATION_LABELLED_BY pointing to the label.
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: Text
Properties: ??The parent input has a UIA_LabeledByPropertyId pointing to the UIA element for the legend element.?? When the label element has a for attribute pointing to a valid IDREF, the referenced element has a UIA_LabeledByPropertyId pointing to the UIA element for the label element.
Role: ROLE_LABEL
Relations: RELATION_LABEL_FOR for a child form element or form element referred by for attribute. Note, related form element provides RELATION_LABELLED_BY pointing to the label.
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
legend Yes Yes none
Role: ROLE_SYSTEM_TEXT
SHOULD use UIA_LabeledByPropertyId (see UIA column)
Role : ROLE_SYSTEM_STATICTEXT and IA2_ROLE_LABEL
Relations: IA2_RELATION_LABEL_FOR with parent fieldset element
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: Text
Properties: The parent fieldset has a UIA_LabeledByPropertyId pointing to the UIA element for the legend element.
Role : ROLE_LABEL
Relations: RELATION_LABEL_FOR with parent fieldset element
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
li (parent is an ol or ul) Yes Yes listitem role
Role: ROLE_SYSTEM_LISTITEM
States: STATE_SYSTEM_READONLY
Role: ROLE_SYSTEM_LISTITEM
States: STATE_SYSTEM_READONLY
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: List Item
Role: ROLE_LISTITEM
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
li (parent is a menu) No Yes listitem role
Role: ROLE_SYSTEM_LISTITEM
States: STATE_SYSTEM_READONLY
Role: ROLE_SYSTEM_LISTITEM
States: STATE_SYSTEM_READONLY
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: Menu Item
Role: ROLE_LISTITEM
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
main No Yes main role
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_GROUPING
Object attributes: xml-roles:main
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: Group
Role: ROLE_SECTION
Object attributes: xml-roles:main
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: AXLandmarkMain
AXRoleDescription: main
map Yes Yes none
Not mapped
Not mapped if used as an image map, otherwise:
Role: tag name BSTR (MSAA) and IA2_ROLE_TEXT_FRAME
Not mapped
Not mapped if used as an image map, otherwise:
Role: ROLE_TEXT
Not mapped
mark No Yes none
Role: ROLE_SYSTEM_TEXT
Doesn't have an accessible. Styles used to highlight the text are mapped into text attributes on the text container.
Control Type: Text
Doesn't have an accessible. Styles used to highlight the text are mapped into text attributes on the text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
math No Yes math role
Role: ROLE_SYSTEM_EQUATION
Role: ROLE_SYSTEM_EQUATION
?
Role: ROLE_UNKNOWN
AXRole: AXGroup
AXSubrole: AXDocumentMath
AXRoleDescription: math
menu (type attribute in the popup menu state) No Yes menu role
Role: ROLE_SYSTEM_MENUPOPUP
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_MENUPOPUP
Control Type: Menu
Role: ROLE_MENU
These objects should not be exposed for a submenu if there is a parent menu item spawning the submenu
AXRole: AXMenu
AXSubrole: (nil)
AXRoleDescription: menu
menu (type attribute in the toolbar state) No Yes toolbar role
Role: ROLE_SYSTEM_TOOLBAR
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_TOOLBAR
Control Type: ToolBar
Role: ROLE_TOOL_BAR
AXRole: AXMenu
AXSubrole: (nil)
AXRoleDescription: menu
menuitem (type attribute in the Checkbox state) No Yes menuitemcheckbox role, with the aria-checked state set to "true" if the checked attribute is present, and "false" otherwise
Role: ROLE_SYSTEM_MENUITEM
Use UIA guidance
Role: IA2_ROLE_CHECK_MENU_ITEM
States: IA2_STATE_CHECKABLE; STATE_SYSTEM_CHECKED if checked;
Control Type: MenuItem
Control Pattern: Toggle
Role: ROLE_CHECK_MENU_ITEM
States: STATE_CHECKED if checked
Object attributes: checkable:true
AXRole: AXCheckbox
AXSubrole: (nil)
AXRoleDescription: check box
menuitem (type attribute in the Command state) No Yes menuitem role
Role: ROLE_SYSTEM_MENUITEM
Use UIA guidance
Role: ROLE_SYSTEM_MENUITEM
Control Type: MenuItem
Role: ROLE_MENU_ITEM
AXRole: AXMenuItem
AXSubrole: (nil)
AXRoleDescription: menu item
menuitem (type attribute in the Radio state) No Yes menuitemradio role, with the aria-checked state set to "true" if the checked attribute is present, and "false" otherwise
Role: ROLE_SYSTEM_MENUITEM
Use UIA guidance
Role: IA2_ROLE_RADIO_MENU_ITEM
States: IA2_STATE_CHECKABLE; STATE_SYSTEM_CHECKED if checked;
Control Type: MenuItem
Control Pattern: Toggle
Role: ROLE_RADIO_MENU_ITEM
States: STATE_CHECKED if checked
Object attributes: checkable:true
AXRole: AXRadioButton
AXSubrole: (nil)
AXRoleDescription: radio button
meta Yes Yes none
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
meter No Yes none
Role: ROLE_SYSTEM_TEXT
?? not sure this is right.  maybe a number or value or something?
Use UIA guidance
Role: ROLE_SYSTEM_PROGRESSBAR
Interfaces: IAccessibleValue
Control Pattern: RangeValue
Properties: Set the control pattern's IsReadOnly property to true. Set LocalizedControlType to "Meter".
Role: ROLE_PROGRESS_BAR
Interfaces: Value
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
nav No Yes navigation role
Role: ROLE_SYSTEM_GROUPING
Role: tag name BSTR and IA2_ROLE_SECTION
Object attributes: xml-roles:navigation
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: ??Text
Role: ROLE_PANEL
Object attributes: xml-roles:navigation
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: AXLandmarkNavigation
AXRoleDescription: navigation
noscript Yes Yes none
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
object Yes Yes no role ?? would pane or window work??

depends on format of data file. examples include document, client, graphic and unknown (tested using object test suite).

Use MSAA or UIA guidance
Depends on format of data file. If contains a plugin then
Role: tag name BSTR (MSAA) and IA2_ROLE_EMBEDDED_OBJECT
States: STATE_SYSTEM_UNAVAILABLE for windowless plugin
Depends on format of data file.
Depends on format of data file. If contains a plugin then
Role: ROLE_EMBEDDED
Depends on format of data file.
ol Yes Yes list role
Role: ROLE_SYSTEM_LIST
States: STATE_SYSTEM_READONLY
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_LIST
States: STATE_SYSTEM_READONLY
Control Type: List
Role: ROLE_LIST
AXRole: AXList
AXSubrole: AXContentList
AXRoleDescription: list
optgroup Yes Yes group role
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_GROUPING
Control Type: Group
Role: ROLE_PANEL
AXRole: AXMenuItem
AXSubrole: (nil)
AXRoleDescription: menu item
option (in a list of options or represents a suggestion in a datalist) No Yes option role, with the aria-selected state set to "true" if the element's selectedness is true, or "false" otherwise.
Role: ROLE_SYSTEM_LISTITEM
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_LISTITEM
States: STATE_SYSTEM_FOCUSABLE; STATE_SYSTEM_FOCUSED if selected and the user focus is at the list
Actions: select
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: List Item
Control Pattern: SelectionItem (required for List Item control type)
Role: ROLE_LIST_ITEM
States: STATE_FOCUSABLE; STATE_FOCUSED if selected and the user focus is at the list
Actions: select
Interfaces: Text; Hypertext
AXRole: AXMenuItem
AXSubrole: (nil)
AXRoleDescription: menu item
output No Yes status role
Role: ROLE_SYSTEM_STATUSBAR ??text read-only seems closer.  this is a label that is calculated??
Use UIA guidance
Role: tag name BSTR and IA2_ROLE_SECTION
Object attributes: live:polite
Relations: IA2_RELATION_CONTROLLED_BY with an element pointed by for attribute. Paired element exposes IA2_RELATION_CONTROLLER_FOR relation.
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: Text
Properties: When the output element has a for attribute pointing to a valid IDREF, the referenced element has a UIA_LabeledByPropertyId pointing to the UIA element for the output element.
Role: ROLE_SECTION
Object attributes: live:polite
Relations: RELATION_CONTROLLED_BY with an element pointed by for attribute. Paired element exposes RELATION_CONTROLLER_FOR relation.
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
p Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Role: tag name BSTR and IA2_ROLE_PARAGRAPH
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: Text
Role: ROLE_PARAGRAPH
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
param Yes Yes none
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
pre Yes Yes none
Role: ROLE_SYSTEM_TEXT ??group?
Use MSAA or UIA guidance
Role: tag name BSTR and IA2_ROLE_PARAGRAPH
Used styles are mapped into text attributes on the accessible
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: Text ??Group??
Role: ROLE_PARAGRAPH
Used styles are mapped into text attributes on the accessible
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
progress No Yes progressbar role, with, if the progress bar is determinate, the aria-valuemax property set to the maximum value of the progress bar, the aria-valuemin property set to zero, and the aria-valuenow property set to the current value of the progress bar
Role: ROLE_SYSTEM_PROGRESSBAR
States: STATE_SYSTEM_READONLY
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_PROGRESSBAR
States: STATE_SYSTEM_MIXED if the progress is indeterminate
Interfaces: IAccessibleValue
Control Type: Progress Bar
Role: ROLE_PROGRESS_BAR
States: STATE_INDETERMINATE if the progress is indeterminate
Interfaces: Value
AXRole: AXProgressIndicator
AXSubrole: (nil)
AXRoleDescription: progress indicator
Properties: Use AXValue to expose current value.
q Yes Yes none
Role: ROLE_SYSTEM_TEXT ??group??
Use MSAA or UIA guidance
Role: tag name BSTR and IA2_ROLE_TEXT_FRAME
Children: ROLE_SYSTEM_TEXT wrapped by ROLE_SYSTEM_STATICTEXT created for quote marks
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: Text ??Group??
Role: ROLE_TEXT
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
rp No Yes none
Role: ROLE_SYSTEM_TEXT ??group??
Use MSAA or UIA guidance
Doesn't have an accessible. No child elements are exposed if ruby is supported by the browser.
Control Type: Text ??Group??
Doesn't have an accessible. No child elements are exposed if ruby is supported by the browser.
?
rt No Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Doesn't have an accessible.
Control Type: Text
Doesn't have an accessible.
?
ruby No Yes none
Role: ROLE_SYSTEM_TEXT ??group??
Use MSAA or UIA guidance
Role: tag name BSTR and IA2_ROLE_TEXT_FRAME
Control Type: Text ??Group??
Role: ROLE_TEXT
?
s ? Yes none
Role: ROLE_SYSTEM_TEXT ??group??
Use MSAA or UIA guidance
Doesn't have an accessible, exposed as "text-line-through-style:solid" text attribute on the text container.
Control Type: Text ??Group??
Doesn't have an accessible, exposed as "text-line-through-style:solid" text attribute on the text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
samp Yes Yes none
Role: ROLE_SYSTEM_TEXT ??group?
Use MSAA or UIA guidance
Doesn't have an accessible. Styles are mapped into text attributes on its text container.
Control Type: Text ??Group??
Doesn't have an accessible. Styles are mapped into text attributes on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
script Yes Yes none
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
section No Yes region role
Role: ROLE_SYSTEM_GROUPING
Role: tag name BSTR and IA2_ROLE_SECTION
Object attributes: xml-roles:region
Interfaces: IAccessibleText2; IAccessibleHypertext2
Control Type: Text ??Group??
Role: ROLE_SECTION
Object attributes: xml-roles:region
Interfaces: Text; Hypertext
AXRole: AXGroup
AXSubrole: AXDocumentRegion
AXRoleDescription: region
select (with a multiple attribute or size attribute having value greater than 1) Yes Yes listbox role
Role: ROLE_SYSTEM_LIST
States: STATE_SYSTEM_READONLY; STATE_SYSTEM_MULTISELECTABLE if multiple presented
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_LIST
States: STATE_SYSTEM_FOCUSABLE; STATE_SYSTEM_MULTISELECTABLE if multiple presented
Control Type: List
Control Pattern: ISelectionProvider::CanSelectMultiple set to true
Role: ROLE_LIST
States: STATE_FOCUSABLE; STATE_MULTISELECTABLE if multiple presented
Interfaces: Selection
AXRole: AXList
AXSubrole: (nil)
AXRoleDescription: list
select (with NO multiple attribute and NO size attribute having value greater than 1) Yes Yes combobox role
Role: ROLE_SYSTEM_COMBOBOX
States: STATE_SYSTEM_HASPOPUP
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_COMBOBOX
States: STATE_SYSTEM_FOCUSABLE; STATE_SYSTEM_HASPOPUP
Actions: "open" or "close" depending on the state
Children: intermediate ROLE_SYSTEM_LIST containing all options
Control Type: Combo Box
Role: ROLE_COMBO_BOX
States: STATE_FOCUSABLE; STATE_EXPANDABLE and STATE_COLLAPSED if collapsed
Object attributes: haspopup:true
Actions: "open" or "close" depending on the state
Children: intermediate ROLE_SYSTEM_LIST containing all options
AXRole: AXPopUpButton
AXSubrole: (nil)
AXRoleDescription: pop up button
small Yes Yes none
Role: ROLE_SYSTEM_TEXT ??group??
Use MSAA or UIA guidance
Doesn't have an accessible. Exposed as "font-size" text attribute on the text container.
Control Type: Text ??Group??
Doesn't have an accessible. Exposed as "font-size" text attribute on the text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
source No Yes none
Do not expose this object
Not mapped
Do not expose this object
Not mapped
Do not expose this object
span Yes Yes none
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Not mapped
Control Type: Group
Not mapped
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
strong Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
Control Type: Text ??Group??
Doesn't have an accessible. Used styles are mapped into text attributes on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
style Yes Yes none
Do not expose this object
Not mapped
Do not expose this object
Not mapped
Do not expose this object
sub Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Doesn't have an accessible. Exposed as "text-position:sub" text attribute on its text container.
Control Type: Text ??Group??
Doesn't have an accessible. Exposed as "text-position:sub" text attribute on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
summary No Yes none
Role: ROLE_SYSTEM_PUSHBUTTON
States: ??has popup??
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_PUSHBUTTON
Control Type: Button
Control Pattern: ExpandCollapse
Role: ROLE_PUSHBUTTON
AXRole: AXDisclosureTriangle
AXSubrole: (nil)
AXRoleDescription: disclosure triangle
sup Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Doesn't have an accessible. Exposed as "text-position:super" text attribute on its text container.
Control Type: Text ??Group??
Doesn't have an accessible. Exposed as "text-position:super" text attribute on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
svg No Yes none
Role: ROLE_SYSTEM_GRAPHIC
Role: ROLE_SYSTEM_GRAPHIC
Control Type: Image
Role: ROLE_IMAGE
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
table Yes Yes none
Role: ROLE_SYSTEM_TABLE
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_TABLE
Relations: IA2_RELATION_LABELLED_BY by child caption if any
Interface: IAccessibleTable2
Control Type: Data Grid
Control Pattern: Table
Role: ROLE_TABLE
Relations: RELATION_LABELLED_BY by child caption if any
Interface: Table
AXRole: AXTable
AXSubrole: (nil)
AXRoleDescription: table
tbody Yes Yes none
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Doesn't have an accessible
Control Type: Group
Doesn't have an accessible
Not mapped
td Yes Yes none
Role: ROLE_SYSTEM_CELL
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_CELL
Interfaces: IAccessibleTableCell; IAccessibleText2; IAccessibleHypertext2
Control Type: Data Item
Role: ROLE_TABLE_CELL
Interfaces: Text; Hypertext
AXRole: AXCell
AXSubrole: (nil)
AXRoleDescription: cell
template No Yes ? ?
Not mapped
?
Not mapped
?
textarea Yes Yes textbox role, with the aria-multiline property set to "true"
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_TEXT
States: IA2_STATE_MULTI_LINE; STATE_SYSTEM_READONLY if readonly, otherwise IA2_STATE_EDITABLE
Actions: activate
Interfaces: IAccessibleText2; IAccessibleEditableText
Control Type: Text ??Edit??
Role: ROLE_ENTRY
States: STATE_MULTI_LINE; STATE_EDITABLE if not readonly
Actions: activate
Interfaces: Text; EditableText
AXRole: AXTextArea
AXSubrole: (nil)
AXRoleDescription: text entry area
tfoot Yes Yes none
Role: ROLE_SYSTEM_GROUPING
Use MSAA or UIA guidance
Doesn't have an accessible
Control Type: Group
Doesn't have an accessible
Not mapped
th (is neither a column header nor a row header) Yes Yes none
Role: ROLE_SYSTEM_CELL
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_CELL
Interfaces: IAccessibleTableCell; IAccessibleText2; IAccessibleHypertext2
Control Type: Data Item
Role: ROLE_TABLE_CELL
Interfaces: Text; Hypertext
AXRole: AXCell
AXSubrole: (nil)
AXRoleDescription: cell
th (is a column header) Yes Yes none
Role: ROLE_SYSTEM_COLUMNHEADER
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_COLUMNHEADER
Interfaces: IAccessibleTableCell; IAccessibleText2; IAccessibleHypertext2
Control Type: Header
Properties: UIA_OrientationPropertyId set to OrientationType_Vertical
??seems like it should be HeaderItem.  ARIA UAIG has DataItem??
Role: ROLE_COLUMN_HEADER
Interfaces: Text; Hypertext
AXRole: AXCell
AXSubrole: (nil)
AXRoleDescription: cell
Properties: Parent table implements AXColumnHeaderUIElements as a list of pointers to the column header cells, and AXHeader property as a pointer to the row or group containing the column header cells.
th (is a row header) Yes Yes none
Role: ROLE_SYSTEM_ROWHEADER
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_ROWHEADER
Interfaces: IAccessibleTableCell; IAccessibleText2; IAccessibleHypertext2
Control Type: Header
Properties: UIA_OrientationPropertyId set to OrientationType_Horizontal
??seems like it should be HeaderItem.  ARIA UAIG has DataItem??
Role: ROLE_ROW_HEADER
Interfaces: Text; Hypertext
AXRole: AXCell
AXSubrole: (nil)
AXRoleDescription: cell
Properties: Parent table implements AXRowHeaderUIElements property as a list of pointers to the row header cells.
thead Yes Yes none
Role: ROLE_SYSTEM_GROUPING
Doesn't have an accessible
Control Type: Header
Doesn't have an accessible
Not mapped
time No Yes none
Role: ROLE_SYSTEM_TEXT
Not mapped
?
Not mapped
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
title Yes Yes none
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
tr Yes Yes none
Role: ROLE_SYSTEM_ROW
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_ROW
Control Type: Data Item
Control Pattern: SelectionItem
Role: ROLE_LIST_ITEM
AXRole: AXRow
AXSubrole: AXTableRow
AXRoleDescription: row
track No Yes ? ?
Not mapped
?
Not mapped
?
u ? ? ? ?
Doesn't have an accessible, mapped as "text-underline-style:solid" text attribute on its text container.
?
Doesn't have an accessible, mapped as "text-underline-style:solid" text attribute on its text container.
?
ul Yes Yes list role
Role: ROLE_SYSTEM_LIST
States: STATE_SYSTEM_READONLY
Use MSAA or UIA guidance
Role: ROLE_SYSTEM_LIST
States: STATE_SYSTEM_READONLY
Control Type: List
Role: ROLE_LIST
AXRole: AXList
AXSubrole: AXContentList
AXRoleDescription: list
var Yes Yes none
Role: ROLE_SYSTEM_TEXT
Use MSAA or UIA guidance
Doesn't have an accessible, used styles are mapped to text attributes on its text container.
Control Type: Text (Note: not Group, because it would usually only contain a word.)
Doesn't have an accessible, used styles are mapped to text attributes on its text container.
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
video No Yes none ?
Role: ROLE_SYSTEM_GROUPING
?
Role: ROLE_PANEL
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group
Note: UI controls within the video element exposed as AXToolbar.
wbr No Yes none
Not mapped
A line break if added is exposed via IAccessibleText on its text container
Not mapped
A line break if added is exposed via Text interface on its text container
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: group

4. HTML Attribute to Accessibility API State and Property Mapping Matrix

Mappings of HTML attributes (excluding event handler content attributes) to platform accessibility APIs: ARIA, MSAA + UIA Express, MSAA + IAccessible2, UIA, AT-SPI, and AX
Attribute Element(s) HTML4 HTML5 WAI-ARIA MSAA + UIA Express MSAA + IAccessible2 UIA AT-SPI AX Comments
abbr th Yes Yes not mapped  
Object attributes: "abbr" until child abbr element is provided
 
Object attributes: "abbr" until child abbr element is provided
   
accept input Yes Yes not mapped  
Not mapped
 
Not mapped
   
accept-charset form Yes Yes not mapped  
Not mapped
 
Not mapped
   
accesskey HTML elements Yes Yes not mapped accKeyboardShortcut
a key binding accessible by accKeyboardShortcut and IAccessibleAction::keyBinding
AcceleratorKey AXAccessKey  
action form Yes Yes not mapped  
Not mapped
 
Not mapped
   
allowfullscreen iframe No Yes  
Not mapped
 
Not mapped
   
alt area; img; input Yes Yes not mapped accName Used for accessible name, exposed via accName Name Used for accessible name, exposed via Accessible::name AXDescription  
async script No Yes not mapped  
Not mapped
 
Not mapped
   
autocomplete
"on|off"
form No Yes

aria-autocomplete

note: the ARIA attribute and the HTML attribute have disparate features.

not mapped
States: STATE_SUPPORTS_AUTOCOMPLETION on text form controls unitl the value is overriden by control
not mapped
States: STATE_SUPPORTS_AUTOCOMPLETION on text form controls unitl the value is overriden by control
not mapped  
autocomplete input; select; textarea No Yes

aria-autocomplete

note: the ARIA attribute and the HTML attribute have disparate features.

not mapped
States: STATE_SUPPORTS_AUTOCOMPLETION
not mapped not mapped  
autofocus button; input; keygen; select; textarea No Yes not mapped - aria-flowto? N/A
Not mapped
N/A
Not mapped
N/A  
autoplay audio; video No Yes not mapped N/A
Not mapped
N/A
Not mapped
N/A  
border table Yes Yes not mapped  
Not mapped
 
Not mapped
   
challenge keygen No Yes not mapped  
Not mapped
 
Not mapped
   
charset meta No Yes not mapped  
Not mapped
 
Not mapped
   
charset script Yes Yes not mapped  
Not mapped
 
Not mapped
   
checked (if present) menuitem; input Yes Yes aria-checked (state)="true" Set the STATE_SYSTEM_CHECKED state
States: STATE_SYSTEM_CHECKED
Expose as ToggleState property in Toggle Control Pattern
States: STATE_CHECKED
AXValue="1"  
checked (if absent) menuitem; input Yes Yes aria-checked (state)="false" Clear the STATE_SYSTEM_CHECKED state
Not mapped
Expose as ToggleState property in Toggle Control Pattern.
Not mapped
AXValue="0"  
cite blockquote; del; ins; q Yes Yes    
Not mapped
 
Not mapped
AXURL  
class HTML elements Yes Yes not mapped  
Not mapped
 
Not mapped
   
cols textarea Yes Yes    
Not mapped
 
Not mapped
AXRangeForLine  
colspan td; th Yes Yes    
exposed via IAccessibleTableCell::columnExtent
 
exposed via Table::getColumnExtentAt
AXColumnIndexRange
pos=column index; len=colspan value
 
command menuitem No Yes not mapped  
Not mapped
 
Not mapped
   
content meta Yes Yes not mapped  
Not mapped
 
Not mapped
   
contenteditable HTML elements No Yes    
States: IA2_STATE_EDITABLE on this and every nested text accessible
Interfaces: IAccessibleEditableText on this and every nested text accessible
 
States: STATE_EDITABLE on this and every nested text accessible
Interfaces: EditableText on this and every nested text accessible
?  
contextmenu HTML elements No Yes aria-haspopup="true" Expose as STATE_SYSTEM_HASPOPUP. If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU.
Linked menu is available in browser's context menu on the element
Expose state of the pop-up activities in the ExpandCollapseState property in the ExpandCollapse Control Pattern.
Linked menu is available in browser's context menu on the element
Expose AXShowMenu and AXPress actions  
controls audio; video No Yes    
Not mapped.
 
Not mapped.
Controls exposed as AXToolbar  
coords area Yes Yes not mapped  
Defines an accessible's dimensions (IAccessible::accLocation)
 
Defines an accessible's dimensions (Component::getPosition and Component::getSize)
   
crossorigin audio; img; link; script; video No Yes not mapped  
Not mapped
 
Not mapped
   
data object Yes Yes not mapped  
Not mapped
 
Not mapped
   
datetime del; ins No Yes    
Not mapped
 
Not mapped
?  
datetime time No Yes    
Not mapped
 
Not mapped
?  
default track No Yes not mapped  
Not mapped
 
Not mapped
   
defer script Yes Yes not mapped  
Not mapped
 
Not mapped
   
dir HTML elements ? Yes    
Exposed as "writing-mode" text attribute on the text container.
 
Exposed as "writing-mode" text attribute on the text container.
?  
dirname input; textarea ? Yes    
Not mapped
 
Not mapped
?  
disabled button; menuitem; fieldset; input; keygen; optgroup; option; select; textarea Yes Yes    
States: STATE_SYSTEM_UNAVAILABLE
 
States: No interactive states like STATE_FOCUSABLE
AXEnabled="false"  
download a; area No Yes    
Not mapped
 
Not mapped
?  
draggable HTML elements No Yes    
Object attributes: draggable:true
 
Object attributes: draggable:true
?  
dropzone HTML elements No Yes    
Not mapped
 
Not mapped
?  
enctype form Yes Yes not mapped  
Not mapped
 
Not mapped
   
for label Yes Yes not mapped  
Used for accessible name
Relations: IA2_RELATION_LABEL_FOR and IA2_RELATION_LABEL_BY relations between label and referred element
 
Used for accessible name
Relations: RELATION_LABEL_FOR and RELATION_LABEL_BY relations between label and referred element
   
for output No Yes not mapped  
Relations: IA2_RELATION_CONTROLLED_BY with an element pointed by the attribute. Paired element exposes IA2_RELATION_CONTROLLER_FOR relation.
 
Relations: RELATION_CONTROLLED_BY with an element pointed by the attribute. Paired element exposes RELATION_CONTROLLER_FOR relation.
   
form button; fieldset; input; keygen; label; object; output; select; textarea No Yes not mapped  
Not mapped
 
Not mapped
   
formaction button; input No Yes not mapped  
Not mapped
 
Not mapped
   
formenctype button; input No Yes not mapped  
Not mapped
 
Not mapped
   
formmethod button; input No Yes not mapped  
Not mapped
 
Not mapped
   
formnovalidate button; input No Yes not mapped  
Not mapped
 
Not mapped
   
formtarget button; input No Yes not mapped  
Not mapped
 
Not mapped
   
headers td; th Yes Yes    
Links the cell to its header cells. Exposed via IAccessibleTableCell::rowHeaderCells and columnHeaderCells.
 
Links the cell to its row and column header cells (note, only one row and one column header cells can be exposed because of API restrictions). See Table::getRowHeader and getColumnHeader.
Expose via AXColumnHeaderUIElements and AXRowHeaderUIElements  
height canvas; embed; iframe; img; input; object; video Yes Yes not mapped  
Defines an accessible's height (IAccessible::accLocation)
 
Defines an accessible's height (Component::getSize)
   
hidden HTML elements No Yes    
Makes the element not accessible
 
Makes the element not accessible
Not exposed in AX API  
high meter No Yes    
Not mapped
 
Not mapped
?  
href a; area Yes Yes    
Creates a link accessible, for details refer to a and area elements mapping.
 
Creates a link accessible, for details refer to a and area elements mapping.
AXURL  
hreflang a; area; link Yes Yes    
Not mapped
 
Not mapped
   
http-equiv meta Yes Yes not mapped  
Not mapped
 
Not mapped
   
icon menuitem No Yes not mapped  
Not mapped
 
Not mapped
   
id HTML elements Yes Yes not mapped  
Not mapped
 
Not mapped
   
ismap img Yes Yes not mapped  
Not mapped
 
Not mapped
   
keytype keygen No Yes not mapped  
Not mapped
 
Not mapped
   
kind track No Yes    
Not mapped
 
Not mapped
   
label menuitem; menu; optgroup; option; track ? Yes    
Associates the accessible name
 
Associates the accessible name
   
lang HTML elements Yes Yes    
Exposed as "language" text attribute on the text container
 
Exposed as "language" text attribute on the text container
   
list input No Yes not mapped  
Associates the autocomplete list with the control. Refer to input elements mapping.
 
Associates the autocomplete list with the control. Refer to input elements mapping.
   
longdesc img, frame, iframe Yes No No accdescription (Internet Explorer only)
Actions: showlongdesc (exposed on img only)
Not mapped
Actions: showlongdesc (exposed on img only)
Not mapped
IE 8+ populates the accdescription with the value of the longdesc attribute. This is brittle as it is overwritten when aria-describedby is used.
loop audio; video No Yes not mapped  
Not mapped
 
Not mapped
   
low meter No Yes    
Not mapped
 
Not mapped
   
manifest html No Yes not mapped  
Not mapped
 
Not mapped
   
max input No Yes    
Exposed as IAccessibleValue::maximumValue if the element implements the interface
 
Exposed as Value::maximumValue if the element implements the interface
AXMaxValue  
max meter; progress No Yes    
Exposed as IAccessibleValue::maximumValue if the element implements the interface
 
Exposed as Value::maximumValue if the element implements the interface
AXMaxValue  
maxlength input; textarea Yes Yes    
Not mapped
 
Not mapped
   
media link; source; style ? Yes    
Not mapped
 
Not mapped
   
mediagroup audio; video No Yes not mapped  
Not mapped
 
Not mapped
   
method form Yes Yes not mapped  
Not mapped
 
Not mapped
   
min input   Yes    
Exposed as IAccessibleValue::minimumValue if the element implements the interface
 
Exposed as Value::minimumValue if the element implements the interface
AXMinValue  
min meter No Yes    
Exposed as IAccessibleValue::minimumValue if the element implements the interface
 
Exposed as Value::minimumValue if the element implements the interface
AXMinValue  
multiple input Yes Yes the aria-multiselectable property set to "true"  
Not mapped
 
Not mapped
   
multiple select Yes Yes    
States: STATE_SYSTEM_MULTISELECTABLE
A multi selectable listbox accessible, refer to select element
 
States: STATE_SYSTEM_MULTISELECTABLE
A multi selectable listbox accessible, refer to select element
   
muted audio; video No Yes not mapped  
Not mapped
 
Not mapped
   
name button; fieldset; input; keygen; output; select; textarea Yes Yes not mapped  
Not mapped
 
Not mapped
   
name form Yes Yes not mapped  
Not mapped
 
Not mapped
   
name iframe; object Yes Yes not mapped  
Not mapped
 
Not mapped
   
name map Yes Yes not mapped  
Not mapped
 
Not mapped
   
name meta Yes Yes not mapped  
Not mapped
 
Not mapped
   
name param Yes Yes not mapped  
Not mapped
 
Not mapped
   
novalidate form No Yes not mapped  
Not mapped
 
Not mapped
   
open details No Yes aria-expanded="true | false" STATE_SYSTEM_EXPANDED
STATE_SYSTEM_COLLAPSED
STATE_SYSTEM_EXPANDED
STATE_SYSTEM_COLLAPSED
ExpandCollapsePattern STATE_COLLAPSED
STATE_EXPANDED
boolean AXExpanded Set properties on the summary element.
open dialog No Yes aria-expanded="true | false" STATE_SYSTEM_EXPANDED
STATE_SYSTEM_COLLAPSED
STATE_SYSTEM_EXPANDED
STATE_SYSTEM_COLLAPSED
ExpandCollapsePattern STATE_COLLAPSED
STATE_EXPANDED
boolean AXExpanded
optimum meter No Yes    
Not mapped
 
Not mapped
   
pattern input No Yes    
States: IA2_STATE_INVALID_ENTRY if value doesn't meet the pattern
 
States: STATE_INVALID_ENTRY if value doesn't meet the pattern
   
placeholder input; textarea No Yes    
Associates the accessible name or if it was provided otherwise then accessible description
 
Associates the accessible name or if it was provided otherwise then accessible description
AXPlaceholderValue  
poster video No Yes    
Not mapped
 
Not mapped
   
preload audio; video No Yes    
Not mapped
 
Not mapped
   
radiogroup menuitem No Yes    
Not mapped
 
Not mapped
   
readonly input; textarea Yes Yes   STATE_SYSTEM_READONLY
Adds STATE_SYSTEM_READONLY bit to input and textarea elements
 
Removes STATE_EDITABLE bit bit from input and textarea elements
AXEnabled="false"  
rel a; area; link   Yes    
Not mapped
 
Not mapped
   
required input; select; textarea No Yes aria-required

Not mapped *

* Exposed as STATE_SYSTEM_ALERT_LOW, STATE_SYSTEM_ALERT_HIGH in Firefox.

Exposes STATE_REQUIRED
Expose as IsrequiredForForm property.
Exposes STATE_REQUIRED
AXRequired="true" ?
reversed ol ? Yes    
Changes the numbering of underlying list item accessibles
 
Changes the numbering of underlying list item accessibles
   
rows textarea Yes Yes    
Not mapped
 
Not mapped
   
rowspan td; th Yes Yes    
exposed via IAccessibleTableCell::rowExtent
 
exposed via Table::getRowExtentAt
AXRowIndexRange
pos=row index; len=rowspan value
 
sandbox iframe No Yes    
Not mapped
 
Not mapped
   
spellcheck HTML elements No Yes    
Mapped to "invalid" text attribute on the text container
 
Mapped to "invalid" text attribute on the text container
   
scope th Yes Yes    
Defines whether the element is a row or column header (refer to th element)
 
Defines whether the element is a row or column header (refer to th element)
   
scoped style No Yes    
Not mapped
 
Not mapped
   
seamless iframe No Yes    
Not mapped
 
Not mapped
   
selected option Yes Yes    
Exposed as STATE_SYSTEM_SELECTED and if the container widget has DOM focus then STATE_SYSTEM_FOCUSED (refer to option element)
 
Exposed as STATE_SELECTED and if the container widget has DOM focus then STATE_FOCUSED (refer to option element)
   
shape area Yes Yes    
Not mapped
 
Not mapped
   
size input; select Yes Yes    
If greater than 1 then creates a listbox accessible, refer to select element for details
 
If greater than 1 then creates a listbox accessible, refer to select element for details
   
sizes link No Yes    
Not mapped
 
Not mapped
   
span col; colgroup Yes Yes    
exposed as IAccessibleTableCell::columnExtent on all cells at the column
 
exposed via Table::getColumnExtentAt
   
src audio; embed; iframe; img; input; script; source; track; video Yes Yes    
Object attributes: src on img only
 
Object attributes: src on img only
   
srcdoc iframe No Yes    
Not mapped
 
Not mapped
   
srclang track No Yes    
Not mapped
 
Not mapped
   
start ol   Yes    
Changes the numbering of underlying list item accessibles
 
Changes the numbering of underlying list item accessibles
   
step input No Yes    
Not mapped
 
Exposed as Value::minimumIncrement if the element implements the interface
   
style HTML elements Yes Yes not mapped  
Refer to CSS accessibility mapping
 
Refer to CSS accessibility mapping
   
tabindex HTML elements Yes Yes not mapped  
States: STATE_SYSTEM_FOCUSABLE; when the element has DOM focus then STATE_SYSTEM_FOCUSED
 
States: STATE_FOCUSABLE; when the element has DOM focus then STATE_FOCUSED
   
target a; area Yes Yes    
Not mapped
 
Not mapped
   
target base Yes Yes    
Not mapped
 
Not mapped
   
target form Yes Yes    
Not mapped
 
Not mapped
   
title HTML elements Yes Yes    
Associates the accessible name or if it was provided otherwise then accessible description
 
Associates the accessible name or if it was provided otherwise then accessible description
AXHelp  
title abbr; dfn Yes Yes    
Associates the accessible name
 
Associates the accessible name
AXHelp  
title menuitem No Yes    
Associates the accessible name or if it was provided otherwise then accessible description
 
Associates the accessible name or if it was provided otherwise then accessible description
AXHelp  
title link; style Yes Yes    
Not mapped
 
Not mapped
Not mapped
 
translate HTML elements No Yes    
Not mapped
 
Not mapped
   
type button Yes Yes    
submit type may be a default button in the form
 
submit type may be a default button in the form
   
type button; input Yes Yes    
Defines the accessible role, states and other properties, refer to type="text", type="passowrd", type="button", etc
 
Defines the accessible role, states and other properties, refer to type="text", type="passowrd", type="button", etc
   
type menuitem No Yes    
Defines the accessible role and states, refer to type="command"
 
Defines the accessible role and states: type="command"
   
type embed; object; script; source; style Yes Yes    
Not mapped
 
Not mapped
   
type menu No Yes    
Not mapped
 
Not mapped
   
typemustmatch object No Yes    
Not mapped
 
Not mapped
   
usemap img; object Yes Yes    
Responsible for image map creation, refer to img element
 
Responsible for image map creation, refer to img element
   
value button; option Yes Yes    
Not mapped
 
Not mapped
   
value input Yes Yes    
Associates the accessible value for entry type input elements and accessible name for button type input elements
 
Associates the accessible value for entry type input elements and accessible name for button type input elements
AXValue  
value li   Yes    
Exposed as a text of first child of the list item accessible
 
Exposed as a text of first child of the list item accessible
   
value meter; progress No Yes    
Exposed as IAccessibleValue::currentValue
 
Exposed as Value::currentValue
AXValue  
value param Yes Yes    
Not mapped
 
Not mapped
   
width canvas; embed; iframe; img; input; object; video Yes Yes    
Defines an accessible's width (IAccessible::accLocation)
 
Defines an accessible's width (Component::getSize)
AXSize
w=n
 
wrap textarea No Yes    
Not mapped
 
Not mapped
   

5. Other Accessibility Implementations

This section is non-normative.

5.1 Use of MSAA VARIANT by Some User Agents

This section is non-normative.

In MSAA, the VARIANT returned by the IAccessible::get_accRole method is limited to a finite number of integer role constants insufficient for describing every HTML element, especially new elements introduced by HTML5. To address this limitation, some user agents, e.g., Firefox and Chrome in cooperation with some screen readers, have elected to expose new roles by returning a string value in that VARIANT in a way that is not described by the MSAA specification.

5.2 Use of the DOM by Some Assistive Technologies

Note

to do

6. Accessible Name and Description calculation

The terms accessible name and accessible description are properties provided in all accessibility APIs. The name of the properties may differ across APIs but they serve the same function: as a container for a short (name) or longer (description) string of text.

6.1 input type="text", input type="password", input type="search", input type="tel", input type="url" and textarea element

If the control has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

The accessible description is derived from the following sources: aria-describedby or a non-empty placeholder attribute or a non-empty title attribute.

input type="text", input type="password", input type="search", input type="tel", input type="email", input type="url" and textarea element accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use the associated label element
  4. Otherwise use the placeholder attribute
  5. Otherwise use the title attribute
  6. If none of the above yield a usable text string there is no accessible name

input type="text", input type="password", input type="search", input type="tel", input type="email", input type="url" and textarea element accessible description calculation

  1. Use aria-describedby
  2. Otherwise use the placeholder attribute if it wasn't used as the accessible name
  3. Otherwise use the title attribute if it wasn't used as the accessible name.
  4. If none of the above yield a usable text string there is no accessible description

6.2 input type="button", input type="submit" and input type="reset"

If the control has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Otherwise the accessible name is derived from the following sources; a non-empty value attribute, or a non-empty title attribute.

input type="button" , input type="submit" and input type="reset" accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use the value attribute
  4. For input type=submit: If steps 1 to 3 do not yield a usable text string, the accessible name is a localized string of the word "submit"
  5. For input type=reset: If steps 1 to 3 do not yield a usable text string, the accessible name is a localized string of the word "reset"
  6. Otherwise use title attribute
  7. If none of the above yield a usable text string there is no accessible name

input type="button" , input type="submit" and input type="reset" accessible description calculation

  1. use aria-describedby
  2. Otherwise use the value attribute if it wasn't used as the accessible name
  3. Otherwise use the title attribute if it wasn't used as the accessible name
  4. If none of the above yield a usable text string there is no accessible description

6.3 input type="image"

If the control has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Otherwise the accessible name is derived from the following sources; a non-empty alt attribute, or a non-empty title attribute.

input type="image" accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use alt attribute
  4. Otherwise use value attribute
  5. Otherwise the user agent may provide an accessible name via a localized string of the phrase "Submit Query"
  6. Otherwise use title attribute
  7. If none of the above yield a usable text string there is no accessible name

input type="image" accessible description calculation

  1. use aria-describedby
  2. Otherwise use the title attribute if it wasn't used as the accessible name.
  3. If none of the above yield a usable text string there is no accessible description

6.4 button element

If the button element has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Otherwise the accessible name is derived from the following sources; non-empty button element subtree or a non-empty title attribute.

button element accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use the button element subtree
  4. Otherwise use title attribute
  5. If none of the above yield a usable text string there is no accessible name

button element accessible description calculation

  1. use aria-describedby
  2. Otherwise use the title attribute if it wasn't used as the accessible name.

6.5 Other form elements

If the control has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Otherwise the accessible name is derived from the following sources; a non-empty associated label element or a non-empty title attribute.

Other form elements accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use label element
  4. Otherwise use title attribute
  5. If none of the above yield a usable text string there is no accessible name

Other form elements accessible description calculation

  1. use aria-describedby
  2. Otherwise use the title attribute if it wasn't used as the accessible name.
  3. If none of the above yield a usable text string there is no accessible description

6.6 summary element

If the summary element has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Otherwise the accessible name is derived from the following sources; non-empty summary element subtree or a non-empty title attribute or the default text string inserted by the browser

summary element accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use summary element subtree
  4. Otherwise use title attribute
  5. If none of the above yield a usable text string the user agent should provide its own text string (e.g. "Details")

summary element accessible description calculation

  1. Use aria-describedby
  2. Otherwise use summary element subtree if not used as the accessible name
  3. Otherwise use the title attribute if it wasn't used as the accessible name
  4. If none of the above yield a usable text string there is no accessible description

6.7 figure and figcaption elements

If the figure element has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

figure element accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use figcaption subtree
  4. Otherwise use title attribute
  5. If none of the above yield a usable text string there is no accessible name

figure element accessible description calculation

  1. Use aria-describedby
  2. Otherwise use the title attribute if it wasn't used as the accessible name.
  3. If none of the above yield a usable text string there is no accessible description.

6.8 img element

If the img element has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

img element accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use alt attribute
  4. Otherwise use title attribute
  5. If none of the above yield a usable text string there is no accessible name

img element accessible description calculation

  1. use aria-describedby
  2. Otherwise use the title attribute if it wasn't used as the accessible description.

6.9 table element

If the table element has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

table element accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use caption element
  4. Otherwise use the title attribute
  5. Otherwise use the summary attribute
  6. If none of the above yield a usable text string there is no accessible name

table element accessible description calculation

  1. Use aria-describedby
  2. Otherwise use the caption element if it wasn't used as the accessible description
  3. Otherwise use the summary attribute if it wasn't used as the accessible description
  4. Otherwise use the title attribute if it wasn't used as the accessible description
  5. If none of the above yield a usable text string there is no accessible description

6.10 a element

If the a element has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

a element accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use a element subtree
  4. Otherwise use the title attribute
  5. Otherwise use the summary attribute
  6. If none of the above yield a usable text string there is no accessible name

a element accessible description calculation

  1. Use aria-describedby
  2. Otherwise use the title attribute if it wasn't used as the accessible description
  3. If none of the above yield a usable text string there is no accessible description

6.11 Text level elements not listed elsewhere

em, strong, small, s, cite, q, dfn, abbr, time, code, var, samp, kbd, sub and sup, i, b, u, mark, ruby, rt, rp, bdi, bdo, br, wbr

If the element has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Text level element accessible name calculation

  1. Use aria-labelledby
  2. Otherwise use aria-label
  3. Otherwise use the title attribute
  4. If none of the above yield a usable text string there is no accessible name

Text level element accessible description calculation

  1. Use aria-describedby
  2. Otherwise use the title attribute if it wasn't used as the accessible name
  3. If none of the above yield a usable text string there is no accessible description

7. Accessible feature implementation examples:

7.1 summary and details elements

Focus and keyboard interaction

The summary element should be focusable by default.

The details element should not focusable by default.

Pressing the spacebar or enter key when the summary element has focus will show the details element content if the content is hidden. If the details element content is showing and the summary element has focus, pressing the spacebar or enter key will hide the details element content.

Role, name, state and property mapping

The summary element should be mapped to a disclosure triangle role in accessibility APIs that have such a role. For example the Mac accessibility API includes the AXDisclosureTriangle role. In accessibility APIs that do not have such a fine grained role, the summary element should be mapped to a button role. The role mapping table contains recommended mappings for the summary element.

The default accessible name for the summary element is the text content of the summary element.

When the details element content is hidden, the state of the content should be reflected by an accessible state or property.

Example 1: In the Mac accessibility API on the summary element (AXDisclosureTriangle), set AXExpanded property to false. When the details element content is shown, on the summary element (AXDisclosureTriangle), set theAXExpanded property to true. The hidden and shown states of the details element content is reflected by the absence or presence of the open attribute.

Example 2: In the IA2 accessibility API on the summary element (ROLE_SYSTEM_PUSHBUTTON), set STATE_SYSTEM_COLLAPSED. When the details element content is shown, on the summary element (ROLE_SYSTEM_PUSHBUTTON), set STATE_SYSTEM_ EXPANDED. The hidden and shown states of the details element content is reflected by the absence or presence of the open attribute.

7.2 The figure and figcaption elements

Note

to do

8. Table algorithm

The algorithm is a heuristic to determine if table is most likely used for layout, it is currently implemented in Firefox only.

Note

to do

8.1 Notes

A. Acknowledgements

A.1 Enabling funders

The development of this publication is being funded in part by Adobe Systems. The content of this publication does not necessarily reflect the views or policies of Adobe, nor does mention of trade names, commercial products, or organizations imply endorsement by Adobe.

The development of this publication is being funded in part by The Paciello Group. The content of this publication does not necessarily reflect the views or policies of The Paciello Group, nor does mention of trade names, commercial products, or organizations imply endorsement by The Paciello Group.