diff --git a/_rules/aria-state-or-property-permitted-5c01ea.md b/_rules/aria-state-or-property-permitted-5c01ea.md index bd68a9ea7e9..f70d20eded1 100755 --- a/_rules/aria-state-or-property-permitted-5c01ea.md +++ b/_rules/aria-state-or-property-permitted-5c01ea.md @@ -37,7 +37,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 @@ -55,6 +55,8 @@ In HTML, there are language features that do not have corresponding implicit WAI Note that required WAI-ARIA states or properties for a role may change with the advance of the WAI-ARIA specifications. For example, both aria-expanded and aria-controls were required in [ARIA 1.2](https://www.w3.org/TR/wai-aria-1.2/#combobox) for combobox role, but the aria-controls was removed from required states or properties in [ARIA 1.3](https://www.w3.org/TR/wai-aria-1.3/#combobox). The examples in this rule follow [ARIA 1.3](https://www.w3.org/TR/wai-aria-1.3/#combobox). +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. ### Assumptions @@ -237,7 +239,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 ec2d9ea3f18..889ae5d85d2 100755 --- a/_rules/role-attribute-valid-value-674b10.md +++ b/_rules/role-attribute-valid-value-674b10.md @@ -49,6 +49,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. + ### Assumptions There are no assumptions. @@ -167,7 +169,7 @@ This `role` attribute is empty (""). This `role` attribute is only [ASCII whitespace][]. ```html - + ``` #### Inapplicable Example 5 @@ -179,7 +181,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 425a9800d6a..aa1a06be1b2 100755 --- a/_rules/role-required-states-and-properties-4e8ab6.md +++ b/_rules/role-required-states-and-properties-4e8ab6.md @@ -33,17 +33,19 @@ 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]. ## Background 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. ### Assumptions @@ -67,7 +69,7 @@ This rule relies on browsers and assistive technologies to support leaving out [ #### 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
@@ -77,7 +79,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
@@ -86,7 +88,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
@@ -95,7 +97,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
@@ -107,7 +109,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

@@ -117,22 +119,52 @@ 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 - + ``` +#### 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 +