feat: implement ARIA string reflection on Element (#32080)

* feat: implement ARIA string reflection

* Update components/script/dom/element.rs

Co-authored-by: Martin Robinson <mrobinson@igalia.com>

* fix: respond to PR comments

* fix: make functions non-public

* fix: use proper ARIAMixin mixin

* fix: tidy issues

* fix: double newline at end of file

* fix: move role before aria-* to match spec order

* fix: fix link to spec and format as spec does

* fix: delete now-passing WPT tests

* fix: remove legacy-layout test

---------

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Nolan Lawson 2024-04-27 09:31:32 -07:00 committed by GitHub
parent 66563ed027
commit 02b3dd0b61
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 433 additions and 708 deletions

View file

@ -1708,6 +1708,29 @@ impl Element {
self.set_attribute(local_name, AttrValue::String(value.into()));
}
/// Used for string attribute reflections where absence of the attribute returns `null`,
/// e.g. `element.ariaLabel` returning `null` when the `aria-label` attribute is absent.
fn get_nullable_string_attribute(&self, local_name: &LocalName) -> Option<DOMString> {
if self.has_attribute(local_name) {
Some(self.get_string_attribute(local_name))
} else {
None
}
}
/// Used for string attribute reflections where setting `null`/`undefined` removes the
/// attribute, e.g. `element.ariaLabel = null` removing the `aria-label` attribute.
fn set_nullable_string_attribute(&self, local_name: &LocalName, value: Option<DOMString>) {
match value {
Some(val) => {
self.set_string_attribute(local_name, val);
},
None => {
self.remove_attribute(&ns!(), local_name);
},
}
}
pub fn get_tokenlist_attribute(&self, local_name: &LocalName) -> Vec<Atom> {
self.get_attribute(&ns!(), local_name)
.map(|attr| attr.value().as_tokens().to_vec())
@ -2907,6 +2930,358 @@ impl ElementMethods for Element {
fn AttachShadow(&self) -> Fallible<DomRoot<ShadowRoot>> {
self.attach_shadow(IsUserAgentWidget::No)
}
fn GetRole(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("role"))
}
fn SetRole(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("role"), value);
}
fn GetAriaAtomic(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-atomic"))
}
fn SetAriaAtomic(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-atomic"), value);
}
fn GetAriaAutoComplete(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-autocomplete"))
}
fn SetAriaAutoComplete(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-autocomplete"), value);
}
fn GetAriaBrailleLabel(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-braillelabel"))
}
fn SetAriaBrailleLabel(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-braillelabel"), value);
}
fn GetAriaBrailleRoleDescription(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-brailleroledescription"))
}
fn SetAriaBrailleRoleDescription(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-brailleroledescription"), value);
}
fn GetAriaBusy(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-busy"))
}
fn SetAriaBusy(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-busy"), value);
}
fn GetAriaChecked(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-checked"))
}
fn SetAriaChecked(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-checked"), value);
}
fn GetAriaColCount(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-colcount"))
}
fn SetAriaColCount(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-colcount"), value);
}
fn GetAriaColIndex(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-colindex"))
}
fn SetAriaColIndex(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-colindex"), value);
}
fn GetAriaColIndexText(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-colindextext"))
}
fn SetAriaColIndexText(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-colindextext"), value);
}
fn GetAriaColSpan(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-colspan"))
}
fn SetAriaColSpan(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-colspan"), value);
}
fn GetAriaCurrent(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-current"))
}
fn SetAriaCurrent(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-current"), value);
}
fn GetAriaDescription(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-description"))
}
fn SetAriaDescription(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-description"), value);
}
fn GetAriaDisabled(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-disabled"))
}
fn SetAriaDisabled(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-disabled"), value);
}
fn GetAriaExpanded(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-expanded"))
}
fn SetAriaExpanded(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-expanded"), value);
}
fn GetAriaHasPopup(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-haspopup"))
}
fn SetAriaHasPopup(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-haspopup"), value);
}
fn GetAriaHidden(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-hidden"))
}
fn SetAriaHidden(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-hidden"), value);
}
fn GetAriaInvalid(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-invalid"))
}
fn SetAriaInvalid(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-invalid"), value);
}
fn GetAriaKeyShortcuts(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-keyshortcuts"))
}
fn SetAriaKeyShortcuts(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-keyshortcuts"), value);
}
fn GetAriaLabel(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-label"))
}
fn SetAriaLabel(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-label"), value);
}
fn GetAriaLevel(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-level"))
}
fn SetAriaLevel(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-level"), value);
}
fn GetAriaLive(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-live"))
}
fn SetAriaLive(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-live"), value);
}
fn GetAriaModal(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-modal"))
}
fn SetAriaModal(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-modal"), value);
}
fn GetAriaMultiLine(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-multiline"))
}
fn SetAriaMultiLine(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-multiline"), value);
}
fn GetAriaMultiSelectable(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-multiselectable"))
}
fn SetAriaMultiSelectable(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-multiselectable"), value);
}
fn GetAriaOrientation(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-orientation"))
}
fn SetAriaOrientation(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-orientation"), value);
}
fn GetAriaPlaceholder(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-placeholder"))
}
fn SetAriaPlaceholder(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-placeholder"), value);
}
fn GetAriaPosInSet(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-posinset"))
}
fn SetAriaPosInSet(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-posinset"), value);
}
fn GetAriaPressed(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-pressed"))
}
fn SetAriaPressed(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-pressed"), value);
}
fn GetAriaReadOnly(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-readonly"))
}
fn SetAriaReadOnly(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-readonly"), value);
}
fn GetAriaRelevant(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-relevant"))
}
fn SetAriaRelevant(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-relevant"), value);
}
fn GetAriaRequired(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-required"))
}
fn SetAriaRequired(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-required"), value);
}
fn GetAriaRoleDescription(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-roledescription"))
}
fn SetAriaRoleDescription(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-roledescription"), value);
}
fn GetAriaRowCount(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-rowcount"))
}
fn SetAriaRowCount(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-rowcount"), value);
}
fn GetAriaRowIndex(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-rowindex"))
}
fn SetAriaRowIndex(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-rowindex"), value);
}
fn GetAriaRowIndexText(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-rowindextext"))
}
fn SetAriaRowIndexText(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-rowindextext"), value);
}
fn GetAriaRowSpan(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-rowspan"))
}
fn SetAriaRowSpan(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-rowspan"), value);
}
fn GetAriaSelected(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-selected"))
}
fn SetAriaSelected(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-selected"), value);
}
fn GetAriaSetSize(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-setsize"))
}
fn SetAriaSetSize(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-setsize"), value);
}
fn GetAriaSort(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-sort"))
}
fn SetAriaSort(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-sort"), value);
}
fn GetAriaValueMax(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-valuemax"))
}
fn SetAriaValueMax(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-valuemax"), value);
}
fn GetAriaValueMin(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-valuemin"))
}
fn SetAriaValueMin(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-valuemin"), value);
}
fn GetAriaValueNow(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-valuenow"))
}
fn SetAriaValueNow(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-valuenow"), value);
}
fn GetAriaValueText(&self) -> Option<DOMString> {
self.get_nullable_string_attribute(&local_name!("aria-valuetext"))
}
fn SetAriaValueText(&self, value: Option<DOMString>) {
self.set_nullable_string_attribute(&local_name!("aria-valuetext"), value);
}
}
impl VirtualMethods for Element {

View file

@ -0,0 +1,57 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
/*
* The origin of this IDL file is
* https://w3c.github.io/aria/#dom-ariamixin
*
* Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
* liability, trademark and document use rules apply.
*/
interface mixin ARIAMixin {
[CEReactions] attribute DOMString? role;
[CEReactions] attribute DOMString? ariaAtomic;
[CEReactions] attribute DOMString? ariaAutoComplete;
[CEReactions] attribute DOMString? ariaBrailleLabel;
[CEReactions] attribute DOMString? ariaBrailleRoleDescription;
[CEReactions] attribute DOMString? ariaBusy;
[CEReactions] attribute DOMString? ariaChecked;
[CEReactions] attribute DOMString? ariaColCount;
[CEReactions] attribute DOMString? ariaColIndex;
[CEReactions] attribute DOMString? ariaColIndexText;
[CEReactions] attribute DOMString? ariaColSpan;
[CEReactions] attribute DOMString? ariaCurrent;
[CEReactions] attribute DOMString? ariaDescription;
[CEReactions] attribute DOMString? ariaDisabled;
[CEReactions] attribute DOMString? ariaExpanded;
[CEReactions] attribute DOMString? ariaHasPopup;
[CEReactions] attribute DOMString? ariaHidden;
[CEReactions] attribute DOMString? ariaInvalid;
[CEReactions] attribute DOMString? ariaKeyShortcuts;
[CEReactions] attribute DOMString? ariaLabel;
[CEReactions] attribute DOMString? ariaLevel;
[CEReactions] attribute DOMString? ariaLive;
[CEReactions] attribute DOMString? ariaModal;
[CEReactions] attribute DOMString? ariaMultiLine;
[CEReactions] attribute DOMString? ariaMultiSelectable;
[CEReactions] attribute DOMString? ariaOrientation;
[CEReactions] attribute DOMString? ariaPlaceholder;
[CEReactions] attribute DOMString? ariaPosInSet;
[CEReactions] attribute DOMString? ariaPressed;
[CEReactions] attribute DOMString? ariaReadOnly;
[CEReactions] attribute DOMString? ariaRelevant;
[CEReactions] attribute DOMString? ariaRequired;
[CEReactions] attribute DOMString? ariaRoleDescription;
[CEReactions] attribute DOMString? ariaRowCount;
[CEReactions] attribute DOMString? ariaRowIndex;
[CEReactions] attribute DOMString? ariaRowIndexText;
[CEReactions] attribute DOMString? ariaRowSpan;
[CEReactions] attribute DOMString? ariaSelected;
[CEReactions] attribute DOMString? ariaSetSize;
[CEReactions] attribute DOMString? ariaSort;
[CEReactions] attribute DOMString? ariaValueMax;
[CEReactions] attribute DOMString? ariaValueMin;
[CEReactions] attribute DOMString? ariaValueNow;
[CEReactions] attribute DOMString? ariaValueText;
};

View file

@ -127,3 +127,4 @@ Element includes ChildNode;
Element includes NonDocumentTypeChildNode;
Element includes ParentNode;
Element includes ActivatableElement;
Element includes ARIAMixin;

View file

@ -1,228 +0,0 @@
[AriaMixin-string-attributes.html]
[ariaAtomic on Element must enqueue an attributeChanged reaction when adding aria-atomic content attribute]
expected: FAIL
[ariaAtomic on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaAutoComplete on Element must enqueue an attributeChanged reaction when adding aria-autocomplete content attribute]
expected: FAIL
[ariaAutoComplete on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaBusy on Element must enqueue an attributeChanged reaction when adding aria-busy content attribute]
expected: FAIL
[ariaBusy on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaChecked on Element must enqueue an attributeChanged reaction when adding aria-checked content attribute]
expected: FAIL
[ariaChecked on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaColCount on Element must enqueue an attributeChanged reaction when adding aria-colcount content attribute]
expected: FAIL
[ariaColCount on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaColIndex on Element must enqueue an attributeChanged reaction when adding aria-colindex content attribute]
expected: FAIL
[ariaColIndex on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaColSpan on Element must enqueue an attributeChanged reaction when adding aria-colspan content attribute]
expected: FAIL
[ariaColSpan on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaCurrent on Element must enqueue an attributeChanged reaction when adding aria-current content attribute]
expected: FAIL
[ariaCurrent on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaDisabled on Element must enqueue an attributeChanged reaction when adding aria-disabled content attribute]
expected: FAIL
[ariaDisabled on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaExpanded on Element must enqueue an attributeChanged reaction when adding aria-expanded content attribute]
expected: FAIL
[ariaExpanded on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaHasPopup on Element must enqueue an attributeChanged reaction when adding aria-haspopup content attribute]
expected: FAIL
[ariaHasPopup on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaHidden on Element must enqueue an attributeChanged reaction when adding aria-hidden content attribute]
expected: FAIL
[ariaHidden on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaInvalid on Element must enqueue an attributeChanged reaction when adding aria-invalid content attribute]
expected: FAIL
[ariaInvalid on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaKeyShortcuts on Element must enqueue an attributeChanged reaction when adding aria-keyshortcuts content attribute]
expected: FAIL
[ariaKeyShortcuts on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaLabel on Element must enqueue an attributeChanged reaction when adding aria-label content attribute]
expected: FAIL
[ariaLabel on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaLevel on Element must enqueue an attributeChanged reaction when adding aria-level content attribute]
expected: FAIL
[ariaLevel on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaLive on Element must enqueue an attributeChanged reaction when adding aria-live content attribute]
expected: FAIL
[ariaLive on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaModal on Element must enqueue an attributeChanged reaction when adding aria-modal content attribute]
expected: FAIL
[ariaModal on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaMultiLine on Element must enqueue an attributeChanged reaction when adding aria-multiline content attribute]
expected: FAIL
[ariaMultiLine on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaMultiSelectable on Element must enqueue an attributeChanged reaction when adding aria-multiselectable content attribute]
expected: FAIL
[ariaMultiSelectable on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaOrientation on Element must enqueue an attributeChanged reaction when adding aria-orientation content attribute]
expected: FAIL
[ariaOrientation on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaPlaceholder on Element must enqueue an attributeChanged reaction when adding aria-placeholder content attribute]
expected: FAIL
[ariaPlaceholder on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaPosInSet on Element must enqueue an attributeChanged reaction when adding aria-posinset content attribute]
expected: FAIL
[ariaPosInSet on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaPressed on Element must enqueue an attributeChanged reaction when adding aria-pressed content attribute]
expected: FAIL
[ariaPressed on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaReadOnly on Element must enqueue an attributeChanged reaction when adding aria-readonly content attribute]
expected: FAIL
[ariaReadOnly on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRelevant on Element must enqueue an attributeChanged reaction when adding aria-relevant content attribute]
expected: FAIL
[ariaRelevant on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRequired on Element must enqueue an attributeChanged reaction when adding aria-required content attribute]
expected: FAIL
[ariaRequired on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRoleDescription on Element must enqueue an attributeChanged reaction when adding aria-roledescription content attribute]
expected: FAIL
[ariaRoleDescription on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRowCount on Element must enqueue an attributeChanged reaction when adding aria-rowcount content attribute]
expected: FAIL
[ariaRowCount on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRowIndex on Element must enqueue an attributeChanged reaction when adding aria-rowindex content attribute]
expected: FAIL
[ariaRowIndex on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRowSpan on Element must enqueue an attributeChanged reaction when adding aria-rowspan content attribute]
expected: FAIL
[ariaRowSpan on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaSelected on Element must enqueue an attributeChanged reaction when adding aria-selected content attribute]
expected: FAIL
[ariaSelected on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaSetSize on Element must enqueue an attributeChanged reaction when adding aria-setsize content attribute]
expected: FAIL
[ariaSetSize on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaSort on Element must enqueue an attributeChanged reaction when adding aria-sort content attribute]
expected: FAIL
[ariaSort on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaValueMax on Element must enqueue an attributeChanged reaction when adding aria-valuemax content attribute]
expected: FAIL
[ariaValueMax on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaValueMin on Element must enqueue an attributeChanged reaction when adding aria-valuemin content attribute]
expected: FAIL
[ariaValueMin on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaValueNow on Element must enqueue an attributeChanged reaction when adding aria-valuenow content attribute]
expected: FAIL
[ariaValueNow on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaValueText on Element must enqueue an attributeChanged reaction when adding aria-valuetext content attribute]
expected: FAIL
[ariaValueText on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL

View file

@ -1,126 +0,0 @@
[aria-attribute-reflection.html]
[role attribute reflects.]
expected: FAIL
[aria-atomic attribute reflects.]
expected: FAIL
[aria-autocomplete attribute reflects.]
expected: FAIL
[aria-busy attribute reflects.]
expected: FAIL
[aria-checked attribute reflects.]
expected: FAIL
[aria-colcount attribute reflects.]
expected: FAIL
[aria-colindex attribute reflects.]
expected: FAIL
[aria-colspan attribute reflects.]
expected: FAIL
[aria-current attribute reflects.]
expected: FAIL
[aria-description attribute reflects.]
expected: FAIL
[aria-disabled attribute reflects.]
expected: FAIL
[aria-expanded attribute reflects.]
expected: FAIL
[aria-haspopup attribute reflects.]
expected: FAIL
[aria-hidden attribute reflects.]
expected: FAIL
[aria-invalid attribute reflects.]
expected: FAIL
[aria-keyshortcuts attribute reflects.]
expected: FAIL
[aria-label attribute reflects.]
expected: FAIL
[aria-level attribute reflects.]
expected: FAIL
[aria-live attribute reflects.]
expected: FAIL
[aria-modal attribute reflects.]
expected: FAIL
[aria-multiline attribute reflects.]
expected: FAIL
[aria-multiselectable attribute reflects.]
expected: FAIL
[aria-orientation attribute reflects.]
expected: FAIL
[aria-placeholder attribute reflects.]
expected: FAIL
[aria-posinset attribute reflects.]
expected: FAIL
[aria-pressed attribute reflects.]
expected: FAIL
[aria-readonly attribute reflects.]
expected: FAIL
[aria-relevant attribute reflects.]
expected: FAIL
[aria-required attribute reflects.]
expected: FAIL
[aria-roledescription attribute reflects.]
expected: FAIL
[aria-rowcount attribute reflects.]
expected: FAIL
[aria-rowindex attribute reflects.]
expected: FAIL
[aria-rowspan attribute reflects.]
expected: FAIL
[aria-selected attribute reflects.]
expected: FAIL
[aria-setsize attribute reflects.]
expected: FAIL
[aria-sort attribute reflects.]
expected: FAIL
[aria-valuemax attribute reflects.]
expected: FAIL
[aria-valuemin attribute reflects.]
expected: FAIL
[aria-valuenow attribute reflects.]
expected: FAIL
[aria-valuetext attribute reflects.]
expected: FAIL
[aria-braillelabel attribute reflects.]
expected: FAIL
[aria-brailleroledescription attribute reflects.]
expected: FAIL

View file

@ -1,228 +0,0 @@
[AriaMixin-string-attributes.html]
[ariaAtomic on Element must enqueue an attributeChanged reaction when adding aria-atomic content attribute]
expected: FAIL
[ariaAtomic on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaAutoComplete on Element must enqueue an attributeChanged reaction when adding aria-autocomplete content attribute]
expected: FAIL
[ariaAutoComplete on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaBusy on Element must enqueue an attributeChanged reaction when adding aria-busy content attribute]
expected: FAIL
[ariaBusy on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaChecked on Element must enqueue an attributeChanged reaction when adding aria-checked content attribute]
expected: FAIL
[ariaChecked on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaColCount on Element must enqueue an attributeChanged reaction when adding aria-colcount content attribute]
expected: FAIL
[ariaColCount on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaColIndex on Element must enqueue an attributeChanged reaction when adding aria-colindex content attribute]
expected: FAIL
[ariaColIndex on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaColSpan on Element must enqueue an attributeChanged reaction when adding aria-colspan content attribute]
expected: FAIL
[ariaColSpan on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaCurrent on Element must enqueue an attributeChanged reaction when adding aria-current content attribute]
expected: FAIL
[ariaCurrent on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaDisabled on Element must enqueue an attributeChanged reaction when adding aria-disabled content attribute]
expected: FAIL
[ariaDisabled on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaExpanded on Element must enqueue an attributeChanged reaction when adding aria-expanded content attribute]
expected: FAIL
[ariaExpanded on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaHasPopup on Element must enqueue an attributeChanged reaction when adding aria-haspopup content attribute]
expected: FAIL
[ariaHasPopup on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaHidden on Element must enqueue an attributeChanged reaction when adding aria-hidden content attribute]
expected: FAIL
[ariaHidden on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaInvalid on Element must enqueue an attributeChanged reaction when adding aria-invalid content attribute]
expected: FAIL
[ariaInvalid on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaKeyShortcuts on Element must enqueue an attributeChanged reaction when adding aria-keyshortcuts content attribute]
expected: FAIL
[ariaKeyShortcuts on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaLabel on Element must enqueue an attributeChanged reaction when adding aria-label content attribute]
expected: FAIL
[ariaLabel on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaLevel on Element must enqueue an attributeChanged reaction when adding aria-level content attribute]
expected: FAIL
[ariaLevel on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaLive on Element must enqueue an attributeChanged reaction when adding aria-live content attribute]
expected: FAIL
[ariaLive on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaModal on Element must enqueue an attributeChanged reaction when adding aria-modal content attribute]
expected: FAIL
[ariaModal on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaMultiLine on Element must enqueue an attributeChanged reaction when adding aria-multiline content attribute]
expected: FAIL
[ariaMultiLine on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaMultiSelectable on Element must enqueue an attributeChanged reaction when adding aria-multiselectable content attribute]
expected: FAIL
[ariaMultiSelectable on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaOrientation on Element must enqueue an attributeChanged reaction when adding aria-orientation content attribute]
expected: FAIL
[ariaOrientation on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaPlaceholder on Element must enqueue an attributeChanged reaction when adding aria-placeholder content attribute]
expected: FAIL
[ariaPlaceholder on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaPosInSet on Element must enqueue an attributeChanged reaction when adding aria-posinset content attribute]
expected: FAIL
[ariaPosInSet on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaPressed on Element must enqueue an attributeChanged reaction when adding aria-pressed content attribute]
expected: FAIL
[ariaPressed on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaReadOnly on Element must enqueue an attributeChanged reaction when adding aria-readonly content attribute]
expected: FAIL
[ariaReadOnly on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRelevant on Element must enqueue an attributeChanged reaction when adding aria-relevant content attribute]
expected: FAIL
[ariaRelevant on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRequired on Element must enqueue an attributeChanged reaction when adding aria-required content attribute]
expected: FAIL
[ariaRequired on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRoleDescription on Element must enqueue an attributeChanged reaction when adding aria-roledescription content attribute]
expected: FAIL
[ariaRoleDescription on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRowCount on Element must enqueue an attributeChanged reaction when adding aria-rowcount content attribute]
expected: FAIL
[ariaRowCount on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRowIndex on Element must enqueue an attributeChanged reaction when adding aria-rowindex content attribute]
expected: FAIL
[ariaRowIndex on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaRowSpan on Element must enqueue an attributeChanged reaction when adding aria-rowspan content attribute]
expected: FAIL
[ariaRowSpan on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaSelected on Element must enqueue an attributeChanged reaction when adding aria-selected content attribute]
expected: FAIL
[ariaSelected on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaSetSize on Element must enqueue an attributeChanged reaction when adding aria-setsize content attribute]
expected: FAIL
[ariaSetSize on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaSort on Element must enqueue an attributeChanged reaction when adding aria-sort content attribute]
expected: FAIL
[ariaSort on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaValueMax on Element must enqueue an attributeChanged reaction when adding aria-valuemax content attribute]
expected: FAIL
[ariaValueMax on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaValueMin on Element must enqueue an attributeChanged reaction when adding aria-valuemin content attribute]
expected: FAIL
[ariaValueMin on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaValueNow on Element must enqueue an attributeChanged reaction when adding aria-valuenow content attribute]
expected: FAIL
[ariaValueNow on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL
[ariaValueText on Element must enqueue an attributeChanged reaction when adding aria-valuetext content attribute]
expected: FAIL
[ariaValueText on Element must enqueue an attributeChanged reaction when replacing an existing attribute]
expected: FAIL

View file

@ -1,126 +0,0 @@
[aria-attribute-reflection.html]
[role attribute reflects.]
expected: FAIL
[aria-atomic attribute reflects.]
expected: FAIL
[aria-autocomplete attribute reflects.]
expected: FAIL
[aria-busy attribute reflects.]
expected: FAIL
[aria-checked attribute reflects.]
expected: FAIL
[aria-colcount attribute reflects.]
expected: FAIL
[aria-colindex attribute reflects.]
expected: FAIL
[aria-colspan attribute reflects.]
expected: FAIL
[aria-current attribute reflects.]
expected: FAIL
[aria-description attribute reflects.]
expected: FAIL
[aria-disabled attribute reflects.]
expected: FAIL
[aria-expanded attribute reflects.]
expected: FAIL
[aria-haspopup attribute reflects.]
expected: FAIL
[aria-hidden attribute reflects.]
expected: FAIL
[aria-invalid attribute reflects.]
expected: FAIL
[aria-keyshortcuts attribute reflects.]
expected: FAIL
[aria-label attribute reflects.]
expected: FAIL
[aria-level attribute reflects.]
expected: FAIL
[aria-live attribute reflects.]
expected: FAIL
[aria-modal attribute reflects.]
expected: FAIL
[aria-multiline attribute reflects.]
expected: FAIL
[aria-multiselectable attribute reflects.]
expected: FAIL
[aria-orientation attribute reflects.]
expected: FAIL
[aria-placeholder attribute reflects.]
expected: FAIL
[aria-posinset attribute reflects.]
expected: FAIL
[aria-pressed attribute reflects.]
expected: FAIL
[aria-readonly attribute reflects.]
expected: FAIL
[aria-relevant attribute reflects.]
expected: FAIL
[aria-required attribute reflects.]
expected: FAIL
[aria-roledescription attribute reflects.]
expected: FAIL
[aria-rowcount attribute reflects.]
expected: FAIL
[aria-rowindex attribute reflects.]
expected: FAIL
[aria-rowspan attribute reflects.]
expected: FAIL
[aria-selected attribute reflects.]
expected: FAIL
[aria-setsize attribute reflects.]
expected: FAIL
[aria-sort attribute reflects.]
expected: FAIL
[aria-valuemax attribute reflects.]
expected: FAIL
[aria-valuemin attribute reflects.]
expected: FAIL
[aria-valuenow attribute reflects.]
expected: FAIL
[aria-valuetext attribute reflects.]
expected: FAIL
[aria-braillelabel attribute reflects.]
expected: FAIL
[aria-brailleroledescription attribute reflects.]
expected: FAIL