An NMTOKEN based ARIA property is undefined if the ARIA attribute is not present, or is set to "" or "undefined"

Mozilla Bug 452388 Mozilla Bug 499653

This button has aria-pressed="true" and should get ROLE_TOGGLE_BUTTON. It should also get STATE_PRESSED.
This button has aria-pressed="false" and should get ROLE_TOGGLE_BUTTON.
This button has aria-pressed="" and should not get ROLE_BUTTON.
This button has aria-pressed="undefined" and should not get ROLE_TOGGLE_BUTTON.
This button has no aria-pressed attribute and should not get ROLE_TOGGLE_BUTTON.
This checkbox has aria-checked="true" and should get STATE_CHECKABLE. It should also get STATE_checked.
This checkbox has aria-checked="mixed" and should get STATE_CHECKABLE. It should also get STATE_MIXED.
This checkbox has aria-checked="false" and should get STATE_CHECKABLE.
This checkbox has aria-checked="" and should not get STATE_CHECKABLE.
This checkbox has aria-checked="undefined" and should not get STATE_CHECKABLE.
This checkbox has no aria-checked attribute and should get STATE_CHECKABLE.
This checkbox has aria-readonly="true" and should get STATE_READONLY.
This checkbox has aria-readonly="false" and should not get STATE_READONLY.
This checkbox has aria-readonly="" and should not get STATE_READONLY.
This checkbox has aria-readonly="undefined" and should not get STATE_READONLY.
This checkbox has no aria-readonly attribute and should not get STATE_READONLY.
This checkbox has aria-required="true" and should get STATE_REQUIRED.
This checkbox has aria-required="false" and should not get STATE_REQUIRED.
This checkbox has aria-required="" and should not get STATE_REQUIRED.
This checkbox has aria-required="undefined" and should not get STATE_REQUIRED.
This checkbox has no aria-required attribute and should not get STATE_REQUIRED.
This checkbox has aria-invalid="true" and should get STATE_INVALID.
This checkbox has aria-invalid="false" and should not get STATE_INVALID.
This checkbox has aria-invalid="" and should not get STATE_INVALID.
This checkbox has aria-invalid="undefined" and should not get STATE_INVALID.
This checkbox has no aria-invalid attribute and should not get STATE_INVALID.
This checkbox has aria-disabled="true" and should get STATE_DISABLED.
This checkbox has aria-disabled="false" and should not get STATE_DISABLED.
This checkbox has aria-disabled="" and should not get STATE_DISABLED.
This checkbox has aria-disabled="undefined" and should not get STATE_DISABLED.
This checkbox has no aria-disabled attribute and should not get STATE_DISABLED.
item
item
item
item
item
Generic menuitems don't support aria-checked.
Generic menuitems don't support aria-checked.
Generic menuitems don't support aria-checked.
Generic menuitems don't support aria-checked.
Generic menuitems don't support aria-checked.
Generic menuitems don't support aria-checked.
This menuitemcheckbox has aria-checked="true" and should get STATE_CHECKABLE. It should also get STATE_checked.
This menuitemcheckbox has aria-checked="mixed" and should get STATE_CHECKABLE. It should also get STATE_MIXED.
This menuitemcheckbox has aria-checked="false" and should get STATE_CHECKABLE.
This menuitemcheckbox has aria-checked="" and should not get STATE_CHECKABLE.
This menuitemcheckbox has aria-checked="undefined" and should not get STATE_CHECKABLE.
This menuitemcheckbox has no aria-checked attribute and should not get STATE_CHECKABLE.
This menuitemcheckbox has aria-readonly="true" and should get STATE_READONLY.
This menuitemcheckbox has aria-readonly="false" and should not get STATE_READONLY.
This menuitemcheckbox has aria-readonly="" and should not get STATE_READONLY.
This menuitemcheckbox has aria-readonly="undefined" and should not get STATE_READONLY.
This menuitemcheckbox has no aria-readonly attribute and should not get STATE_READONLY.
This menuitem has aria-checked="true" and should get STATE_CHECKABLE. It should also get STATE_checked.
This menuitem has aria-checked="mixed" and should get STATE_CHECKABLE. It should not get STATE_MIXED.
This menuitem has aria-checked="false" and should get STATE_CHECKABLE.
This menuitem has aria-checked="" and should not get STATE_CHECKABLE.
This menuitem has aria-checked="undefined" and should not get STATE_CHECKABLE.
This menuitem has no aria-checked attribute but should get STATE_CHECKABLE.
This menuitemradio has aria-readonly="true" and should get STATE_READONLY.
This menuitemradio has aria-readonly="false" and should not get STATE_READONLY.
This menuitemradio has aria-readonly="" and should not get STATE_READONLY.
This menuitemradio has aria-readonly="undefined" and should not get STATE_READONLY.
This menuitemradio has no aria-readonly attribute and should not get STATE_READONLY.
This menuitem has aria-checked="true" and should get STATE_CHECKABLE. It should also get STATE_CHECKED.
This radio button has aria-checked="mixed" and should get STATE_CHECKABLE. It should not get STATE_MIXED.
This menuitem has aria-checked="false" and should get STATE_CHECKABLE.
This menuitem has aria-checked="" and should not get STATE_CHECKABLE.
This menuitem has aria-checked="undefined" and should not get STATE_CHECKABLE.
This menuitem has no aria-checked attribute but should get STATE_CHECKABLE.
yes
no
yes
no
yes
no
yes
no
yes
no
This switch has aria-readonly="true" and should get STATE_READONLY.
This switch has aria-readonly="false" and should not get STATE_READONLY.
This switch has aria-readonly="" and should not get STATE_READONLY.
This switch has aria-readonly="undefined" and should not get STATE_READONLY.
This switch has no aria-readonly attribute and should not get STATE_READONLY.
This treeitem has aria-selected="true" and should get STATE_SELECTABLE. It should also get STATE_SELECTED.
This treeitem has aria-selected="false" and should get STATE_SELECTABLE.
This treeitem has aria-selected="" and should not get STATE_SELECTABLE.
This treeitem has aria-selected="undefined" and should not get STATE_SELECTABLE.
This treeitem has no aria-selected attribute and should not get STATE_SELECTABLE.
This treeitem has aria-haspopup="true" and should get STATE_HASPOPUP.
This treeitem has aria-haspopup="false" and should get STATE_HASPOPUP.
This treeitem has aria-haspopup="" and should not get STATE_HASPOPUP.
This treeitem has aria-haspopup="undefined" and should not get STATE_HASPOPUP.
This treeitem has no aria-haspopup attribute and should not get STATE_HASPOPUP.
This treeitem has aria-expanded="true" and should get STATE_EXPANDABLE. It should also get STATE_EXPANDED.
This treeitem has aria-expanded="false" and should get STATE_EXPANDABLE. It should also get STATE_COLLAPSED.
This treeitem has aria-expanded="" and should not get STATE_EXPANDABLE.
This treeitem has aria-expanded="undefined" and should not get STATE_EXPANDABLE.
This treeitem has no aria-expanded attribute and should not get STATE_EXPANDABLE.