W3C

HTML to Platform Accessibility APIs Implementation Guide

A user agent developer's guide to understanding and implementing accessibility support in HTML

W3C Working Draft 29 March 2012

This version:
http://www.w3.org/TR/2012/WD-html-aapi-20120329/
Latest published version:
http://www.w3.org/TR/html-aapi/
Latest editor's draft:
http://dev.w3.org/html5/html-api-map/
Previous versions:
http://www.w3.org/TR/2011/WD-html-aapi-20110525/
http://www.w3.org/TR/2011/WD-html-aapi-20110414/
Editors:
Steve Faulkner, The Paciello Group sfaulkner@paciellogroup.com
Cynthia Shelly, Microsoft cyns@microsoft.com

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 an Editor's Draft. If you wish to make comments regarding this document, please send them to public-html@w3.org (subscribe, archives). All feedback is 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

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

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:

a (represents a hyperlink)
HTML4yes
HTML5yes
WAI-ARIAlink role
MSAAROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants.
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAHyperLink
IAccessible2ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants.
AT-SPIROLE_LINK
AX
AXRole
AXSubrole
AXRoleDescription
AXLink
(null)
link
a (no href attribrute)
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
abbr
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIObject attribute role="abbr"
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
address
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAGroup
IAccessible2Object attribute role="address"
AT-SPIObject attribute role="address"
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
area (represents a hyperlink)
HTML4yes
HTML5yes
WAI-ARIAlink role
MSAAROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants.
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAHyperLink
IAccessible2ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants.
AT-SPIROLE_LINK
AX
AXRole
AXSubrole
AXRoleDescription
AXLink
(null)
link
area (no href attribute)
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
IAccessible2ROLE_SYSTEM_TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXScrollArea
(null)
scroll area
article
HTML4no
HTML5yes
WAI-ARIAarticle role
MSAAROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY

??ROLE_SYSTEM_GROUPING?
MSAA + UIA ExpressUse MSAA or UIA guidance
UIA??Group or Text??
IAccessible2ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY
AT-SPIROLE_DOCUMENT_FRAME + do not expose STATE_EDITABLE
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
AXDocumentArticle
article
aside
HTML4no
HTML5yes
WAI-ARIAcomplementary role
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAGroup
IAccessible2Object attribute role="complementary"
AT-SPIObject attribute role="complementary"
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
AXLandmarkComplementary
complementary
audio
HTML4no
HTML5yes
WAI-ARIAnone
MSAA?
MSAA + UIA Express?
UIAGroup
IAccessible2?
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription

AXGroup
(null)
group

Note: UI controls within the audio element exposed as AXToolbar.

b
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
base
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAno mapping
MSAA + UIA Expressno mapping
UIAno mapping
IAccessible2no mapping
AT-SPIno mapping
AX
AXRole
AXSubrole
AXRoleDescription
no mapping
bdo
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAtext
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
blockquote
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAGroup
IAccessible2?
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
body
HTML4yes
HTML5yes
WAI-ARIAdocument role
MSAAROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY
MSAA + UIA ExpressUse MSAA or UIA guidance
UIADocument
IAccessible2ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY
AT-SPIROLE_DOCUMENT_FRAME + STATE_READONLY
AX
AXRole
AXSubrole
AXRoleDescription
AXWebArea
(null)
HTML content
br
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ WHITESPACE
MSAA + UIA Express?
UIA?
IAccessible2ROLE_SYSTEM_ WHITESPACE
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
?
button
HTML4yes
HTML5yes
WAI-ARIAbutton role
MSAAROLE_SYSTEM_PUSHBUTTON.
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAButton

?? When it is in a <menu> it defines a command.  Is it still a button, or is it a menuitem??
IAccessible2ROLE_SYSTEM_PUSHBUTTON
AT-SPIROLE_PUSH_BUTTON
AX
AXRole
AXSubrole
AXRoleDescription
AXButton
(null)
button
canvas
HTML4no
HTML5yes
WAI-ARIAnone
MSAASYSTEM_ROLE_GRAPHIC
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAImage

NOTE: subdom elements will be mapped separately
IAccessible2IA2_ROLE_CANVAS
AT-SPIROLE_GRAPHIC + STATE_ANIMATED.
AX
AXRole
AXSubrole
AXRoleDescription
AXImage
(null)
image
caption
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
+ STATE_SYSTEM_READONLY
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAtext
The parent table has a UIA_LabeledByPropertyId pointing to the UIA element for the caption element.
IAccessible2IA2_ROLE_CAPTION
AT-SPIROLE_CAPTION
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
cite
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT

??GROUP??
MSAA + UIA Expresstext
UIAtext
??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
code
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA Expresstext
UIAtext
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
col
HTML4yes
HTML5yes
WAI-ARIAnone
MSAA?ROLE_SYSTEM_COLUMN
MSAA + UIA ExpressROLE_SYSTEM_COLUMN
UIA?
IAccessible2ROLE_SYSTEM_GROUPING?
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
?
colgroup
HTML4yes
HTML5yes
WAI-ARIAnone
MSAA?ROLE_SYSTEM_GROUPING
MSAA + UIA Express?TODO:  look in more detail at UIA table implemenation
UIA?TODO:  look in more detail at UIA table implemenation
IAccessible2ROLE_SYSTEM_GROUPING?
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
?
command (in the command state whose parent is a menu)
HTML4no
HTML5yes
WAI-ARIAmenuitem role
MSAAROLE_SYSTEM_MENUITEM
MSAA + UIA ExpressUse UIA guidance
UIAMenuItem
IAccessible2ROLE_SYSTEM_MENUITEM
AT-SPIROLE_MENU_ITEM
AX
AXRole
AXSubrole
AXRoleDescription
AXMenuItem
(null)
menu item
command (in the command state whose parent is NOT a menu)
HTML4 
HTML5 
WAI-ARIA 
MSAA 
MSAA + UIA ExpressUse UIA guidance
UIAButton
IAccessible2 
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
 
command (in the checkbox state whose parent is a menu)
HTML4 
HTML5 
WAI-ARIA 
MSAA 
MSAA + UIA ExpressUse UIA guidance
UIAMenuItem with Toggle pattern
IAccessible2 
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
 
command (in the checkbox state whose parent is NOT a menu)
HTML4 
HTML5 
WAI-ARIA 
MSAA 
MSAA + UIA ExpressUse UIA guidance
UIACheckbox
IAccessible2 
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
 
command (in the radio state whose parent is a menu)
HTML4 
HTML5 
WAI-ARIA 
MSAA 
MSAA + UIA ExpressUse UIA guidance
UIAMenuItem with Toggle pattern
IAccessible2 
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
 
command (in the radio state parent is NOT a menu)
HTML4 
HTML5 
WAI-ARIA 
MSAA 
MSAA + UIA ExpressUse UIA guidance
UIARadioButton
IAccessible2 
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
 
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 list state
HTML4no
HTML5yes
WAI-ARIAmenuitemcheckbox role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise
MSAAROLE_SYSTEM_CHECKBUTTON
or ROLE_SYSTEM_MENUITEM
MSAA + UIA ExpressUse UIA guidance
UIAMenuItem with Toggle pattern
IAccessible2IA2_ROLE_CHECK_MENU_ITEM + object attribute checkable="true"
AT-SPIROLE_CHECK_MENU_ITEM + object attribute checkable="true"
AX
AXRole
AXSubrole
AXRoleDescription
AXCheckbox
(null)
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 list state
HTML4no
HTML5yes
WAI-ARIAmenuitem role
MSAAROLE_SYSTEM_MENUITEM
MSAA + UIA ExpressUse either MSAA or UIA guidance
UIAMenuItem
IAccessible2ROLE_SYSTEM_MENUITEM
AT-SPIROLE_MENU_ITEM
AX
AXRole
AXSubrole
AXRoleDescription
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 list state
HTML4no
HTML5yes
WAI-ARIAmenuitemradio role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise
MSAAROLE_SYSTEM_RADIOBUTTON or ROLE_SYSTEM_MENUITEM
MSAA + UIA ExpressUse UIA guidance
UIAMenuItem with Toggle pattern
IAccessible2IA2_ROLE_RADIO_MENU_ITEM + object attribute checkable="true"
AT-SPIROLE_RADIO_MENU_ITEM + object attribute checkable="true"
AX
AXRole
AXSubrole
AXRoleDescription
AXRadioButton
(null)
radio button
datalist
HTML4no
HTML5yes
WAI-ARIAlistbox role, with the aria-multiselectable property set to "false"
MSAAROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP.
MSAA + UIA ExpressUse UIA guidance
UIACombobox
IAccessible2ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP.
AT-SPIROLE_COMBO_BOX + STATE_EXPANDABLE
AX
AXRole
AXSubrole
AXRoleDescription
AXComboBox
(null)
combo box
dd
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA Express?
UIA?
IAccessible2IA2_ROLE_PARAGRAPH
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
AXDefinition
definition
del
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA Express?
UIA?
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
details
HTML4no
HTML5yes
WAI-ARIAnone
??dialog seems closer??
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA Express 
UIAGroup
??window??
IAccessible2ROLE_SYSTEM_GROUPING
AT-SPIROLE_PANEL
AX
AXRole
AXSubrole
AXRoleDescription
?
dfn
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA Express 
UIA?
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
dl
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA Express 
UIA?
IAccessible2IA2_ROLE_PARAGRAPH
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
AXList
AXDefinitionList
definition list
dt
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA Express 
UIA?
IAccessible2IA2_ROLE_PARAGRAPH
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
AXTerm
term
div
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA Express 
UIA?
IAccessible2IA2_ROLE_SECTION
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
em
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA Express 
UIA?
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
embed
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_CLIENT
MSAA + UIA Express 
UIA?Pane? Window?
IAccessible2ROLE_SYSTEM_CLIENT
AT-SPIROLE_EMBEDDED
AX
AXRole
AXSubrole
AXRoleDescription
depends on format of data file
fieldset
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressUse UIA or MSAA guidance
UIAGroup
IAccessible2ROLE_SYSTEM_GROUPING
AT-SPI

ROLE_PANEL
Object attribute role="fieldset"

AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
figcaption
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA Expressse UIA or MSAA guidance
UIAText
IAccessible2

IA2_ROLE_CAPTION
Object attribute role="figcaption"

AT-SPIROLE_CAPTION
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
figure
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA Expressse UIA or MSAA guidance
UIAGroup

??discuss graphic/image vs. group??
IAccessible2

ROLE_SYSTEM_GROUPING
Object attribute role="figure"

note: accessible name from child figcaption

AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
?
footer
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA Expressse UIA or MSAA guidance
UIAExpose as text string "footer" in UIAutomationType_String
??discuss exposing localized type for all unmapped elements, or is it better to expose as Group??
IAccessible2

 

Object attribute role="footer"

AT-SPIObject attribute role="footer"
AX
AXRole
AXSubrole
AXRoleDescription

AXGroup
AXLandmarkContentInfo
content

note: "content" not a useful or accurate description. Recommend AXRoleDescription: "footer"

Refer to Webkit bug 78967

form
HTML4yes
HTML5yes
WAI-ARIAform role
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA Expressse UIA or MSAA guidance
UIAGroup
IAccessible2IA2_ROLE_FORM
AT-SPIROLE_PANEL
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
AXLandmarkForm
form
frame
HTML4yes
HTML5no
WAI-ARIA 
MSAAROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY

??currently mapped as pane not document.  the document inside is mapped as document??
MSAA + UIA ExpressROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY

??currently mapped as pane not document.  the document inside is mapped as document??
UIADocument
IAccessible2ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY
AT-SPIROLE_DOCUMENT_FRAME + STATE_READONLY
AX
AXRole
AXSubrole
AXRoleDescription
AXWebArea
(null)
HTML content
frameset
HTML4yes
HTML5no
WAI-ARIA 
MSAA?
MSAA + UIA Express?
UIA?
IAccessible2?
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
?
head
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAno mapping
MSAA + UIA Expressno mapping
UIAno mapping
IAccessible2no mapping
AT-SPIno mapping
AX
AXRole
AXSubrole
AXRoleDescription
no mapping
header
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressROLE_SYSTEM_GROUPING
UIAGroup
(don't put header in localized type string because there
is a header role for table headers)
IAccessible2Object attribute role="header"
AT-SPIObject attribute role="header"
AX
AXRole
AXSubrole
AXRoleDescription

AXGroup
AXLandmarkBanner
banner

Note: recommend AXRoleDescription: "header" to disambiguate from "banner"

Refer to Webkit bug 78992

hgroup
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressROLE_SYSTEM_GROUPING
UIA 
IAccessible2ROLE_SYSTEM_GROUPING
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
?
h1 to h6 (with an hgroup ancestor)
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressROLE_SYSTEM_ TEXT
UIAText
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXHeading
(null)
heading
h1 to h6 (with NO hgroup ancestor)
HTML4yes
HTML5yes
WAI-ARIAheading role, with the aria-level property set to the element's outline depth
MSAAROLE_SYSTEM_TEXT or use xml-roles
MSAA + UIA ExpressROLE_SYSTEM_TEXT
UIAText
IAccessible2IA2_ROLE_HEADING Use the IAccessible2::attributes heading-level attribute to determine the heading level.
AT-SPIROLE_HEADING
AX
AXRole
AXSubrole
AXRoleDescription
AXHeading
(null)
heading
hr
HTML4yes
HTML5yes
WAI-ARIAseparator role
MSAAROLE_SYSTEM_SEPARATOR
MSAA + UIA ExpressROLE_SYSTEM_SEPARATOR
UIASeparator
IAccessible2ROLE_SYSTEM_SEPARATOR
AT-SPIROLE_SEPARATOR
AX
AXRole
AXSubrole
AXRoleDescription
?
HTML
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAno mapping
MSAA + UIA Expressno mapping
UIAno mapping
IAccessible2no mapping
AT-SPIno mapping
AX
AXRole
AXSubrole
AXRoleDescription
no mapping
i
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressROLE_SYSTEM_ TEXT
UIAText
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
iframe
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY

??pane??
MSAA + UIA ExpressROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY
UIADocument

??Pane??
IAccessible2ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY
AT-SPIROLE_DOCUMENT_FRAME + STATE_READONLY
AX
AXRole
AXSubrole
AXRoleDescription
AXWebArea
(null)
html content
img
HTML4yes
HTML5yes
WAI-ARIAimg role
MSAAROLE_SYSTEM_GRAPHIC
MSAA + UIA ExpressROLE_SYSTEM_GRAPHIC
UIAImage
IAccessible2ROLE_SYSTEM_GRAPHIC
AT-SPIROLE_IMAGE
AX
AXRole
AXSubrole
AXRoleDescription
AXImage
(null)
image
img (alt attribute is empty)
HTML4yes
HTML5yes
WAI-ARIApresentation role
MSAAROLE_SYSTEM_GRAPHIC with AccName set to empty string
MSAA + UIA ExpressROLE_SYSTEM_GRAPHIC with AccName set to empty string
UIAImage with NameProperty set to the empty string
IAccessible2

Do not expose this object

AT-SPIDo note expose this object
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
input (type attribute in the Button state)
HTML4yes
HTML5yes
WAI-ARIAbutton role
MSAAROLE_SYSTEM_PUSHBUTTON
MSAA + UIA ExpressROLE_SYSTEM_PUSHBUTTON
UIAButton
IAccessible2ROLE_SYSTEM_PUSHBUTTON
AT-SPIROLE_PUSH_BUTTON
AX
AXRole
AXSubrole
AXRoleDescription
AXButton
(null)
button
input (type attribute in the Button state and parent is a menu)
HTML4 
HTML5 
WAI-ARIA 
MSAA 
MSAA + UIA Express 
UIAMenuItem
IAccessible2 
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
 
input (type attribute in the Color state)
HTML4no
HTML5yes
WAI-ARIA 
MSAAwhen implmented as a textbox, ROLE_SYSTEM_TEXT

When implemented as a color picker, implement IUIAutomationSelectionPattern for the container and IUIAutomationSelectionItemPattern for each color choice
MSAA + UIA Express??
UIAIf implemented as a textbox, Edit

If implemented as a color picker, set localized control type string to Color Picker

Implement IUIAutomationSelectionPattern for the container and IUIAutomationSelectionItemPattern for each color choice
IAccessible2IA2_ROLE_COLOR_CHOOSER
AT-SPIROLE_COLOR_CHOOSER
AX
AXRole
AXSubrole
AXRoleDescription
If implemented as a textbox,
AXTextField
(null)
text field

If implemented as a color picker,
AXColorWell
(null)
color chooser
input (type attribute in the Checkbox state)
HTML4yes
HTML5yes
WAI-ARIAcheckbox 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
MSAAROLE_SYSTEM_CHECKBUTTON
MSAA + UIA ExpressMSAA ROLE_SYSTEM_CHECKBUTTON
UIACheckbox
IAccessible2Object attribute checkable="true"
AT-SPIROLE_CHECK_BOX + STATE_CHECKED
AX
AXRole
AXSubrole
AXRoleDescription
AXCheckBox
(null)
check box
input (type attribute in the Checkbox state and parent is a menu)
HTML4 
HTML5 
WAI-ARIA 
MSAA 
MSAA + UIA Express 
UIAMenuItem with Toggle pattern
IAccessible2 
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
 
input (type attribute in the Date state)
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_DROPLIST
MSAA + UIA ExpressUIA Calendar
UIACalendar
IAccessible2IA2_ROLE_DATE_EDITOR
AT-SPIROLE_CALENDAR (not supported by FF)
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the Date and Time state)
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_DROPLIST
MSAA + UIA ExpressUIA Calendar
UIACalendar
IAccessible2IA2_ROLE_DATE_EDITOR
AT-SPIROLE_CALENDAR (not supported by FF)
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the Local Date and Time state)
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_DROPLIST
MSAA + UIA ExpressUIA Calendar
UIACalendar
IAccessible2IA2_ROLE_DATE_EDITOR
AT-SPIROLE_CALENDAR (not supported by FF)
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the E-mail state with no suggestions source element)
HTML4no
HTML5yes
WAI-ARIAtextbox role
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressMSAA ROLE_SYSTEM_TEXT or
UIA Edit
UIAEdit
IAccessible2IA2_STATE_SINGLE_LINE
AT-SPIROLE_ENTRY + STATE_SINGLE_LINE
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the File Upload state)
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_PUSHBUTTON.
MSAA + UIA ExpressROLE_SYSTEM_PUSHBUTTON
UIAButton
IAccessible2IA2_ROLE_FILE_CHOOSER 
AT-SPIROLE_PUSH_BUTTON + ROLE_FILE_CHOOSER
AX
AXRole
AXSubrole
AXRoleDescription
AXButton
(null)
button
input (type attribute in the Hidden state)
HTML4yes
HTML5yes
WAI-ARIAnone
MSAA

Do not expose this object

MSAA + UIA ExpressDo not expose this object
UIADo not expose this object
IAccessible2Do not expose this object
AT-SPI

Do not expose this object

AX
AXRole
AXSubrole
AXRoleDescription
Do not expose this object
input (type attribute in the Image Button state)
HTML4yes
HTML5yes
WAI-ARIAbutton role
MSAAROLE_SYSTEM_PUSHBUTTON.
MSAA + UIA ExpressROLE_SYSTEM_PUSHBUTTON
UIAButton
IAccessible2ROLE_SYSTEM_PUSHBUTTON.
AT-SPIROLE_PUSH_BUTTON
AX
AXRole
AXSubrole
AXRoleDescription
AXButton
(null)
button
input (type attribute in the Image Button state and parent is a menu)
HTML4 
HTML5 
WAI-ARIA 
MSAA 
MSAA + UIA Express 
UIA?? does this define a command??
IAccessible2 
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
 
input (type attribute in the Month state)
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_DROPLIST
MSAA + UIA ExpressUIA Calendar
UIACalendar
IAccessible2IA2_ROLE_DATE_EDITOR
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the Number state)
HTML4no
HTML5yes
WAI-ARIAspinbutton role
MSAAROLE_SYSTEM_SPINBUTTON
MSAA + UIA ExpressROLE_SYSTEM_SPINBUTTON
UIASpinner
IAccessible2ROLE_SYSTEM_SPINBUTTON
AT-SPIROLE_SPIN_BUTTON
AX
AXRole
AXSubrole
AXRoleDescription

AXTextField
(null)
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)
HTML4yes
HTML5yes
WAI-ARIAtextbox role
MSAAROLE_SYSTEM_TEXT with STATE_SYSTEM_PROTECTED
MSAA + UIA ExpressMSAA ROLE_SYSTEM_TEXT with STATE_SYSTEM_PROTECTED

or
UIA Edit with UIA_IsPasswordPropertyId
UIAEdit with UIA_IsPasswordPropertyId
IAccessible2IA2_STATE_SINGLE_LINE
AT-SPIROLE_ENTRY + STATE_SINGLE_LINE
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
AXSecureTextField
secure text field
input (type attribute in the Radio Button state)
HTML4yes
HTML5yes
WAI-ARIAradio role, with the aria-checked state set to "true" if the element's checkedness is true, or "false" otherwise
MSAAROLE_SYSTEM_RADIOBUTTON
MSAA + UIA ExpressROLE_SYSTEM_RADIOBUTTON
UIARadioButton
IAccessible2ROLE_SYSTEM_RADIOBUTTON
AT-SPIROLE_RADIO_BUTTON
AX
AXRole
AXSubrole
AXRoleDescription
AXRadioButton
(null)
radio button
input (type attribute in the Radio Button state and parent is a menu)
HTML4 
HTML5 
WAI-ARIA 
MSAA 
MSAA + UIA Express 
UIAMenuItem with Toggle pattern
IAccessible2 
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
 
input (type attribute in the Range state)
HTML4no
HTML5yes
WAI-ARIAslider role
MSAAROLE_SYSTEM_SLIDER
MSAA + UIA ExpressROLE_SYSTEM_SLIDER
UIASlider
IAccessible2ROLE_SYSTEM_SLIDER
AT-SPIROLE_SLIDER
AX
AXRole
AXSubrole
AXRoleDescription

Slider:
AXSlider
(null)
slider

AXOrientation: AXHorizontalOrientation

Thumb:
AXValueIndicator
(null)
value indicator

Actions:
AXIncrement - increment
AXDecrement - decrement

input (type attribute in the Reset Button state)
HTML4yes
HTML5yes
WAI-ARIAbutton role
MSAAROLE_SYSTEM_PUSHBUTTON
MSAA + UIA ExpressROLE_SYSTEM_PUSHBUTTON
UIAButton
IAccessible2ROLE_SYSTEM_PUSHBUTTON
AT-SPIROLE_PUSH_BUTTON
AX
AXRole
AXSubrole
AXRoleDescription
AXButton
(null)
button
input (type attribute in the Search state with no suggestions source element)
HTML4no
HTML5yes
WAI-ARIAtextbox role
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressMSAA ROLE_SYSTEM_TEXT or
UIA Edit
UIAEdit
IAccessible2IA2_STATE_SINGLE_LINE
AT-SPIROLE_ENTRY + STATE_SINGLE_LINE
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
AXSearchField
search field
input (type attribute in the Submit Button state)
HTML4yes
HTML5yes
WAI-ARIAbutton role
MSAAROLE_SYSTEM_PUSHBUTTON
MSAA + UIA ExpressROLE_SYSTEM_PUSHBUTTON
UIAButton
IAccessible2ROLE_SYSTEM_PUSHBUTTON
AT-SPIROLE_PUSH_BUTTON
AX
AXRole
AXSubrole
AXRoleDescription
AXButton
(null)
button
input (type attribute in the Telephone state with no suggestions source element)
HTML4no
HTML5yes
WAI-ARIAtextbox role
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressMSAA ROLE_SYSTEM_TEXT or
UIA Edit
UIAEdit
IAccessible2IA2_STATE_SINGLE_LINE
AT-SPIROLE_ENTRY + STATE_SINGLE_LINE
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the Text state with no suggestions source element)
HTML4yes
HTML5yes
WAI-ARIAtextbox role
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressMSAA ROLE_SYSTEM_TEXT or
UIA Edit
UIAEdit
IAccessible2IA2_STATE_SINGLE_LINE
AT-SPIROLE_ENTRY + STATE_SINGLE_LINE
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the Text, Search, Telephone, URL, or E-mail states with a suggestions source element)
HTML4no
HTML5yes
WAI-ARIAcombobox role, with the aria-owns property set to the same value as the list attribute
MSAAROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP
MSAA + UIA ExpressROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP
UIACombobox
IAccessible2ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP
AT-SPIROLE_COMBO_BOX + STATE_EXPANDABLE + object attribute haspopup="true"
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the Time state)
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_SPINBUTTON
MSAA + UIA ExpressROLE_SYSTEM_SPINBUTTON
UIASpinner
IAccessible2ROLE_SYSTEM_SPINBUTTON
AT-SPIROLE_SPIN_BUTTON
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the URL state with no suggestions source element)
HTML4no
HTML5yes
WAI-ARIAtextbox role
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressMSAA ROLE_SYSTEM_TEXT or
UIA Edit
UIAEdit
IAccessible2IA2_STATE_SINGLE_LINE
AT-SPIROLE_ENTRY + STATE_SINGLE_LINE
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
input (type attribute in the Week state)
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_DROPLIST
MSAA + UIA ExpressUIA Calendar
UIACalendar
IAccessible2IA2_ROLE_DATE_EDITOR
AT-SPIROLE_CALENDAR
AX
AXRole
AXSubrole
AXRoleDescription
AXTextField
(null)
text field
ins
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressROLE_SYSTEM_ TEXT
UIA?text
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
keygen
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressROLE_SYSTEM_ TEXT
UIA?
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
keygen
HTML4no
HTML5yes
WAI-ARIAnone
MSAA?
MSAA + UIA Express 
UIA?
IAccessible2?
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
label
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressUse UIA guidance
UIAText. 
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.
IAccessible2IA2_ROLE_LABEL
AT-SPIROLE_LABEL
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
legend
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressROLE_SYSTEM_TEXT

SHOULD use UIA_LabeledByPropertyId (see UIA column)
UIAText. 
The parent fieldset has a UIA_LabeledByPropertyId pointing to the UIA element for the legend element.
IAccessible2IA2_ROLE_LABEL
AT-SPIROLE_LABEL
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
li (parent is an ol or ul)
HTML4yes
HTML5yes
WAI-ARIAlistitem role
MSAAROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY
MSAA + UIA Express 
UIAListItem
IAccessible2ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY
AT-SPIROLE_LISTITEM + do not expose STATE_EDITABLE
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
li (parent is a menu)
HTML4no
HTML5yes
WAI-ARIAlistitem role
MSAAROLE_SYSTEM_MENUITEM
+
STATE_SYSTEM_HASPOPUP
MSAA + UIA ExpressROLE_SYSTEM_MENUITEM
+
STATE_SYSTEM_HASPOPUP
UIAMenuItem
IAccessible2ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY
AT-SPIROLE_LISTITEM + do not expose STATE_EDITABLE
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
link
HTML4yes
HTML5yes
WAI-ARIAlink role
MSAAROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants.
MSAA + UIA ExpressUse either MSAA or UIA guidance
UIAHyperLink
IAccessible2ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants.
AT-SPIROLE_LINK
AX
AXRole
AXSubrole
AXRoleDescription
?
map
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAno mapping
MSAA + UIA Expressno mapping
UIAno mapping
IAccessible2no mapping
AT-SPIno mapping
AX
AXRole
AXSubrole
AXRoleDescription
no mapping
mark
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressROLE_SYSTEM_ TEXT
UIAText
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
menu (type attribute in the context menu state)
HTML4no
HTML5yes
WAI-ARIAno role
MSAAROLE_SYSTEM_MENUPOPUP
MSAA + UIA ExpressUse either MSAA or UIA guidance
UIAMenu
IAccessible2see msaa
AT-SPIROLE_MENU. These objects should not be exposed for a submenu if there is a parent menu item spawning the submenu
AX
AXRole
AXSubrole
AXRoleDescription
AXMenu
(null)
menu
menu (type attribute in the list state)
HTML4no
HTML5yes
WAI-ARIAmenu role
MSAAROLE_SYSTEM_MENUPOPUP
MSAA + UIA ExpressUse either MSAA or UIA guidance
UIAMenu
IAccessible2see msaa
AT-SPIROLE_MENU. These objects should not be exposed for a submenu if there is a parent menu item spawning the submenu
AX
AXRole
AXSubrole
AXRoleDescription
AXMenu
(null)
menu
menu (type attribute in the toolbar state)
HTML4no
HTML5yes
WAI-ARIAtoolbar role
MSAAROLE_SYSTEM_TOOLBAR
MSAA + UIA ExpressUse either MSAA or UIA guidance
UIAToolBar
IAccessible2ROLE_SYSTEM_TOOLBAR
AT-SPIROLE_TOOL_BAR
AX
AXRole
AXSubrole
AXRoleDescription
AXMenuBar
(null)
toolbar
meta
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAno mapping
MSAA + UIA Expressno mapping
UIAno mapping
IAccessible2no mapping
AT-SPIno mapping
AX
AXRole
AXSubrole
AXRoleDescription
no mapping
meter element
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
?? not sure this is right.  maybe a number or value or something?
MSAA + UIA ExpressUse UIA guidance
UIAset Locliazed Control Type to "Meter"

Implement Range Value control pattern with IsReadOnly property set to true
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
nav
HTML4no
HTML5yes
WAI-ARIAnavigation role
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA Express??
UIA??text
IAccessible2Object attribute role="navigation"
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
AXLandmarkNavigation
navigation
noscript
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAno mapping

?? grouping?
MSAA + UIA Expressno mapping
UIAno mapping
IAccessible2no mapping
AT-SPIno mapping
AX
AXRole
AXSubrole
AXRoleDescription
no mapping
object
HTML4yes
HTML5yes
WAI-ARIAno role
MSAA?? would pane or window work??

depends on format of data file. examples include document, client, graphic and unknown (tested using object test suite).
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAdepends on format of data file.
IAccessible2Refer to MSAA
AT-SPIROLE_EMBEDDED
AX
AXRole
AXSubrole
AXRoleDescription
depends on format of data file.
ol
HTML4yes
HTML5yes
WAI-ARIAlist role
MSAAROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAList
IAccessible2ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY
AT-SPIROLE_LIST + do not expose STATE_EDITABLE
AX
AXRole
AXSubrole
AXRoleDescription
AXList
AXContentList
content list
optgroup
HTML4yes
HTML5yes
WAI-ARIAgroup role
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAGroup
IAccessible2ROLE_SYSTEM_GROUPING
AT-SPIROLE_PANEL
AX
AXRole
AXSubrole
AXRoleDescription
AXMenuItem
(null)
menu item
option (in a list of options or represents a suggestion in a datalist)
HTML4no
HTML5yes
WAI-ARIAoption role, with the aria-selected state set to "true" if the element's selectedness is true, or "false" otherwise.
MSAAROLE_SYSTEM_LISTITEM
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAListItem

(note that SelectionItem pattern is required for ListItems)
IAccessible2ROLE_SYSTEM_LISTITEM
AT-SPIROLE_LIST_ITEM
AX
AXRole
AXSubrole
AXRoleDescription
AXMenuItem
(null)
menu item
output
HTML4no
HTML5yes
WAI-ARIAstatus role
MSAAROLE_SYSTEM_STATUSBAR

??text read-only seems closer.  this is a label that is calculated??
MSAA + UIA ExpressUse UIA guidance
UIAText. 
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.
IAccessible2

IA2_ROLE_SECTION

note: object attribute aria-live=polite IA2 controlled_by relation defined by label element @for attribute.

AT-SPI

ROLE_SECTION

note: object attribute aria-live=polite controlled_by relation defined by label element @for attribute.

AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
p
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
IAccessible2IA2_ROLE_PARAGRAPH
AT-SPIROLE_PARAGRAPH 
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
param
HTML4yes
HTML5yes
WAI-ARIAnone
MSAA

no mapping

MSAA + UIA Expressno mapping
UIAno mapping
IAccessible2no mapping
AT-SPI

no mapping

AX
AXRole
AXSubrole
AXRoleDescription
no mapping
pre
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT

??group?
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText

??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
progress
HTML4no
HTML5yes
WAI-ARIAprogressbar 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
MSAAROLE_SYSTEM_PROGRESSBAR + STATE_SYSTEM_READONLY
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAProgressBar
IAccessible2ROLE_SYSTEM_PROGRESSBAR + STATE_SYSTEM_READONLY
AT-SPIROLE_PROGRESS_BAR + do not expose EXTENDED_STATE_EDITABLE
AX
AXRole
AXSubrole
AXRoleDescription
AXProgressIndicator
(null)
progress indicator
q
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
??group??
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
rp
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
??group??
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
?
rt
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXUnknown
(null)
unknown
ruby
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
??group??
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
s
HTML4?
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT

??group??
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText

??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
samp
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
??group?
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
script
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAno mapping
MSAA + UIA Expressno mapping
UIAno mapping
IAccessible2no mapping
AT-SPIno mapping
AX
AXRole
AXSubrole
AXRoleDescription
no mapping
section
HTML4no
HTML5yes
WAI-ARIAregion role
MSAAROLE_SYSTEM_PANE
??really?  that's what a frame is.  I think grouping is closer??
MSAA + UIA Express??
UIA??Text or Group??
IAccessible2IA2_ROLE_SECTION
AT-SPIROLE_PANEL
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
AXDocumentRegion
region
select (with a multiple attribute)
HTML4yes
HTML5yes
WAI-ARIAlistbox role, with the aria-multiselectable property set to "true"
MSAA

ROLE_SYSTEM_LIST +
STATE_SYSTEM_MULTISELECTABLE + STATE_SYSTEM_READONLY

MSAA + UIA ExpressUse MSAA or UIA guidance
UIAlist with
ISelectionProvider::CanSelectMultiple set to true
IAccessible2ROLE_SYSTEM_LIST +
STATE_SYSTEM_MULTISELECTABLE + STATE_SYSTEM_READONLY
AT-SPIROLE_LIST  + STATE_MULTISELECTABLE 
AX
AXRole
AXSubrole
AXRoleDescription
AXList
(null)
list
select (with NO multiple attribute)
HTML4yes
HTML5yes
WAI-ARIAlistbox role, with the aria-multiselectable property set to "false"
MSAAROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP.
MSAA + UIA ExpressUse MSAA or UIA guidance
UIACombobox
IAccessible2ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP.
AT-SPIROLE_COMBO_BOX + STATE_EXPANDABLE + object attribute haspopup="true"
AX
AXRole
AXSubrole
AXRoleDescription
AXPopUpButton
(null)
pop up button
small
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
??group??
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
source
HTML4no
HTML5yes
WAI-ARIAnone
MSAA

Do not expose this object

MSAA + UIA ExpressDo note expose this object
UIADo not expose this object
??does it populate anything in the parent vidoe or audio object ??
IAccessible2Do not expose this object
AT-SPI

Do not expose this object

AX
AXRole
AXSubrole
AXRoleDescription
Do not expose this object
span
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAGroup
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
strong
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
??group??
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
style
HTML4yes
HTML5yes
WAI-ARIAnone
MSAA

Do not expose this object

MSAA + UIA ExpressDo note expose this object
UIADo not expose this object
IAccessible2Do not expose this object
AT-SPI

Do not expose this object

AX
AXRole
AXSubrole
AXRoleDescription
Do not expose this object
sub
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
??group?
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText
??group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
summary
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_PUSHBUTTON
??has popup??
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAButton
with ExpandCollapse pattern
IAccessible2ROLE_SYSTEM_PUSHBUTTON
AT-SPI

ROLE_PUSHBUTTON +
STATE_EXPANDABLE

AX
AXRole
AXSubrole
AXRoleDescription

AXDisclosureTriangle
(null)
disclosure triangle

sup
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
??group??
MSAA + UIA ExpressUse MSAA or UIA guidance
UIA??text or group??
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
table
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_TABLE
MSAA + UIA ExpressUse MSAA or UIA guidance
UIADataGrid with Table pattern
IAccessible2Use IAccessibleTable2 interface
AT-SPIROLE_TABLE
AX
AXRole
AXSubrole
AXRoleDescription
AXTable
(null)
table
tbody
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAGroup
IAccessible2ROLE_SYSTEM_GROUPING
AT-SPI 
AX
AXRole
AXSubrole
AXRoleDescription
?
td
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_CELL
MSAA + UIA ExpressUse MSAA or UIA guidance
UIADataItem
IAccessible2ROLE_SYSTEM_CELL
AT-SPIROLE_TABLE_CELL
AX
AXRole
AXSubrole
AXRoleDescription
AXCell
(null)
cell
textarea
HTML4yes
HTML5yes
WAI-ARIAtextbox role, with the aria-multiline property set to "true"
MSAAROLE_SYSTEM_TEXT
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAText or Edit?
IAccessible2

state:  IA2_STATE_MULTI_LINE

AT-SPIROLE_ENTRY
AX
AXRole
AXSubrole
AXRoleDescription
AXTextArea
(null)
text entry area
tfoot
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAGroup
IAccessible2ROLE_SYSTEM_GROUPING
AT-SPIROLE_PANEL
AX
AXRole
AXSubrole
AXRoleDescription
?
th (is neither a column header nor a row header)
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_CELL
MSAA + UIA ExpressUse MSAA or UIA guidance
UIADataItem

IAccessible2ROLE_SYSTEM_CELL
AT-SPIROLE_TABLE_CELL
AX
AXRole
AXSubrole
AXRoleDescription
AXCell
(null)
cell
th (is a column header)
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_COLUMNHEADER
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAheader + OrientationType_Vertical

??seems like it should be HeaderItem.  ARIA UAIG has DataItem??
IAccessible2 
AT-SPIROLE_COLUMN_HEADER
AX
AXRole
AXSubrole
AXRoleDescription
AXCell
(null)
cell

Parent table also implements AXColumnHeaderUIElements property that is a list of pointers to the column header cells.

Parent table also implements AXHeader property that is a pointer to the row or group containing the columnheader cells.

th (is a row header)
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ROWHEADER
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAheader + OrientationType_Horizontal

?seems like it should be HeaderItem.  ARIA UAIG has DataItem??
IAccessible2 
AT-SPIROLE_ROW_HEADER
AX
AXRole
AXSubrole
AXRoleDescription
AXCell
(null)
cell

Parent table also implements AXRowHeaderUIElements property that is a list of pointers to the row header cells

thead
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_GROUPING
MSAA + UIA Express?
UIAHeader
IAccessible2ROLE_SYSTEM_GROUPING
AT-SPIROLE_PANEL
AX
AXRole
AXSubrole
AXRoleDescription
?
time
HTML4no
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA Express 
UIA?
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
title
HTML4yes
HTML5yes
WAI-ARIAnone
MSAA

no mapping

MSAA + UIA Expressno mapping
UIAno mapping
IAccessible2no mapping
AT-SPI

no mapping

AX
AXRole
AXSubrole
AXRoleDescription
no mapping
tr
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ROW
MSAA + UIA ExpressUse MSAA or UIA guidance
UIADataItem

Also requires SelectionItem pattern
IAccessible2ROLE_SYSTEM_ROW
AT-SPIROLE_LIST_ITEM
AX
AXRole
AXSubrole
AXRoleDescription
AXRow
AXTableRow
row
ul
HTML4yes
HTML5yes
WAI-ARIAlist role
MSAAROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY
MSAA + UIA ExpressUse MSAA or UIA guidance
UIAList
IAccessible2ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY
AT-SPIROLE_LIST + do not expose STATE_EDITABLE
AX
AXRole
AXSubrole
AXRoleDescription
AXList
AXContentList
content list
var
HTML4yes
HTML5yes
WAI-ARIAnone
MSAAROLE_SYSTEM_ TEXT
MSAA + UIA ExpressUse MSAA or UIA guidance?
UIAText
note: not group, because it would usually only have a wo
IAccessible2ROLE_SYSTEM_ TEXT
AT-SPIROLE_TEXT
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group
video
HTML4no
HTML5yes
WAI-ARIAnone
MSAA?
MSAA + UIA Express?
UIA?
IAccessible2?
AT-SPI?
AX
AXRole
AXSubrole
AXRoleDescription

AXGroup
(null)
group

Note: UI controls within the video element exposed as AXToolbar.

wbr
HTML4no
HTML5yes
WAI-ARIAnone
MSAAnone
MSAA + UIA Expressnone
UIAnone
IAccessible2none
AT-SPInone
AX
AXRole
AXSubrole
AXRoleDescription
AXGroup
(null)
group

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

accesskey [HTML elements]
HTML4Yes
HTML5Yes
WAI-ARIAnone
MSAAaccKeyboardShortcut
UIAAcceleratorKey
IAccessible2accKeyboardShortcut
AT-SPI?
AXAXAccessKey
Comments 
alt [area; img; input]
HTML4Yes
HTML5Yes
WAI-ARIAnone
MSAAaccName
UIAName
IAccessible2
AT-SPIRELATION_LABEL_FOR
AXAXDescription
Comments 
autocomplete [form; input]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2Object attribute autocomplete

Expose the IA2_STATE_SUPPORTS_
AUTOCOMPLETION equivalent state

AT-SPIObject attribute autocomplete

Expose the STATE_SUPPORTS_AUTOCOMPLETION equivalent state

AX?
Comments 
autofocus [button; input; keygen; select; textarea]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
autoplay [audio; video]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
checked (if present) [command; input]
HTML4Yes
HTML5Yes
WAI-ARIAaria-checked (state)="true" (state)
MSAASet the STATE_SYSTEM_CHECKED state
UIAExpose as ToggleState property in Toggle Control Pattern
IAccessible2Expose object attribute checkable="true"
AT-SPIExpose object attribute checkable="true"
AXAXValue="1"
Comments 
checked (if absent) [command; input]
HTML4Yes
HTML5Yes
WAI-ARIAaria-checked (state)="false"
MSAAClear the STATE_SYSTEM_CHECKED state
UIAExpose as ToggleState property in Toggle Control Pattern.
IAccessible2Expose object attribute checkable="true"
AT-SPIExpose object attribute checkable="true"
AXAXValue="0"
Comments 
cite [blockquote; del; ins; q]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXURL
Comments 
cols [textarea]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXRangeForLine
Comments 
colspan [td; th]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXColumnIndexRange
pos=column index; len=colspan value
Comments 
contenteditable [HTML elements]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
contextmenu [HTML elements]
HTML4No
HTML5Yes
WAI-ARIAaria-haspopup="true"
MSAAExpose as STATE_SYSTEM_HASPOPUP. If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU.
UIAExpose state of the pop-up activities in the ExpandCollapseState property in the ExpandCollapse Control Pattern.
IAccessible2Expose as STATE_SYSTEM_HASPOPUP. If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU.
AT-SPIObject attribute haspopup="true"
AXExpose AXShowMenu and AXPress actions
Comments 
controls [audio; video]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXControls exposed as AXToolbar
Comments 
datetime [del; ins]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
datetime [time]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
dir [HTML elements]
HTML4?
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
dirname [input; textarea]
HTML4?
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
disabled [button; command; fieldset; input; keygen; optgroup; option; select; textarea]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXEnabled="false"
Comments 
draggable [HTML elements]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
dropzone [HTML elements]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
headers [td; th]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXExpose via AXColumnHeaderUIElements and AXRowHeaderUIElements
Comments 
hidden [HTML elements]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXNot exposed in AX API
Comments 
high [meter]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
href [a; area]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXURL
Comments 
href [link]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
hreflang [a; area; link]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
kind [track]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
label [command; menu; optgroup; option; track]
HTML4?
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
lang [HTML elements]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
longdesc [img, frame, iframe]
HTML4yes
HTML5no
WAI-ARIAno
MSAAaccdescription (Internet Explorer only)
UIAno mapping
IAccessible2no mapping
AT-SPIno mapping
AXno mapping
CommentsIE 8+ populates the accdescription with the value of the longdesc attribute. This is brittle as it is overwritten when aria-describedby is used.
low [meter]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
max [input]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
max [meter; progress]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXMaxValue
Comments 
maxlength [input; textarea]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
media [a; area; link; source; style]
HTML4?
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
min [input]
HTML4 
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX?
Comments 
min [meter]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXMinValue
Comments 
multiple [input; select]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
open [details]
HTML4no
HTML5Yes
WAI-ARIAaria-expanded="true | false"
MSAASTATE_SYSTEM_
EXPANDED
STATE_SYSTEM_COLLAPSED
UIAExpandCollapsePattern
IAccessible2STATE_SYSTEM_EXPANDED
STATE_SYSTEM_COLLAPSED
AT-SPISTATE_COLLAPSED
STATE_EXPANDED
AXboolean AXExpanded
CommentsSet properties on the summary element.
optimum [meter]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
placeholder [input; textarea]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXPlaceholderValue
Comments 
poster [video]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
radiogroup [command]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
readonly [input; textarea]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXEnabled="false"
Comments 
rel [a; area; link]
HTML4 
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
required [input; select; textarea]
HTML4no
HTML5Yes
WAI-ARIAaria-required
MSAAno mapping
UIAExpose as IsrequiredForForm property.
IAccessible2IA2_STATE_REQUIRED
AT-SPIExpose STATE_REQUIRED
AXAXRequired="true"
Comments?
reversed [ol]
HTML4?
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
rows [textarea]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
rowspan [td; th]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXRowIndexRange
pos=row index; len=rowspan value
Comments 
spellcheck [HTML elements]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
scope [th]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
size [input; select]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
span [col; colgroup]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
start [ol]
HTML4 
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
summary [table]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
title [HTML elements]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXHelp and AXTitle
Comments 
title [abbr; dfn]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
title [command]
HTML4no
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
title [link]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
title [link; style]
HTML4yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
type [a; area; link]
HTML4 
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
type [button]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
type [button; input]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
type [command]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
type [embed; object; script; source; style]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
type [menu]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
value [button; option]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
value [input]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXValue
Comments 
value [li]
HTML4 
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
value [meter; progress]
HTML4No
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXValue
Comments 
value [param]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AX 
Comments 
width [canvas; embed; iframe; img; input; object; video]
HTML4Yes
HTML5Yes
WAI-ARIA 
MSAA 
UIA 
IAccessible2 
AT-SPI 
AXAXSize
w=n
Comments 

5. 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.

5.1 Input type="text" or 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.

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

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

5.2 input type="button" , input type="submit", input type="reset" and input type="password"

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.

5.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.

5.4 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.

5.5 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

Figure element accessible description calculation

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

to do

5.6 img element

to do

6. Interactive elements

6.1 summary and details elements

to do

Other Elements

The 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.

  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.

7. Accessible Description calculation

to do

8. Accessible feature implementation examples:

8.1 summary and details elements

8.1.1 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.

8.1.2 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.

9. Table algorithm

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

to do

Notes:

 

A. References

A.1 Normative references

No normative references.

A.2 Informative references

No informative references.

Acknowledgements

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.

 

Select text and