diff --git a/_rules/aria-state-or-property-permitted-5c01ea.md b/_rules/aria-state-or-property-permitted-5c01ea.md index e33da0e7de..81f63ee9eb 100755 --- a/_rules/aria-state-or-property-permitted-5c01ea.md +++ b/_rules/aria-state-or-property-permitted-5c01ea.md @@ -36,7 +36,7 @@ acknowledgments: ## Applicability -This rule applies to any [WAI-ARIA state or property][] that is specified on an [HTML or SVG element][namespaced element] that is [included in the accessibility tree][]. +This rule applies to any [WAI-ARIA state or property][] that is [explicitly set][aria set explicit] on an [HTML or SVG element][namespaced element] that is [included in the accessibility tree][]. ## Expectation 1 @@ -64,6 +64,8 @@ The presence of prohibited ARIA attributes is often the result of a developer us In HTML, there are language features that do not have corresponding implicit WAI-ARIA semantics. As per [ARIA in HTML](https://www.w3.org/TR/html-aria/), those elements can have [global states or properties][global]. Some of those elements can also have [inherited][], [supported][], or [required][] [states][state] or [properties][property] that correspond to a [WAI-ARIA role](https://www.w3.org/TR/wai-aria-1.2/#introroles). For example, the `audio` element has no corresponding ARIA semantics but it can have [inherited][], [supported][], or [required][] [states][state] or [properties][property] of the [`application` role](https://www.w3.org/TR/wai-aria-1.2/#application). +This rule only applies to [explicitly set][aria set explicit] attributes since these have been provided by authors and using the wrong one is therefore an author issue. If an [implicitly set][aria set implicit] attribute is incorrect, this is not necessarily an author error, e.g., it can be the result of re-purposing an existing element. + Assessing the value of the attribute is out of scope for this rule. ### Related rules @@ -217,7 +219,18 @@ This `div` element is not [included in the accessibility tree][], hence its [WAI
``` +#### Inapplicable Example 3 + +This `button` does not have any [explicitly set][aria set explicit] ARIA attribute. It has an [implicitly set][aria set implicit] `aria-checked` state, due to the [absence of a `checked` attribute][checked absent] on the `input` element with a `type` [attribute value][] of `checkbox`. + +```html + +``` + +[aria set explicit]: #aria-attribute-set:explicit 'Definition of ARIA Attribute Set Explicitly' +[aria set implicit]: #aria-attribute-set:implicit 'Definition of ARIA Attribute Set Implicitly' [attribute value]: #attribute-value 'Definition of attribute value' +[checked absent]: https://www.w3.org/TR/html-aam-1.0/#att-checked-absent 'HTML Accessibility API Mappings, Attribute Checked absent' [explicit role]: #explicit-role 'Definition of Explicit Role' [focusable]: #focusable 'Definition of focusable' [global]: https://www.w3.org/TR/wai-aria-1.2/#global_states 'Definition of Global ARIA States and Properties' diff --git a/_rules/role-attribute-valid-value-674b10.md b/_rules/role-attribute-valid-value-674b10.md index 82119941db..ce3a837a0b 100755 --- a/_rules/role-attribute-valid-value-674b10.md +++ b/_rules/role-attribute-valid-value-674b10.md @@ -56,6 +56,8 @@ The `role` attribute is a set of [space separated tokens][]. Having a [whitespac Not every role can be used on every element. Which ARIA roles may be used on which HTML elements is defined in [ARIA in HTML](https://www.w3.org/TR/html-aria/). Testing this is not part of this rule. +This rule considers the [value of the attribute as set in the HTML code][html attribute value], which differs from the [attribute value][attribute value] obtained after parsing it and discarding invalid tokens. + ### Bibliography - [List of WAI-ARIA Roles][wai-aria role] @@ -178,7 +180,9 @@ This `role` attribute is specified on an element which is [programmatically hidd ``` [ascii whitespace]: https://infra.spec.whatwg.org/#ascii-whitespace 'Definition of ASCII whitespace' +[attribute value]: #attribute-value:role 'Definition of Attribute Value of the Role Attribute' [html or svg element]: #namespaced-element +[html attribute value]: https://html.spec.whatwg.org/multipage/dom.html#attributes 'HTML Specification of Attribute Value' [implicit role]: #implicit-role 'Definition of Implicit Role' [programmatically hidden]: #programmatically-hidden 'Definition of Programmatically Hidden' [role attribute]: https://www.w3.org/TR/role-attribute/ 'Specification of the Role attribute' diff --git a/_rules/role-required-states-and-properties-4e8ab6.md b/_rules/role-required-states-and-properties-4e8ab6.md index 5aed259c61..b692648923 100755 --- a/_rules/role-required-states-and-properties-4e8ab6.md +++ b/_rules/role-required-states-and-properties-4e8ab6.md @@ -31,11 +31,13 @@ acknowledgments: ## Applicability -This rule applies to any [HTML or SVG element][] that is [included in the accessibility tree][] and has an [explicit semantic role][], except if the element has an [implicit semantic role][] that is identical to the [explicit semantic role][]. +This rule applies to any [HTML or SVG element][] that is [included in the accessibility tree][]. ## Expectation -For each test target, the [WAI-ARIA required states and properties][] for the role are set and not empty (`""`), unless the state or property has a default value listed under [WAI-ARIA implicit value for role][]. +For each test target, the [WAI-ARIA required states and properties][] for the role are [set][aria set] and not empty (`""`). + +The attributes may be [explicitly set][aria set explicit], [implicitly set][aria set implicit], or [set by default][aria set default]. ## Assumptions @@ -51,7 +53,7 @@ This rule relies on browsers and assistive technologies to support leaving out [ Omitting [WAI-ARIA required states and properties][] is often the result of a developer error. When required properties are missing and a default value is not specified by [WAI-ARIA Specifications][], the behavior is not defined. For [WAI-ARIA 1.2][], the only [explicit semantic roles][explicit semantic role] with a required property with a default value are the `option` and `tabs roles` for the `aria-selected` property. -This rule is testing author built components that specify [explicit semantic roles][explicit semantic role] and not components that keep their [implicit semantic role][]. For components that keep their [implicit semantic role][], all native HTML and SVG elements have native attributes that are mapped to all of the [WAI-ARIA required states and properties](https://www.w3.org/TR/wai-aria/#requiredState). Most of these mappings are defined in the [HTML Accessibility API Mappings, Attribute State and Property Mappings][html aam]. +The way the attribute is [set][aria set] doesn't matter for this rule. As long as authors can rely on User Agents or Assistive Technologies to set the attribute, this won't create problems for users. As per the [First Rule of ARIA use][], authors should rely on [implicitly set][aria set implicit] attributes when possible. ### Bibliography @@ -65,7 +67,7 @@ This rule is testing author built components that specify [explicit semantic rol #### Passed Example 1 -This `heading` has the required `aria-level` property. +This `heading` has the required `aria-level` property [explicitly set][aria set explicit]. ```html
@@ -75,7 +77,7 @@ This `heading` has the required `aria-level` property. #### Passed Example 2 -This `checkbox` has the required `aria-checked` property. +This `checkbox` has the required `aria-checked` property [explicitly set][aria set explicit]. ```html
@@ -84,7 +86,7 @@ This `checkbox` has the required `aria-checked` property. #### Passed Example 3 -This `scrollbar` has the required properties `aria-controls` and `aria-valuenow`. `aria-valuemin` has a default value of 0 and `aria-valuemax` of 100. +This `scrollbar` has the required properties `aria-controls` and `aria-valuenow` [explicitly set][aria set explicit]. `aria-valuemin` has a default value of 0 and `aria-valuemax` of 100 and are thus [set by default][aria set default]. ```html
@@ -93,7 +95,7 @@ This `scrollbar` has the required properties `aria-controls` and `aria-valuenow` #### Passed Example 4 -These `option` nodes do not need the required `aria-selected` property because it has a default value of `false`. +These `option` nodes have the required `aria-selected` property [set by default][aria set default]. ```html
Tags
@@ -105,7 +107,7 @@ These `option` nodes do not need the required `aria-selected` property because i #### Passed Example 5 -This `separator` is not a `widget` because it is not [focusable][]. The `separator` role only requires the `aria-valuenow` property when the element is focusable. +This `separator` is not a `widget` because it is not [focusable][]. The `separator` role does not have any required property when the element is not focusable. ```html

My first HTML

@@ -115,7 +117,7 @@ This `separator` is not a `widget` because it is not [focusable][]. The `separat #### Passed Example 6 -This `combobox` has the required properties `aria-controls` and `aria-expanded`. +This `combobox` has the required properties `aria-controls` and `aria-expanded` [explicitly set][aria set explicit]. ```html @@ -126,11 +128,41 @@ This `combobox` has the required properties `aria-controls` and `aria-expanded`. ``` +#### Passed Example 7 + +This `checkbox` has its required `aria-checked` property [implicitly set][aria set implicit]. + +```html + +``` + +#### Passed Example 8 + +This `menuitemcheckbox` has its required `aria-checked` property [implicitly set][aria set implicit]. + +```html + +``` + +#### Passed Example 9 + +This `iframe` element is [included in the accessibility tree][], even without a role, and therefore has no [WAI-ARIA required states and properties][]. + +```html +