mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-01-08 12:22:34 +00:00
ARIA disabled state is no longer universal, it applies only to specific roles. Also remove some roles that are no longer supported in the spec. r=david.bolter
This commit is contained in:
parent
ed4e197b19
commit
c2eaaacaed
@ -65,21 +65,24 @@ nsRoleMapEntry nsARIAMap::gWAIRoleMap[] =
|
||||
{"alertdialog", nsIAccessibleRole::ROLE_ALERT, eNameOkFromChildren, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"application", nsIAccessibleRole::ROLE_APPLICATION, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"button", nsIAccessibleRole::ROLE_PUSHBUTTON, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"pressed", kBoolState, nsIAccessibleStates::STATE_PRESSED}, kEndEntry},
|
||||
{"buttonsubmit", nsIAccessibleRole::ROLE_PUSHBUTTON, eNameOkFromChildren, eNoValue, nsIAccessibleStates::STATE_DEFAULT, kEndEntry},
|
||||
{"buttoncancel", nsIAccessibleRole::ROLE_PUSHBUTTON, eNameOkFromChildren, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"checkbox", nsIAccessibleRole::ROLE_CHECKBUTTON, eNameOkFromChildren, eNoValue, nsIAccessibleStates::STATE_CHECKABLE,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
|
||||
{"checkboxtristate", nsIAccessibleRole::ROLE_CHECKBUTTON, eNameOkFromChildren, eNoValue, nsIAccessibleStates::STATE_CHECKABLE,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED},
|
||||
{"checked", "mixed", nsIAccessibleStates::STATE_MIXED},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
|
||||
{"columnheader", nsIAccessibleRole::ROLE_COLUMNHEADER, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"selected", kBoolState, nsIAccessibleStates::STATE_SELECTED | nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"selected", "false", nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
|
||||
{"combobox", nsIAccessibleRole::ROLE_COMBOBOX, eNameLabelOrTitle, eHasValueMinMax, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY},
|
||||
{"expanded", kBoolState, nsIAccessibleStates::STATE_EXPANDED},
|
||||
{"multiselectable", kBoolState, nsIAccessibleStates::STATE_MULTISELECTABLE | nsIAccessibleStates::STATE_EXTSELECTABLE}, kEndEntry},
|
||||
@ -87,9 +90,11 @@ nsRoleMapEntry nsARIAMap::gWAIRoleMap[] =
|
||||
{"dialog", nsIAccessibleRole::ROLE_DIALOG, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"document", nsIAccessibleRole::ROLE_DOCUMENT, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"grid", nsIAccessibleRole::ROLE_TABLE, eNameLabelOrTitle, eNoValue, nsIAccessibleStates::STATE_FOCUSABLE,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"multiselectable", kBoolState, nsIAccessibleStates::STATE_MULTISELECTABLE | nsIAccessibleStates::STATE_EXTSELECTABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
|
||||
{"gridcell", nsIAccessibleRole::ROLE_CELL, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"expanded", kBoolState, nsIAccessibleStates::STATE_EXPANDED},
|
||||
{"expanded", "false", nsIAccessibleStates::STATE_COLLAPSED},
|
||||
{"selected", kBoolState, nsIAccessibleStates::STATE_SELECTED | nsIAccessibleStates::STATE_SELECTABLE},
|
||||
@ -97,11 +102,13 @@ nsRoleMapEntry nsARIAMap::gWAIRoleMap[] =
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
|
||||
{"group", nsIAccessibleRole::ROLE_GROUPING, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"label", nsIAccessibleRole::ROLE_LABEL, eNameOkFromChildren, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"link", nsIAccessibleRole::ROLE_LINK, eNameOkFromChildren, eNoValue, nsIAccessibleStates::STATE_LINKED, kEndEntry},
|
||||
{"link", nsIAccessibleRole::ROLE_LINK, eNameOkFromChildren, eNoValue, nsIAccessibleStates::STATE_LINKED,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE}, kEndEntry},
|
||||
{"list", nsIAccessibleRole::ROLE_LIST, eNameLabelOrTitle, eNoValue, kNoReqStates,
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY},
|
||||
{"multiselectable", kBoolState, nsIAccessibleStates::STATE_MULTISELECTABLE | nsIAccessibleStates::STATE_EXTSELECTABLE}, kEndEntry},
|
||||
{"listbox", nsIAccessibleRole::ROLE_LIST, eNameLabelOrTitle, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY},
|
||||
{"multiselectable", kBoolState, nsIAccessibleStates::STATE_MULTISELECTABLE | nsIAccessibleStates::STATE_EXTSELECTABLE}, kEndEntry},
|
||||
{"listitem", nsIAccessibleRole::ROLE_LISTITEM, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
@ -109,59 +116,76 @@ nsRoleMapEntry nsARIAMap::gWAIRoleMap[] =
|
||||
{"selected", "false", nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED | nsIAccessibleStates::STATE_CHECKABLE},
|
||||
{"checked", "false", nsIAccessibleStates::STATE_CHECKABLE}, kEndEntry},
|
||||
{"menu", nsIAccessibleRole::ROLE_MENUPOPUP, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"menubar", nsIAccessibleRole::ROLE_MENUBAR, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"menu", nsIAccessibleRole::ROLE_MENUPOPUP, eNameLabelOrTitle, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE}, kEndEntry},
|
||||
{"menubar", nsIAccessibleRole::ROLE_MENUBAR, eNameLabelOrTitle, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE}, kEndEntry},
|
||||
{"menuitem", nsIAccessibleRole::ROLE_MENUITEM, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED | nsIAccessibleStates::STATE_CHECKABLE},
|
||||
{"checked", "mixed", nsIAccessibleStates::STATE_MIXED},
|
||||
{"checked", "false", nsIAccessibleStates::STATE_CHECKABLE}, kEndEntry},
|
||||
{"menuitemcheckbox", nsIAccessibleRole::ROLE_MENUITEM, eNameOkFromChildren, eNoValue, nsIAccessibleStates::STATE_CHECKABLE,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED }, kEndEntry},
|
||||
{"menuitemradio", nsIAccessibleRole::ROLE_MENUITEM, eNameOkFromChildren, eNoValue, nsIAccessibleStates::STATE_CHECKABLE,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED }, kEndEntry},
|
||||
{"option", nsIAccessibleRole::ROLE_LISTITEM, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"selected", kBoolState, nsIAccessibleStates::STATE_SELECTED | nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"selected", "false", nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED | nsIAccessibleStates::STATE_CHECKABLE},
|
||||
{"checked", "false", nsIAccessibleStates::STATE_CHECKABLE}, kEndEntry},
|
||||
{"progressbar", nsIAccessibleRole::ROLE_PROGRESSBAR, eNameLabelOrTitle, eHasValueMinMax, nsIAccessibleStates::STATE_READONLY, kEndEntry},
|
||||
{"progressbar", nsIAccessibleRole::ROLE_PROGRESSBAR, eNameLabelOrTitle, eHasValueMinMax, nsIAccessibleStates::STATE_READONLY,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE}, kEndEntry},
|
||||
{"radio", nsIAccessibleRole::ROLE_RADIOBUTTON, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED}, kEndEntry},
|
||||
{"radiogroup", nsIAccessibleRole::ROLE_GROUPING, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"radiogroup", nsIAccessibleRole::ROLE_GROUPING, eNameLabelOrTitle, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE}, kEndEntry},
|
||||
{"row", nsIAccessibleRole::ROLE_ROW, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"selected", kBoolState, nsIAccessibleStates::STATE_SELECTED | nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"selected", "false", nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"expanded", kBoolState, nsIAccessibleStates::STATE_EXPANDED},
|
||||
{"expanded", "false", nsIAccessibleStates::STATE_COLLAPSED}, kEndEntry},
|
||||
{"rowheader", nsIAccessibleRole::ROLE_ROWHEADER, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"selected", kBoolState, nsIAccessibleStates::STATE_SELECTED | nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"selected", "false", nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
|
||||
{"secret", nsIAccessibleRole::ROLE_PASSWORD_TEXT, eNameLabelOrTitle, eNoValue, nsIAccessibleStates::STATE_PROTECTED,
|
||||
kEndEntry}, // nsIAccessibleStates::EXT_STATE_SINGLE_LINE manually supported in code
|
||||
// Manually map EXT_STATE_SINGLE_LINE and EXT_STATE_MULTI_LINE FROM aaa:multiline
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE}, kEndEntry},
|
||||
{"separator", nsIAccessibleRole::ROLE_SEPARATOR, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"slider", nsIAccessibleRole::ROLE_SLIDER, eNameLabelOrTitle, eHasValueMinMax, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
|
||||
{"spinbutton", nsIAccessibleRole::ROLE_SPINBUTTON, eNameLabelOrTitle, eHasValueMinMax, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
|
||||
{"spreadsheet", nsIAccessibleRole::ROLE_TABLE, eNameLabelOrTitle, eNoValue, nsIAccessibleStates::STATE_MULTISELECTABLE | nsIAccessibleStates::STATE_EXTSELECTABLE | nsIAccessibleStates::STATE_FOCUSABLE,
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry}, // Still supported, but deprecated in favor of grid
|
||||
{"status", nsIAccessibleRole::ROLE_STATUSBAR, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"tab", nsIAccessibleRole::ROLE_PAGETAB, eNameOkFromChildren, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"tab", nsIAccessibleRole::ROLE_PAGETAB, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE}, kEndEntry},
|
||||
{"tablist", nsIAccessibleRole::ROLE_PAGETABLIST, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"tabpanel", nsIAccessibleRole::ROLE_PROPERTYPAGE, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"textarea", nsIAccessibleRole::ROLE_ENTRY, eNameLabelOrTitle, eHasValueMinMax, kNoReqStates,
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry}, // XXX nsIAccessibleStates::EXT_STATE_MULTI_LINE supported in code
|
||||
{"textfield", nsIAccessibleRole::ROLE_ENTRY, eNameLabelOrTitle, eHasValueMinMax, kNoReqStates,
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry}, // XXX nsIAccessibleStates::EXT_STATE_SINGLE_LINE supported in code
|
||||
{"toolbar", nsIAccessibleRole::ROLE_TOOLBAR, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{"textbox", nsIAccessibleRole::ROLE_ENTRY, eNameLabelOrTitle, eHasValueMinMax, kNoReqStates,
|
||||
// Manually map EXT_STATE_SINGLE_LINE and EXT_STATE_MULTI_LINE FROM aaa:multiline
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry},
|
||||
{"toolbar", nsIAccessibleRole::ROLE_TOOLBAR, eNameLabelOrTitle, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE}, kEndEntry},
|
||||
{"tree", nsIAccessibleRole::ROLE_OUTLINE, eNameLabelOrTitle, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY},
|
||||
{"multiselectable", kBoolState, nsIAccessibleStates::STATE_MULTISELECTABLE | nsIAccessibleStates::STATE_EXTSELECTABLE}, kEndEntry},
|
||||
{"treegrid", nsIAccessibleRole::ROLE_TREE_TABLE, eNameLabelOrTitle, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY},
|
||||
{"multiselectable", kBoolState, nsIAccessibleStates::STATE_MULTISELECTABLE | nsIAccessibleStates::STATE_EXTSELECTABLE}, kEndEntry},
|
||||
{"treeitem", nsIAccessibleRole::ROLE_OUTLINEITEM, eNameOkFromChildren, eNoValue, kNoReqStates,
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"selected", kBoolState, nsIAccessibleStates::STATE_SELECTED | nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"selected", "false", nsIAccessibleStates::STATE_SELECTABLE},
|
||||
{"expanded", kBoolState, nsIAccessibleStates::STATE_EXPANDED},
|
||||
@ -169,7 +193,6 @@ nsRoleMapEntry nsARIAMap::gWAIRoleMap[] =
|
||||
{"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED | nsIAccessibleStates::STATE_CHECKABLE},
|
||||
{"checked", "mixed", nsIAccessibleStates::STATE_MIXED},
|
||||
{"checked", "false", nsIAccessibleStates::STATE_CHECKABLE},},
|
||||
{"treegroup", nsIAccessibleRole::ROLE_GROUPING, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
|
||||
{nsnull, nsIAccessibleRole::ROLE_NOTHING, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry} // Last item
|
||||
};
|
||||
|
||||
@ -179,7 +202,6 @@ nsRoleMapEntry nsARIAMap::gWAIRoleMap[] =
|
||||
* whether there is an ARIA role or not:
|
||||
*/
|
||||
nsStateMapEntry nsARIAMap::gWAIUnivStateMap[] = {
|
||||
{"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
|
||||
{"required", kBoolState, nsIAccessibleStates::STATE_REQUIRED},
|
||||
{"invalid", kBoolState, nsIAccessibleStates::STATE_INVALID},
|
||||
{"haspopup", kBoolState, nsIAccessibleStates::STATE_HASPOPUP},
|
||||
|
@ -114,6 +114,7 @@ struct nsRoleMapEntry
|
||||
nsStateMapEntry attributeMap5;
|
||||
nsStateMapEntry attributeMap6;
|
||||
nsStateMapEntry attributeMap7;
|
||||
nsStateMapEntry attributeMap8;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1077,9 +1077,8 @@ nsAccessible::GetState(PRUint32 *aState, PRUint32 *aExtraState)
|
||||
// XXX We can remove this hack once we support RDF-based role & state maps
|
||||
if (mRoleMapEntry && (mRoleMapEntry->role == nsIAccessibleRole::ROLE_ENTRY ||
|
||||
mRoleMapEntry->role == nsIAccessibleRole::ROLE_PASSWORD_TEXT)) {
|
||||
PRBool isEqual =
|
||||
NS_LITERAL_CSTRING("textarea").Equals(mRoleMapEntry->roleString);
|
||||
if (isEqual) {
|
||||
if (content->AttrValueIs(kNameSpaceID_WAIProperties , nsAccessibilityAtoms::multiline,
|
||||
nsAccessibilityAtoms::_true, eCaseMatters)) {
|
||||
*aExtraState |= nsIAccessibleStates::EXT_STATE_MULTI_LINE;
|
||||
}
|
||||
else {
|
||||
@ -2293,8 +2292,9 @@ nsAccessible::GetARIAState(PRUint32 *aState)
|
||||
MappedAttrState(content, aState, &mRoleMapEntry->attributeMap3) &&
|
||||
MappedAttrState(content, aState, &mRoleMapEntry->attributeMap4) &&
|
||||
MappedAttrState(content, aState, &mRoleMapEntry->attributeMap5) &&
|
||||
MappedAttrState(content, aState, &mRoleMapEntry->attributeMap6)) {
|
||||
MappedAttrState(content, aState, &mRoleMapEntry->attributeMap7);
|
||||
MappedAttrState(content, aState, &mRoleMapEntry->attributeMap6) &&
|
||||
MappedAttrState(content, aState, &mRoleMapEntry->attributeMap7)) {
|
||||
MappedAttrState(content, aState, &mRoleMapEntry->attributeMap8);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
Loading…
Reference in New Issue
Block a user