Commit 91f481e9 authored by aaronleventhal@moonset.net's avatar aaronleventhal@moonset.net
Browse files

Bug 386721. More ARIA properties are universal. r=david.bolter

parent 98105fb0
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -795,6 +795,14 @@ GetAttributeSet(nsIAccessible* aAccessible)
    aAccessible->GetAttributes(getter_AddRefs(attributes));
    
    if (attributes) {
        // Deal with attributes that we only need to expose in ATK
        if (State(aAccessible) & nsIAccessibleStates::STATE_HASPOPUP) {
          // There is no ATK state for haspopup, must use object attribute to expose the same info
          nsAutoString oldValueUnused;
          attributes->SetStringProperty(NS_LITERAL_STRING("haspopup"), NS_LITERAL_STRING("true"),
                                        oldValueUnused);
        }

        nsCOMPtr<nsISimpleEnumerator> propEnum;
        nsresult rv = attributes->Enumerate(getter_AddRefs(propEnum));
        NS_ENSURE_SUCCESS(rv, nsnull);
+6 −6
Original line number Diff line number Diff line
@@ -65,8 +65,7 @@ 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,
            {"pressed", kBoolState, nsIAccessibleStates::STATE_PRESSED},
            {"haspopup", kBoolState, nsIAccessibleStates::STATE_HASPOPUP}, kEndEntry},
            {"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,
@@ -113,7 +112,6 @@ nsRoleMapEntry nsARIAMap::gWAIRoleMap[] =
  {"menu", nsIAccessibleRole::ROLE_MENUPOPUP, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
  {"menubar", nsIAccessibleRole::ROLE_MENUBAR, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
  {"menuitem", nsIAccessibleRole::ROLE_MENUITEM, eNameOkFromChildren, eNoValue, kNoReqStates,
            {"haspopup", kBoolState, nsIAccessibleStates::STATE_HASPOPUP},
            {"checked", kBoolState, nsIAccessibleStates::STATE_CHECKED | nsIAccessibleStates::STATE_CHECKABLE},
            {"checked", "mixed", nsIAccessibleStates::STATE_MIXED},
            {"checked", "false", nsIAccessibleStates::STATE_CHECKABLE}, kEndEntry},
@@ -155,8 +153,7 @@ nsRoleMapEntry nsARIAMap::gWAIRoleMap[] =
  {"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}, 
            {"haspopup", kBoolState, nsIAccessibleStates::STATE_HASPOPUP}, kEndEntry}, // XXX nsIAccessibleStates::EXT_STATE_SINGLE_LINE supported in code
            {"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY}, kEndEntry}, // XXX nsIAccessibleStates::EXT_STATE_SINGLE_LINE supported in code
  {"toolbar", nsIAccessibleRole::ROLE_TOOLBAR, eNameLabelOrTitle, eNoValue, kNoReqStates, kEndEntry},
  {"tree", nsIAccessibleRole::ROLE_OUTLINE, eNameLabelOrTitle, eNoValue, kNoReqStates,
            {"readonly", kBoolState, nsIAccessibleStates::STATE_READONLY},
@@ -185,6 +182,9 @@ nsStateMapEntry nsARIAMap::gWAIUnivStateMap[] = {
  {"disabled", kBoolState, nsIAccessibleStates::STATE_UNAVAILABLE},
  {"required", kBoolState, nsIAccessibleStates::STATE_REQUIRED},
  {"invalid",  kBoolState, nsIAccessibleStates::STATE_INVALID},
  {"haspopup", kBoolState, nsIAccessibleStates::STATE_HASPOPUP},
  {"busy",     "true",     nsIAccessibleStates::STATE_BUSY},
  {"busy",     "error",    nsIAccessibleStates::STATE_INVALID},
  kEndEntry
};
+2 −1
Original line number Diff line number Diff line
@@ -2078,7 +2078,8 @@ nsAccessible::GetAttributes(nsIPersistentProperties **aAttributes)
      attributes->SetStringProperty(NS_LITERAL_CSTRING("xml-roles"), xmlRole, oldValueUnused);          
    }

    char *ariaProperties[] = { "live", "atomic", "relevant", "datatype", "level", "posinset", "setsize", "sort" };
    char *ariaProperties[] = { "live", "channel", "atomic", "relevant", "datatype", "level",
                               "posinset", "setsize", "sort", "grab", "dropeffect"};

    for (PRUint32 index = 0; index < NS_ARRAY_LENGTH(ariaProperties); index ++) {
      nsAutoString value;