diff --git a/mozilla/accessible/public/nsIAccessible.idl b/mozilla/accessible/public/nsIAccessible.idl index 39b942db518..ae934dec1bb 100644 --- a/mozilla/accessible/public/nsIAccessible.idl +++ b/mozilla/accessible/public/nsIAccessible.idl @@ -425,9 +425,9 @@ interface nsIAccessible : nsISupports // The object represents a main window for a application enum { ROLE_APPLICATION = 73U }; // ATK_ROLE_APPLICATION // The object represents a document window, only for MDI windows - enum { ROLE_DOCUMENT = 68U }; // ATK_ROLE_WINDOW + enum { ROLE_DOCUMENT = 80U }; // ATK_ROLE_DOCUMENT_FRAME enum { ROLE_PANE = 38U }; // ATK_ROLE_PANEL - enum { ROLE_CHART = 26U }; // ATK_ROLE_IMAGE + enum { ROLE_CHART = 78U }; // ATK_ROLE_CHART enum { ROLE_DIALOG = 16U }; // ATK_ROLE_DIALOG enum { ROLE_BORDER = 66U }; // ATK_ROLE_UNKNOWN enum { ROLE_GROUPING = 38U }; // ATK_ROLE_PANEL @@ -526,6 +526,15 @@ interface nsIAccessible : nsISupports enum { ROLE_PARAGRAPH = 71U }; // ATK_ROLE_PARAGRAPH enum { ROLE_RULER = 72U }; // ATK_ROLE_RULER enum { ROLE_AUTOCOMPLETE = 74U }; // ATK_ROLE_AUTOCOMPLETE + enum { ROLE_EDITBAR = 75U }; // ATK_ROLE_EDITBAR + enum { ROLE_EMBEDDED = 76U }; // ATK_ROLE_EMBEDDED + enum { ROLE_ENTRY = 77U }; // ATK_ROLE_ENTRY + enum { ROLE_CAPTION = 79U }; // ATK_ROLE_CAPTION + enum { ROLE_DOCUMENT_FRAME = 80U }; // ATK_ROLE_DOCUMENT_FRAME + enum { ROLE_HEADING = 81U }; // ATK_ROLE_HEADING + enum { ROLE_PAGE = 82U }; // ATK_ROLE_PAGE + enum { ROLE_SECTION = 83U }; // ATK_ROLE_SECTION + enum { ROLE_REDUNDANT_OBJECT = 84U }; // ATK_ROLE_REDUNDANT_OBJECT #else // MSAA Roles - only one per nsIAccessible or IAccessible enum { ROLE_TITLEBAR = 1U }; @@ -600,6 +609,16 @@ interface nsIAccessible : nsISupports // When in doubt map them to ROLE_NOTHING so that the role string is exposed enum { ROLE_ICON = ROLE_NOTHING }; enum { ROLE_PASSWORD_TEXT = ROLE_TEXT }; + enum { ROLE_AUTOCOMPLETE = ROLE_COMBOBOX }; + enum { ROLE_EDITBAR = ROLE_NOTHING }; + enum { ROLE_EMBEDDED = ROLE_NOTHING }; + enum { ROLE_ENTRY = ROLE_NOTHING }; + enum { ROLE_CAPTION = ROLE_NOTHING }; + enum { ROLE_DOCUMENT_FRAME = ROLE_NOTHING }; + enum { ROLE_HEADING = ROLE_NOTHING }; + enum { ROLE_PAGE = ROLE_NOTHING }; + enum { ROLE_SECTION = ROLE_NOTHING }; + enum { ROLE_REDUNDANT_OBJECT = ROLE_NOTHING }; // MSAA relationship extensions to accNavigate enum { NAVRELATION_CONTROLLED_BY = 0x1000 }; diff --git a/mozilla/accessible/src/atk/nsAccessibleWrap.cpp b/mozilla/accessible/src/atk/nsAccessibleWrap.cpp index 0fcb5e9d305..3b6f29daaef 100644 --- a/mozilla/accessible/src/atk/nsAccessibleWrap.cpp +++ b/mozilla/accessible/src/atk/nsAccessibleWrap.cpp @@ -534,12 +534,12 @@ nsAccessibleWrap::TranslateStates(PRUint32 aState, PRUint32 aExtState, void *aAt if (aState & nsIAccessible::STATE_INVALID) atk_state_set_add_state (state_set, ATK_STATE_INVALID); -#ifdef MAI_HAS_ATK_STATE_DEFAULT +#ifdef ATK_STATE_DEFAULT if (aState & nsIAccessible::STATE_DEFAULT) atk_state_set_add_state (state_set, ATK_STATE_DEFAULT); #endif -#ifdef MAI_HAS_ATK_STATE_REQUIRED +#ifdef ATK_STATE_REQUIRED if (aState & nsIAccessible::STATE_REQUIRED) atk_state_set_add_state (state_set, ATK_STATE_REQUIRED); #endif @@ -798,6 +798,16 @@ getRoleCB(AtkObject *aAtkObj) } accRole = linkRole; } +#ifndef ATK_ROLE_AUTOCOMPLETE + else if (accRole == nsIAccessible::ROLE_AUTOCOMPLETE) { + accRole == ATK_ROLE_COMBO_BOX; + } +#endif +#ifndef ATK_ROLE_CAPTION + else if (accRole == nsIAccessible::ROLE_CAPTION) { + accRole == ATK_ROLE_LABEL; + } +#endif aAtkObj->role = NS_STATIC_CAST(AtkRole, accRole); } return aAtkObj->role; diff --git a/mozilla/accessible/src/base/nsAccessibilityAtomList.h b/mozilla/accessible/src/base/nsAccessibilityAtomList.h index 995804b56f6..2ab88daaabf 100755 --- a/mozilla/accessible/src/base/nsAccessibilityAtomList.h +++ b/mozilla/accessible/src/base/nsAccessibilityAtomList.h @@ -72,6 +72,7 @@ ACCESSIBILITY_ATOM(area, "area") ACCESSIBILITY_ATOM(blockquote, "blockquote") ACCESSIBILITY_ATOM(br, "br") ACCESSIBILITY_ATOM(body, "body") +ACCESSIBILITY_ATOM(caption, "caption") ACCESSIBILITY_ATOM(description, "description") // XUL ACCESSIBILITY_ATOM(dd, "dd") ACCESSIBILITY_ATOM(dl, "dl") diff --git a/mozilla/accessible/src/base/nsAccessibilityService.cpp b/mozilla/accessible/src/base/nsAccessibilityService.cpp index 7cf9a3af2f0..787a063dc71 100644 --- a/mozilla/accessible/src/base/nsAccessibilityService.cpp +++ b/mozilla/accessible/src/base/nsAccessibilityService.cpp @@ -495,6 +495,9 @@ nsAccessibilityService::CreateHTMLAccessibleByMarkup(nsISupports *aFrame, else if (tag == nsAccessibilityAtoms::optgroup) { *aAccessible = new nsHTMLSelectOptGroupAccessible(aNode, aWeakShell); } + else if (tag == nsAccessibilityAtoms::caption) { + *aAccessible = new nsEnumRoleAccessible(aNode, aWeakShell, nsIAccessible::ROLE_CAPTION); + } #ifndef MOZ_ACCESSIBILITY_ATK else if (tag == nsAccessibilityAtoms::ul || tag == nsAccessibilityAtoms::ol) { *aAccessible = new nsHTMLListAccessible(aNode, aWeakShell); diff --git a/mozilla/accessible/src/xul/nsXULSelectAccessible.cpp b/mozilla/accessible/src/xul/nsXULSelectAccessible.cpp index cef780ce4ca..bae9f0bbae6 100644 --- a/mozilla/accessible/src/xul/nsXULSelectAccessible.cpp +++ b/mozilla/accessible/src/xul/nsXULSelectAccessible.cpp @@ -516,9 +516,12 @@ nsXULSelectableAccessible(aDOMNode, aShell) } /** We are a combobox */ -NS_IMETHODIMP nsXULComboboxAccessible::GetRole(PRUint32 *_retval) +NS_IMETHODIMP nsXULComboboxAccessible::GetRole(PRUint32 *aRole) { - *_retval = ROLE_COMBOBOX; + nsAutoString boxName; + mDOMNode->GetNodeName(boxName); + *aRole = boxName.EqualsLiteral("autocomplete") ? + ROLE_AUTOCOMPLETE : ROLE_COMBOBOX; return NS_OK; }