From bb6baf146e227498a503825a30cbc5d8cc6844d5 Mon Sep 17 00:00:00 2001 From: Valerie Young Date: Mon, 6 Nov 2023 06:10:06 -0800 Subject: [PATCH] Editorial: In favor of "owned element" and "owning element", uses "accessibility parent", "accessibility child" and "accessibility descendant" (#2010) Closes #1150 As discussed in the F2F, "owned" elements refers to either descendant or the direct accessibility child. Also, using "owned" in this way is confusing, because it is not exactly the same as "aria-owns". Co-authored-by: giacomo-petri <106394951+giacomo-petri@users.noreply.github.com> Co-authored-by: Peter Krautzberger Co-authored-by: James Craig --- index.html | 138 +++++++++++++++++++++++++---------------------------- 1 file changed, 64 insertions(+), 74 deletions(-) diff --git a/index.html b/index.html index a078a6a17..0ae1b664b 100644 --- a/index.html +++ b/index.html @@ -358,14 +358,6 @@

Important Terms

Usable by users in ways they can control. References in this document relate to WCAG 2.1 Principle 2: Content must be operable [[WCAG21]]. See Keyboard Accessible.

-
Owned Element
-
-

An 'owned element' is any DOM descendant of the element, any element specified as a child via aria-owns, or any DOM descendant of the owned child.

-
-
Owning Element
-
-

An 'owning element' is any DOM ancestor of the element, or any element with an aria-owns attribute which references the ID of the element.

-
Perceivable

Presentable to users in ways they can sense. References in this document relate to WCAG 2.1 Principle 1: Content must be perceivable [[WCAG21]].

@@ -511,7 +503,7 @@

Information for User Agents

  • Implement the host language method for keyboard navigation so that widgets that support aria-activedescendant can be included in the tab order.
  • For platforms that expose desktop focus or accessibility API focus separately from DOM focus, do not expose the focused state in the accessibility API for any element when it has DOM focus and also has aria-activedescendant which points to a valid ID reference.
  • When the aria-activedescendant attribute changes on an element that currently has DOM focus, remove the focused state from the previously focused object and fire an accessibility API desktop focus event on the new element referenced by aria-activedescendant. If aria-activedescendant is cleared or does not point to an element in the current document, fire a desktop focus event for the object that had the attribute change.
  • -
  • Apply the following accessibility API states to any element with an ID attribute that can be referenced by an element with both an aria-activedescendant attribute and has DOM focus. There are two ways an element can be referenced by aria-activedescendant. One way is when it is [=ARIA/owned=] by an element with aria-activedescendant and the other is when it is [=ARIA/owned=] by an element that is controlled by an element with role of combobox, textbox or searchbox with an aria-activedescendant attribute: +
  • Apply the following accessibility API states to any element with an ID attribute that can be referenced by an element with both an aria-activedescendant attribute and has DOM focus. There are two ways an element can be referenced by aria-activedescendant. One way is when it is an accessibility descendant of the element with aria-activedescendant and the other is when it is an accessibility descendant of an element that is controlled by an element with role of combobox, textbox or searchbox with an aria-activedescendant attribute:
    1. Focusable, if the element also has a WAI-ARIA role. The element needs to be focusable because it could be referenced by the aria-activedescendant attribute. Native elements that have no role attribute do not need to be checked; their native semantics determine the focusable state.
    2. Focused, whenever the element is the target of the aria-activedescendant attribute and the element with the aria-activedescendant attribute has DOM focus.
    3. @@ -525,13 +517,13 @@

      Information for User Agents

      1. If the element can take DOM focus, the user agent MUST set the DOM focus to it.
      2. Otherwise, if the element being focused has an ID and the ID is referenced by the aria-activedescendant attribute of an element that is focusable, the user agent MUST set DOM focus to the element that has the aria-activedescendant attribute. -

        An element with an ID can be referenced when it is [=ARIA/owned=] by a container element that has the aria-activedescendant attribute or by a container element that is controlled by an element that has the aria-activedescendant attribute (e.g. see combobox). Otherwise the aria-activedescendant attribute reference indicates an author error.

        +

        An element with an ID can be referenced when it is an accessibility descendant of a container element that has the aria-activedescendant attribute or by a container element that is controlled by an element that has the aria-activedescendant attribute (e.g. see combobox). Otherwise the aria-activedescendant attribute reference indicates an author error.

        The inability to set DOM focus to the containing element indicates an author error.

      3. Otherwise, the user agent MAY attempt to set DOM focus to the child element itself.
      -
    4. If the element being focused has an ID and is [=ARIA/owned=] by either a container element with both an aria-activedescendant attribute and has DOM focus, or by a container element that is controlled by an element with both an aria-activedescendant attribute and has DOM focus, the user agent MUST set the accessibility API focused state and fire an accessibility API focus event on the element identified by the value of aria-activedescendant.
    5. +
    6. If the element being focused has an ID and is an accessibility descendant of either a container element with both an aria-activedescendant attribute and has DOM focus, or by a container element that is controlled by an element with both an aria-activedescendant attribute and has DOM focus, the user agent MUST set the accessibility API focused state and fire an accessibility API focus event on the element identified by the value of aria-activedescendant.
    @@ -1057,7 +1049,7 @@

    Definition of Roles

    1. Associate the content with a focusable element using aria-labelledby or aria-describedby.
    2. Place the content in a focusable element that has role document or article.
    3. -
    4. Manage focus of [=ARIA/owned=] elements as described in Managing Focus, updating the value of aria-activedescendant to reference the element containing the focused content.
    5. +
    6. Manage focus of accessibility descendants as described in Managing Focus, updating the value of aria-activedescendant to reference the element containing the focused content.
    @@ -1916,7 +1908,7 @@

    Definition of Roles

    cell

    A cell in a tabular container. See related gridcell.

    -

    Authors MUST ensure [=elements=] with role cell are contained in, or [=ARIA/owned=] by, an element with the role row.

    +

    Authors MUST ensure [=elements=] with role cell are the accessibility children of an element with the role row.

    @@ -2211,7 +2203,7 @@

    Definition of Roles

    A cell containing header information for a column.

    columnheader can be used as a column header in a table or grid. It could also be used in a pie chart to show a similar relationship in the data.

    The columnheader establishes a relationship between it and all cells in the corresponding column. It is the structural equivalent to an HTML th element with a column scope.

    -

    Authors MUST ensure [=elements=] with role columnheader are contained in, or [=ARIA/owned=] by, an element with the role row.

    +

    Authors MUST ensure [=elements=] with role columnheader are the accessibility children of an element with the role row.

    Applying the aria-selected state on a columnheader MUST not cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding column. An author MAY choose to propagate selection in this manner depending on the specific application.

    While the columnheader role can be used in both interactive grids and non-interactive tables, the use of aria-readonly and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-required or aria-readonly in a columnheader that descends from a table, and user agents SHOULD NOT expose either property to assistive technologies unless the columnheader descends from a grid.

    Because cells are organized into rows, there is not a single container element for the column. The column is the set of gridcell elements in a particular position within their respective row containers.

    @@ -2361,7 +2353,7 @@

    Definition of Roles

    The structural requirements for combobox defined by this version of the specification are different from the requirements defined by ARIA 1.0 and ARIA 1.1:

    • The ARIA 1.0 specification required the input element with the combobox role to be a single-line text field and reference the popup element with aria-owns instead of aria-controls.
    • -
    • The ARIA 1.1 specification, which was not broadly supported by assistive technologies, required the combobox to be a non-focusable element with two required owned elements -- a focusable textbox and a popup element controlled by the textbox.
    • +
    • The ARIA 1.1 specification, which was not broadly supported by assistive technologies, required the combobox to be a non-focusable element with two required accessibility children -- a focusable textbox and a popup element controlled by the textbox.
    • The changes introduced in ARIA 1.2 improve interoperability with assistive technologies and enable authors to create presentations of combobox that more closely imitate a native HTML select element.
    @@ -2721,8 +2713,8 @@

    Definition of Roles

    composite
    -

    A widget that can contain navigable descendants or [=ARIA/owned=] children.

    -

    Authors SHOULD ensure that a composite widget exists as a single navigation stop within the larger navigation system of the web page. Once the composite widget has focus, authors SHOULD provide a separate navigation mechanism for users to navigate to [=elements=] that are descendants or owned children of the composite element.

    +

    A widget that can contain navigable accessibility descendants.

    +

    Authors SHOULD ensure that a composite widget exists as a single navigation stop within the larger navigation system of the web page. Once the composite widget has focus, authors SHOULD provide a separate navigation mechanism for users to navigate to [=elements=] that are accessibility descendants of the composite element.

    composite is an abstract role used for the ontology. Authors MUST NOT use composite role in content.

    Characteristics:
    @@ -3731,7 +3723,7 @@

    Definition of Roles

    A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys.

    The grid role does not imply a specific visual, e.g., tabular, presentation. It describes relationships among [=elements=]. It can be used for purposes as simple as grouping a collection of checkboxes or navigation links or as complex as creating a full-featured spreadsheet application.

    -

    The cell elements of a grid have role gridcell. Authors MAY designate a cell as a row or column header by using either the rowheader or columnheader role in lieu of the gridcell role. Authors MUST ensure elements with role gridcell, columnheader, or rowheader are [=ARIA/owned=] by elements with role row, which are in turn owned by an element with role rowgroup, or grid.

    +

    The cell elements of a grid have role gridcell. Authors MAY designate a cell as a row or column header by using either the rowheader or columnheader role in lieu of the gridcell role. Authors MUST ensure elements with role gridcell, columnheader, or rowheader are accessibility children of elements with role row, which are in turn are accessibility children of an element with role rowgroup, or grid.

    To be keyboard accessible, authors SHOULD manage focus of descendants of a grid as described in Managing Focus. When a user is navigating the grid content with a keyboard, authors SHOULD set focus as follows:

    • If a gridcell contains a single interactive widget that will not consume arrow key presses when it receives focus, such as a checkbox, button, or link, authors MAY set focus on the interactive element contained in that cell. This allows the contained widget to be directly operable.
    • @@ -3746,7 +3738,7 @@

      Definition of Roles

      For example, if a cell in a spreadsheet contains a combobox or editable text, the Enter key might be used to activate a cell interaction or editing mode when that cell has focus so the directional arrow keys can be used to operate the contained combobox or textbox. Depending on the implementation, pressing Enter again, Tab, Escape, or another key might switch the application back to the grid navigation mode.

      Authors MAY use a gridcell to display the result of a formula, which could be editable by the user. In a spreadsheet application, for example, a gridcell might show a value calculated from a formula until the user activates the gridcell for editing when a textbox appears in the gridcell containing the formula in an editable state.

      -

      If aria-readonly is set on an element with role grid, [=user agents=] MUST propagate the value to all gridcell elements [=ARIA/owned=] by the grid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.

      +

      If aria-readonly is set on an element with role grid, [=user agents=] MUST propagate the value to all gridcell elements that are accessibility descendants of that grid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.

      In a grid that provides cell content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, the value of aria-readonly, whether specified for a grid or individual cells, only indicates whether the content contained in cells is editable. It does not represent availability of functions for navigating or manipulating the grid itself.

      An unspecified value for aria-readonly does not imply that a grid or a gridcell contains editable content. For example, if a grid presents a collection of elements that are not editable, such as a collection of link elements representing dates in a datepicker, it is not necessary for the author to specify a value for aria-readonly.

      Authors MAY indicate that a focusable gridcell is selectable as the object of an action with the aria-selected attribute. If the grid allows multiple gridcells to be selected, the author SHOULD set aria-multiselectable to true on the element with role grid.

      @@ -3797,7 +3789,7 @@

      Definition of Roles

      @@ -3848,7 +3840,7 @@

      Definition of Roles

      A gridcell can be focusable, editable, and selectable. A gridcell can have relationships such as aria-controls to address the application of functional relationships.

      If an author intends a gridcell to have a row header, column header, or both, and if the relevant headers cannot be determined from the DOM structure, authors SHOULD explicitly indicate which header cells are relevant to the gridcell by applying aria-describedby on the gridcell and referencing [=elements=] with role rowheader or columnheader.

      In a treegrid, authors MAY define a gridcell as expandable by using the aria-expanded attribute. If the aria-expanded attribute is provided, it applies only to the individual cell. It is not a proxy for the container row, which also can be expanded. The main use case for providing this attribute on a gridcell is pivot table behavior.

      -

      Authors MUST ensure [=elements=] with role gridcell are contained in, or [=ARIA/owned=] by, an element with the role row.

      +

      Authors MUST ensure [=elements=] with role gridcell are accessibility children of an element with the role row.

    @@ -4679,7 +4671,7 @@

    Definition of Roles

    @@ -4736,7 +4728,7 @@

    Definition of Roles

    listitem

    A single item in a list or directory.

    -

    Authors MUST ensure [=elements=] whose role is listitem are contained in, or [=ARIA/owned=] by, an element whose role is list.

    +

    Authors MUST ensure [=elements=] whose role is listitem are accessibility children of an element whose role is list.

    Characteristics:
    Allowed Accessibility Child Roles:
    @@ -5335,9 +5327,9 @@

    Plain HTML or Polyfill DOM Result of the MathML Quadratic Formula

    Characteristics:
      -
    • group with child menuitem
    • -
    • group with child menuitemradio
    • -
    • group with child menuitemcheckbox
    • +
    • group with accessibility child menuitem
    • +
    • group with accessibility child menuitemradio
    • +
    • group with accessibility child menuitemcheckbox
    • menuitem
    • menuitemcheckbox
    • menuitemradio
    • @@ -5430,9 +5422,9 @@

      Plain HTML or Polyfill DOM Result of the MathML Quadratic Formula

      -
    • group with child menuitem
    • -
    • group with child menuitemradio
    • -
    • group with child menuitemcheckbox
    • +
    • group with accessibility child menuitem
    • +
    • group with accessibility child menuitemradio
    • +
    • group with accessibility child menuitemcheckbox
    • menuitem
    • menuitemcheckbox
    • menuitemradio
    • @@ -5483,9 +5475,9 @@

      Plain HTML or Polyfill DOM Result of the MathML Quadratic Formula

      menuitem

      An option in a set of choices contained by a menu or menubar.

      -

      Authors MUST ensure [=elements=] with role menuitem are contained in, or [=ARIA/owned=] by, an element with role menu or an element with role group that is contained in, or owned by, an element with role menu.

      +

      Authors MUST ensure [=elements=] with role menuitem are accessibility children of an element with role menu or an element with role group that is an accessibility child of an element with role menu.

      Authors MAY disable a menu item with the aria-disabled attribute. If the menu item has its aria-haspopup attribute set to true, it indicates that the menu item can be used to launch a sub-level menu, and authors SHOULD display a new sub-level menu when the menu item is activated.

      -

      In order to identify that they are related widgets, authors MUST ensure that menu items are [=ARIA/owned=] by an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.

      +

      In order to identify that they are related widgets, authors MUST ensure that menu items are accessibility descendants of an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.

      @@ -5531,8 +5523,8 @@

      Plain HTML or Polyfill DOM Result of the MathML Quadratic Formula

      @@ -5592,9 +5584,9 @@

      Plain HTML or Polyfill DOM Result of the MathML Quadratic Formula

      menuitemcheckbox

      A menuitem with a checkable state whose possible values are true, false, or mixed.

      -

      Authors MUST ensure [=elements=] with role menuitemcheckbox are contained in, or [=ARIA/owned=] by, an element with role menu or an element with role group that is contained in, or owned by, an element with role menu.

      +

      Authors MUST ensure [=elements=] with role menuitemcheckbox are accessibility children of an element with role menu or an element with role group that is the accessibility child of an element with role menu.

      The aria-checked attribute of a menuitemcheckbox indicates whether the menu item is checked (true), unchecked (false), or represents a sub-level menu of other menu items that have a mixture of checked and unchecked values (mixed).

      -

      In order to identify that they are related widgets, authors MUST ensure that menu item checkboxes are [=ARIA/owned=] by an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.

      +

      In order to identify that they are related widgets, authors MUST ensure that menu item checkboxes are the accessibility descendants of an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.

      Characteristics:
      @@ -5635,8 +5627,8 @@

      Plain HTML or Polyfill DOM Result of the MathML Quadratic Formula

      @@ -5692,10 +5684,10 @@

      Plain HTML or Polyfill DOM Result of the MathML Quadratic Formula

      menuitemradio

      A checkable menuitem in a set of elements with the same role, only one of which can be checked at a time.

      -

      Authors MUST ensure [=elements=] with role menuitemradio are contained in, or [=ARIA/owned=] by, an element with role menu or an element with role group that is contained in, or owned by, an element with role menu.

      +

      Authors MUST ensure [=elements=] with role menuitemradio are accessibility children of an element with role menu or of an element with role group that is the accessibility child of an element with role menu.

      Authors SHOULD enforce that only one menuitemradio in a group can be checked at the same time. When one item in the group is checked, the previously checked item becomes unchecked (its aria-checked attribute becomes false).

      -

      In order to identify that they are related widgets, authors MUST ensure that menu item radios are [=ARIA/owned=] by an element with role menu or menubar, or by a role group which itself is [=ARIA/owned=] by an element with role menu or menubar.

      +

      In order to identify that they are related widgets, authors MUST ensure that menu item radios are accessibility descendants of an element with role menu or menubar.

      If a menu or menubar contains more than one group of menuitemradio elements, or if the menu contains one group and other, unrelated menu items, authors SHOULD contain each set of related menuitemradio elements in an element using the group role. Authors MAY also delimit the group from other menu items with an element using the separator role, or an element with an equivalent role from the native markup language.

      Characteristics:
      @@ -5737,8 +5729,8 @@

      Plain HTML or Polyfill DOM Result of the MathML Quadratic Formula

      @@ -6003,7 +5995,7 @@

      Plain HTML or Polyfill DOM Result of the MathML Quadratic Formula

      </ul>
      Presentational Role Inheritance

      The none/presentation role is used on an element that has implicit native semantics, meaning that there is a default accessibility API role for the element. Some elements are only complete when additional descendant elements are provided. For example, in HTML, table elements (matching the table role) require tr descendants (which have an implicit row role), which in turn require th or td children (the columnheader or rowheader and cell roles, respectively). Similarly, lists require list item children. The descendant elements that complete the semantics of an element are described in WAI-ARIA as Allowed Accessibility Child Roles.

      -

      When an explicit or inherited role of none/presentation is applied to an element with the implicit semantic of a WAI-ARIA role that has Allowed Accessibility Child Roles, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any owned elements that do not have an explicit role defined. Also, when an explicit or inherited role of none/presentation is applied to a host language element which has specifically allowed children as defined by the host language specification, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any specifically allowed children that do not have an explicit role defined.

      +

      When an explicit or inherited role of none/presentation is applied to an element with the implicit semantic of a WAI-ARIA role that has Allowed Accessibility Child Roles, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any accessibility descendants that do not have an explicit role defined. Also, when an explicit or inherited role of none/presentation is applied to a host language element which has specifically allowed children as defined by the host language specification, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any specifically allowed children that do not have an explicit role defined.

      For any element with an explicit or inherited role of none/presentation and which is not focusable, user agents MUST ignore role-specific WAI-ARIA states and properties for that element. For example, in HTML, a ul or ol element with a role of none/presentation will have the implicit native semantics of its li elements removed because the list role to which the ul or ol corresponds has an Allowed Accessibility Child Role of listitem. Likewise, the implicit native semantics of an HTML table element's thead/tbody/tfoot/tr/th/td descendants will also be removed, because the HTML specification indicates that these are required structural descendants of the table element.

      Only the implicit native semantics of elements that correspond to WAI-ARIA Allowed Accessibility Child Roles are removed. All other content remains intact, including nested tables or lists, unless those elements also have an explicit role of none/presentation specified.

      For example, according to an accessibility API, the following markup elements might have identical or very similar role semantics (generic or none role) and identical content.

      @@ -6210,7 +6202,7 @@
      Presentational Role Inheritance
      option

      An item in a listbox.

      -

      Authors MUST ensure [=elements=] with role option are contained in, or [=ARIA/owned=] by, an element with role listbox or an element with role group that is contained in, or [=ARIA/owned=] by, an element with role listbox. Options not associated with a listbox might not be correctly mapped to an accessibility API.

      +

      Authors MUST ensure [=elements=] with role option are accessibility children of an element with role listbox or of an element with role group that is the accessibility child of an element with role listbox. Options not associated with a listbox might not be correctly mapped to an accessibility API.

      In certain conditions, a user agent MAY provide an implicit value for aria-selected for each option in a listbox, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:

      • The value of aria-multiselectable on the listbox is false or undefined.
      • @@ -7039,7 +7031,7 @@
        Presentational Role Inheritance

        Rows contain cell or gridcell [=elements=], and thus serve to organize a table, grid, or treegrid.

        While the row role can be used in a table, grid, or treegrid, the semantics of aria-expanded, aria-posinset, aria-setsize, and aria-level are only applicable to the hierarchical structure of an interactive tree grid. Therefore, authors MUST NOT apply aria-expanded, aria-posinset, aria-setsize, and aria-level to a row that descends from a table or grid, and user agents SHOULD NOT expose any of these four properties to assistive technologies unless the row descends from a treegrid.

        -

        Authors MUST ensure [=elements=] with role row are contained in, or [=ARIA/owned=] by, an element with the role table, grid, rowgroup, or treegrid.

        +

        Authors MUST ensure [=elements=] with role row are accessibility children of an element with the role table, grid, rowgroup, or treegrid.

        While aria-disabled is currently supported on row, in a future version the working group plans to prohibit its on elements with role row except when the element is in the context of a grid or treegrid.

      @@ -7083,9 +7075,7 @@
      Presentational Role Inheritance
    • grid
    • table
    • treegrid
    • -
    • rowgroup owned by grid
    • -
    • rowgroup owned by table
    • -
    • rowgroup owned by treegrid
    • +
    • rowgroup
    • @@ -7155,8 +7145,8 @@
      Presentational Role Inheritance
      rowgroup

      A structure containing one or more row elements in a tabular container.

      -

      The rowgroup role establishes a relationship between [=ARIA/owned=] row elements. It is a structural equivalent to the thead, tfoot, and tbody elements in an HTML table element.

      -

      Authors MUST ensure [=elements=] with role rowgroup are contained in, or [=ARIA/owned=] by, an element with the role grid, table, or treegrid.

      +

      The rowgroup role establishes a relationship with its accessibility children of role row. It is a structural equivalent to the thead, tfoot, and tbody elements in an HTML table element.

      +

      Authors MUST ensure [=elements=] with role rowgroup are accessibility children of an element with the role grid, table, or treegrid.

      The rowgroup role exists, in part, to support role symmetry in HTML, and allows for the propagation of presentation inheritance on HTML table elements with an explicit presentation role applied.

      This role does not differentiate between types of row groups (e.g., thead vs. tbody), but an issue has been raised for WAI-ARIA 2.0.

      @@ -7243,7 +7233,7 @@
      Presentational Role Inheritance

      A cell containing header information for a row.

      The rowheader role can be used to identify a cell as a header for a row in a table, grid, or treegrid. The rowheader establishes a relationship between it and all cells in the corresponding row. It is a structural equivalent to setting scope="row" on an HTML th element.

      -

      Authors MUST ensure [=elements=] with role rowheader are contained in, or [=ARIA/owned=] by, an element with the role row.

      +

      Authors MUST ensure [=elements=] with role rowheader are accessibility children of an element with the role row.

      Applying the aria-selected state on a rowheader MUST NOT cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding row. An author MAY choose to propagate selection in this manner depending on the specific application.

      While the rowheader role can be used in both interactive grids and non-interactive tables, the use of aria-expanded, aria-readonly, and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-expanded, aria-readonly, or aria-required in a rowheader that descends from a table, and user agents SHOULD NOT expose these properties to assistive technologies unless the rowheader descends from a grid or treegrid.

      While aria-disabled is currently supported on rowheader, in a future version the working group plans to prohibit its use on elements with role rowheader except when the element is in the context of a grid or treegrid.

      @@ -8036,7 +8026,7 @@
      Presentational Role Inheritance

      A form of range that expects the user to select from among discrete choices.

      A spinbutton typically allows users to change its displayed value by activating increment and decrement buttons that step through a set of allowed values. Some implementations display the value in an text field that allows editing and typing but typically limits input in ways that help prevent invalid values.

      Although a spinbutton is similar in appearance to many presentations of select, it is advisable to use spinbutton when working with known ranges (especially in the case of large ranges) as opposed to distinct options. For example, a spinbutton representing a range from 1 to 1,000,000 would provide much better performance than a select widget representing the same values.

      -

      Authors MAY create a spinbutton with children or owned elements, but MUST limit those elements to a textbox and/or two buttons. Alternatively, authors MAY apply the spinbutton role to a text input and create sibling buttons to support the increment and decrement functions.

      +

      Authors MAY create a spinbutton with accessibility children, but MUST limit those elements to a textbox and/or two buttons. Alternatively, authors MAY apply the spinbutton role to a text input and create sibling buttons to support the increment and decrement functions.

      To be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus. When a spinbutton receives focus, authors SHOULD ensure focus is placed on the textbox element if one is present, and on the spinbutton itself otherwise. Authors SHOULD also ensure the up and down arrows on a keyboard perform the increment and decrement functions and that the increment and decrement button elements are NOT included in the primary navigation ring, e.g., the Tab ring in HTML.

      Authors SHOULD set the aria-valuenow attribute when the spinbutton has a value. Authors SHOULD set the aria-valuemin attribute when there is a minimum value, and the aria-valuemax attribute when there is a maximum value.

      @@ -8758,7 +8748,7 @@
      Presentational Role Inheritance

      A grouping label providing a mechanism for selecting the tab content that is to be rendered to the user.

      If a tabpanel or item in a tabpanel has focus, the associated tab is the currently active tab in the tablist, as defined in Managing Focus. tablist elements, which contain a set of associated tab elements, are typically placed near a series of tabpanel elements, usually preceding it. See the WAI-ARIA Authoring Practices for details on implementing a tab set design pattern.

      -

      Authors MUST ensure [=elements=] with role tab are contained in, or [=ARIA/owned=] by, an element with the role tablist.

      +

      Authors MUST ensure [=elements=] with role tab are accessibility children of an element with the role tablist.

      Authors SHOULD ensure the tabpanel associated with the currently active tab is perceivable to the user.

      For a single-selectable tablist, authors SHOULD [=element/hide from all users=] other tabpanel [=elements=] until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure that the tab for each visible tabpanel has the aria-expanded attribute set to true, and that the tabs associated with the remaining [=element/hidden from all users=] tabpanel elements have their aria-expanded attributes set to false.

      @@ -8910,7 +8900,7 @@
      Presentational Role Inheritance
      @@ -9713,7 +9703,7 @@
      Presentational Role Inheritance
      tooltip

      A contextual popup that displays a description for an element.

      -

      The tooltip typically becomes visible, after a short delay, in response to a mouse hover, or after the owning element receives keyboard focus. The use of a WAI-ARIA tooltip is a supplement to the normal tooltip behavior of the user agent.

      +

      The tooltip typically becomes visible, after a short delay, in response to a mouse hover, or after the accessibility parent receives keyboard focus. The use of a WAI-ARIA tooltip is a supplement to the normal tooltip behavior of the user agent.

      Typical tooltip delays last from one to five seconds.

      Authors SHOULD ensure that elements with the role tooltip are referenced through the use of aria-describedby before or at the time the tooltip is displayed.

      @@ -9838,7 +9828,7 @@
      Presentational Role Inheritance
      @@ -9894,7 +9884,7 @@
      Presentational Role Inheritance

      A grid whose rows can be expanded and collapsed in the same manner as for a tree.

      -

      If aria-readonly is set on an element with role treegrid, [=user agents=] MUST propagate the value to all gridcell elements [=ARIA/owned=] by the treegrid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.

      +

      If aria-readonly is set on an element with role treegrid, [=user agents=] MUST propagate the value to all gridcell elements that are accessibility descendants of the treegrid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.

      When the aria-readonly attribute is applied to a focusable gridcell, it indicates whether the content contained in the gridcell is editable. The aria-readonly attribute does not represent availability of functions for navigating or manipulating the treegrid itself.

      In a treegrid that provides content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, if a treegrid presents a collection of elements that do not support aria-readonly, such as a collection of link elements, it is not necessary for the author to specify a value for aria-readonly.

      To be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.

      @@ -9943,7 +9933,7 @@
      Presentational Role Inheritance
      @@ -9987,7 +9977,7 @@
      Presentational Role Inheritance

      An item in a tree.

      A treeitem element can contain a sub-level group of elements that can be expanded or collapsed. An expandable collection of treeitem elements are enclosed in an element with the group role.

      -

      Authors MUST ensure [=elements=] with role treeitem are contained in, or [=ARIA/owned=] by, an element with role tree or an element with role group that is contained in, or owned by, an element with role treeitem.

      +

      Authors MUST ensure [=elements=] with role treeitem are accessibility children of an element with role tree or an element with role group that is the accessibility child of an element with role treeitem.

      In certain conditions, a user agent MAY provide an implicit value for aria-selected for each treeitem in a tree, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:

      • The value of aria-multiselectable on the tree is false or undefined.
      • @@ -10047,7 +10037,7 @@
        Presentational Role Inheritance
      @@ -10506,12 +10496,12 @@

      Definitions of States and Properties (all aria-* attributes)

      aria-activedescendant

      Identifies the currently active element when DOM focus is on a composite widget, combobox, textbox, group, or application.

      -

      The aria-activedescendant property provides an alternative method of managing focus for interactive elements that might contain multiple focusable descendants, such as menus, grids, and toolbars. Instead of moving DOM focus among [=ARIA/owned=] elements, authors MAY set DOM focus on a container element that supports aria-activedescendant and then use aria-activedescendant to refer to the element that is active.

      +

      The aria-activedescendant property provides an alternative method of managing focus for interactive elements that might contain multiple focusable descendants, such as menus, grids, and toolbars. Instead of moving DOM focus among accessibility descendants, authors MAY set DOM focus on a container element that supports aria-activedescendant and then use aria-activedescendant to refer to the element that is active.

      Authors MUST ensure that one of the following two sets of conditions is met when setting the value of aria-activedescendant on an element with DOM focus:

        -
      1. The value of aria-activedescendant refers to an [=ARIA/owned=] element. An owned element is either a descendant of the element with DOM focus or a logical descendant as indicated by the aria-owns attribute.
      2. +
      3. The value of aria-activedescendant refers to an accessibility descendant.
      4. - The element with DOM focus is a combobox, textbox or searchbox with aria-controls referring to an element that supports aria-activedescendant, and the value of aria-activedescendant refers to an owned element of the controlled element. + The element with DOM focus is a combobox, textbox or searchbox with aria-controls referring to an element that supports aria-activedescendant, and the value of aria-activedescendant refers to an accessibility descendant of the controlled element. For example, in a combobox, focus can remain on the combobox while the value of aria-activedescendant on the combobox element refers to a descendant of a popup listbox that is controlled by the combobox.
      @@ -10800,7 +10790,7 @@

      Definitions of States and Properties (all aria-* attributes)

      aria-busy

      Indicates an element is being modified and that assistive technologies could wait until the modifications are complete before exposing them to the user.

      -

      The default value of aria-busy is false for all elements. When aria-busy is true for an element, assistive technologies can ignore changes to content owned by that element and then process all changes made during the busy period as a single, atomic update when aria-busy becomes false.

      +

      The default value of aria-busy is false for all elements. When aria-busy is true for an element, assistive technologies can ignore changes to content that is an accessibility descendant that element and then process all changes made during the busy period as a single, atomic update when aria-busy becomes false.

      If it is necessary to make multiple additions, modifications, or removals within a container element that is already either partially or fully rendered, authors MAY set aria-busy to true on the container element before the first change, and then set it to false when the last change is complete. For example, if multiple changes to a live region should be spoken as a single unit of speech, authors MAY set aria-busy to true while the changes are being made and then set it to false when the changes are complete and ready to be spoken.

      If an element with role feed is marked busy, assistive technologies might defer rendering changes that occur inside the feed with the exception of user-initiated changes that occur inside the article that the user is reading during the busy period.

      If changes to a rendered widget would create a state where the widget is modifying Allowed Accessibility Child Roles during script execution, authors MAY set aria-busy to true on the widget during the update process. For example, if a rendered tree grid required a set of simultaneous updates to multiple discontiguous branches, an alternative to replacing the complete tree element with a single update would be to mark the tree busy while each of the branches are modified.

      @@ -10984,7 +10974,7 @@

      Definitions of States and Properties (all aria-* attributes)

      Defines an [=element|element's=] column index or position with respect to the total number of columns within a table, grid, or treegrid. See related aria-colindextext, aria-colcount, and aria-colspan.

      If all of the columns are present in the DOM, it is not necessary to set this attribute as the user agent can automatically calculate the column index of each cell or gridcell. However, if only a portion of the columns is present in the DOM at a given moment, this attribute is needed to provide an explicit indication of the column of each cell or gridcell with respect to the full table.

      Authors MUST set the value for aria-colindex to an integer greater than or equal to 1, greater than the aria-colindex value of any previous elements within the same row, and less than or equal to the number of columns in the full table. For a cell or gridcell which spans multiple columns, authors MUST set the value of aria-colindex to the start of the span.

      -

      If the set of columns which is present in the DOM is contiguous, and if there are no cells which span more than one row or column in that set, then authors MAY place aria-colindex on each row, setting the value to the index of the first column of the set. Otherwise, authors SHOULD place aria-colindex on all of the children or [=ARIA/owned=] elements of each row.

      +

      If the set of columns which is present in the DOM is contiguous, and if there are no cells which span more than one row or column in that set, then authors MAY place aria-colindex on each row, setting the value to the index of the first column of the set. Otherwise, authors SHOULD place aria-colindex on all of the accessibility children of each row.

      The following example shows a grid with 16 columns, of which columns 2 through 5 are displayed to the user. Because the set of columns is contiguous, aria-colindex can be placed on each row.

       <div role="grid" aria-colcount="16">
      @@ -11012,7 +11002,7 @@ 

      Definitions of States and Properties (all aria-* attributes)

      … </div> </div>
      -

      The following example shows a grid with 16 columns, of which columns 2 through 5 are displayed to the user. While the set of columns is contiguous, some of the cells span multiple rows. As a result, aria-colindex needs to be placed on all of the owned elements of each row.

      +

      The following example shows a grid with 16 columns, of which columns 2 through 5 are displayed to the user. While the set of columns is contiguous, some of the cells span multiple rows. As a result, aria-colindex needs to be placed on all of the accessibility children of each row.

       <div role="grid" aria-colcount="16">
         <div role="rowgroup">
      @@ -11037,7 +11027,7 @@ 

      Definitions of States and Properties (all aria-* attributes)

      … </div> </div>
      -

      The following example shows a grid with 16 columns, of which columns 2, 3, 4, and 9 are displayed to the user. Because the set of columns is non-contiguous, aria-colindex needs to be placed on all of the owned elements of each row.

      +

      The following example shows a grid with 16 columns, of which columns 2, 3, 4, and 9 are displayed to the user. Because the set of columns is non-contiguous, aria-colindex needs to be placed on all of the accessibility children of each row.

       <div role="grid" aria-colcount="16">
         <div role="rowgroup">
      @@ -11622,9 +11612,9 @@ 

      Definitions of States and Properties (all aria-* attributes)

      aria-expanded
      -

      Indicates whether a grouping element owned or controlled by this element is expanded or collapsed.

      +

      Indicates whether a grouping element that is the accessibility child of or is controlled by this element is expanded or collapsed.

      The aria-expanded attribute is applied to a focusable, interactive element that toggles visibility of content in another element. For example, it is applied to a parent treeitem to indicate whether its child branch of the tree is shown. Similarly, it can be applied to a button that controls visibility of a section of page content.

      -

      If a grouping container that can be expanded or collapsed is not [=ARIA/owned=] by the element that has the aria-expanded attribute, the author SHOULD identify the controlling relationship by referencing the container from the element that has aria-expanded with the aria-controls property.

      +

      If a grouping container that can be expanded or collapsed is not the accessibility child of the element that has the aria-expanded attribute, the author SHOULD identify the controlling relationship by referencing the container from the element that has aria-expanded with the aria-controls property.

      Allowed Accessibility Child Roles:
      @@ -11664,11 +11654,11 @@

      Definitions of States and Properties (all aria-* attributes)

      - + - + @@ -12937,7 +12927,7 @@

      Definitions of States and Properties (all aria-* attributes)

      Defines an [=element|element's=] row index or position with respect to the total number of rows within a table, grid, or treegrid. See related aria-rowindextext, aria-rowcount, and aria-rowspan.

      If all of the rows are present in the DOM, it is not necessary to set this attribute as the user agent can automatically calculate the index of each row. However, if only a portion of the rows is present in the DOM at a given moment, this attribute is needed to provide an explicit indication of each row's position with respect to the full table.

      Authors MUST set the value for aria-rowindex to an integer greater than or equal to 1, greater than the aria-rowindex value of any previous rows, and less than or equal to the number of rows in the full table. For a cell or gridcell which spans multiple rows, authors MUST set the value of aria-rowindex to the start of the span.

      -

      Authors SHOULD place aria-rowindex on each row. Authors MAY also place aria-rowindex on all of the children or [=ARIA/owned elements=] of each row.

      +

      Authors SHOULD place aria-rowindex on each row. Authors MAY also place aria-rowindex on all of the accessibility children of each row.

      The following example shows a grid with 2000 rows, of which the first row and rows 100 through 102 are displayed to the user.

       <div role="grid" aria-rowcount="2000">
      @@ -12970,7 +12960,7 @@ 

      Definitions of States and Properties (all aria-* attributes)

      </div> </div> </div>
      -

      The following example shows the grid from the previous example with aria-rowindex also placed on all of the owned elements of each row.

      +

      The following example shows the grid from the previous example with aria-rowindex also placed on all of the accessibility children of each row.

       <div role="grid" aria-rowcount="2000">
         <div role="rowgroup">
      @@ -13037,7 +13027,7 @@ 

      Definitions of States and Properties (all aria-* attributes)

      Defines a human readable text alternative of aria-rowindex. See related aria-colindextext.

      Authors SHOULD only use aria-rowindextext when the provided or calculated value of aria-rowindex is not meaningful or does not reflect the displayed index, as can be seen in the game Battleship.

      Authors SHOULD NOT use aria-rowindextext as a replacement for aria-rowindex because some assistive technologies rely upon the numeric row index for the purpose of keeping track of the user's position or providing alternative table navigation.

      -

      Authors SHOULD place aria-rowindextext on each row. Authors MAY also place aria-rowindextext on all of the children or [=ARIA/owned elements=] of each row.

      +

      Authors SHOULD place aria-rowindextext on each row. Authors MAY also place aria-rowindextext on all of the accessibility children of each row.

      Characteristics:
      falseThe grouping element this element owns or controls is collapsed.The grouping element this element controls or is the accessibility parent of is collapsed.
      trueThe grouping element this element owns or controls is expanded.The grouping element this element controls or is the accessibility parent of is expanded.
      undefined (default)
      @@ -13660,7 +13650,7 @@

      States and Properties

    • Correct usage with regard to DOM tree structure, such as an element being owned by more than one other element.
    • Elements with WAI-ARIA roles correctly implement the behavior of the specified role. For example, user agents do not verify that an element with a role of checkbox actually behaves like a checkbox.
    • Elements that do not correctly observe required child / parent role relationships or that appear elsewhere than in their required parent.
    • -
    • Determining whether aria-activedescendant actually points to an [=ARIA/owned=] element of the container widget.
    • +
    • Determining whether aria-activedescendant actually points to an accessibility descendant of the container widget.
    • Determining implicit values of aria-setsize and aria-posinset when they are specified on some but not all the elements of the set.
    • If the author specifies a non-numeric value for a decimal or integer value type, the user agent SHOULD do the following:

      Characteristics: