diff --git a/accessible/public/nsIAccessibleRole.idl b/accessible/public/nsIAccessibleRole.idl
index e7282d9ee491..515924977406 100644
--- a/accessible/public/nsIAccessibleRole.idl
+++ b/accessible/public/nsIAccessibleRole.idl
@@ -40,11 +40,8 @@
/**
* Defines cross platform (Gecko) roles.
- *
- * @note - When adding a new role, be sure to also add it to nsRoleMap.h for
- * each platform.
*/
-[scriptable, uuid(f134da65-39a8-4330-843c-5bd42780b34c)]
+[scriptable, uuid(50db5e86-9a45-4637-a5c3-4ff148c33270)]
interface nsIAccessibleRole : nsISupports
{
/**
@@ -811,11 +808,5 @@ interface nsIAccessibleRole : nsISupports
* An HTML definition
*/
const unsigned long ROLE_DEFINITION = 128;
-
- /**
- * It's not role actually. This constant is important to help ensure
- * nsRoleMap's are synchronized.
- */
- const unsigned long ROLE_LAST_ENTRY = 129;
};
diff --git a/accessible/src/atk/nsAccessibleWrap.cpp b/accessible/src/atk/nsAccessibleWrap.cpp
index 81c036356359..b968b4b25434 100644
--- a/accessible/src/atk/nsAccessibleWrap.cpp
+++ b/accessible/src/atk/nsAccessibleWrap.cpp
@@ -53,7 +53,6 @@
#include "nsString.h"
#include "nsAutoPtr.h"
#include "prprf.h"
-#include "nsRoleMap.h"
#include "nsStateMap.h"
#include "Relation.h"
#include "States.h"
@@ -722,24 +721,20 @@ getDescriptionCB(AtkObject *aAtkObj)
AtkRole
getRoleCB(AtkObject *aAtkObj)
{
- nsAccessibleWrap *accWrap = GetAccessibleWrap(aAtkObj);
- if (!accWrap) {
- return ATK_ROLE_INVALID;
- }
+ nsAccessibleWrap* accWrap = GetAccessibleWrap(aAtkObj);
+ if (!accWrap)
+ return ATK_ROLE_INVALID;
#ifdef DEBUG_A11Y
- NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(accWrap),
- "Does not support nsIAccessibleText when it should");
+ NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(accWrap),
+ "Does not support nsIAccessibleText when it should");
#endif
- if (aAtkObj->role == ATK_ROLE_INVALID) {
- // map to the actual value
- PRUint32 atkRole = atkRoleMap[accWrap->Role()];
- NS_ASSERTION(atkRoleMap[nsIAccessibleRole::ROLE_LAST_ENTRY] ==
- kROLE_ATK_LAST_ENTRY, "ATK role map skewed");
- aAtkObj->role = static_cast(atkRole);
- }
+ if (aAtkObj->role != ATK_ROLE_INVALID)
return aAtkObj->role;
+
+ return aAtkObj->role =
+ static_cast(nsAccessibleWrap::AtkRoleFor(accWrap->Role()));
}
AtkAttributeSet*
@@ -1400,3 +1395,19 @@ nsAccessibleWrap::FireAtkShowHideEvent(AccEvent* aEvent,
return NS_OK;
}
+PRUint32
+nsAccessibleWrap::AtkRoleFor(role aRole)
+{
+#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role) \
+ case roles::geckoRole: \
+ return atkRole;
+
+ switch (aRole) {
+#include "RoleMap.h"
+ default:
+ MOZ_NOT_REACHED("Unknown role.");
+ return ATK_ROLE_UNKNOWN;
+ }
+
+#undef ROLE
+}
diff --git a/accessible/src/atk/nsAccessibleWrap.h b/accessible/src/atk/nsAccessibleWrap.h
index 6e4e200eb739..6b65cdcbcc2e 100644
--- a/accessible/src/atk/nsAccessibleWrap.h
+++ b/accessible/src/atk/nsAccessibleWrap.h
@@ -116,6 +116,11 @@ public:
return returnedString.get();
}
+ /**
+ * Function mapping from cross platform roles to ATK roles.
+ */
+ inline static PRUint32 AtkRoleFor(mozilla::a11y::role aRole);
+
protected:
virtual nsresult FirePlatformEvent(AccEvent* aEvent);
diff --git a/accessible/src/atk/nsMaiInterfaceText.cpp b/accessible/src/atk/nsMaiInterfaceText.cpp
index 7ccb1e837d38..fb44a9f4d6dc 100644
--- a/accessible/src/atk/nsMaiInterfaceText.cpp
+++ b/accessible/src/atk/nsMaiInterfaceText.cpp
@@ -42,7 +42,6 @@
#include "nsHyperTextAccessible.h"
#include "nsMai.h"
-#include "nsRoleMap.h"
#include "nsIPersistentProperties2.h"
@@ -52,7 +51,7 @@ static void
ConvertTexttoAsterisks(nsAccessibleWrap* accWrap, nsAString& aString)
{
// convert each char to "*" when it's "password text"
- PRUint32 atkRole = atkRoleMap[accWrap->NativeRole()];
+ PRUint32 atkRole = nsAccessibleWrap::AtkRoleFor(accWrap->NativeRole());
if (atkRole == ATK_ROLE_PASSWORD_TEXT) {
for (PRUint32 i = 0; i < aString.Length(); i++)
aString.Replace(i, 1, NS_LITERAL_STRING("*"));
@@ -161,7 +160,7 @@ getCharacterAtOffsetCB(AtkText *aText, gint aOffset)
accText->GetCharacterAtOffset(aOffset, &uniChar);
// convert char to "*" when it's "password text"
- PRUint32 atkRole = atkRoleMap[accWrap->NativeRole()];
+ PRUint32 atkRole = nsAccessibleWrap::AtkRoleFor(accWrap->NativeRole());
if (atkRole == ATK_ROLE_PASSWORD_TEXT)
uniChar = '*';
diff --git a/accessible/src/atk/nsRoleMap.h b/accessible/src/atk/nsRoleMap.h
deleted file mode 100644
index 0ba389aee3d5..000000000000
--- a/accessible/src/atk/nsRoleMap.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is IBM Corporation
- * Portions created by the Initial Developer are Copyright (C) 2006
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Gao, Ming (gaoming@cn.ibm.com)
- * Aaron Leventhal (aleventh@us.ibm.com)
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include
-#include "nsAccessibleWrap.h"
-
-const PRUint32 kROLE_ATK_LAST_ENTRY = 0xffffffff;
-
-// Map array from cross platform roles to ATK roles
-static const PRUint32 atkRoleMap[] = {
- // Cross Platform Roles #
- ATK_ROLE_UNKNOWN, // roles::NOTHING 0
- ATK_ROLE_UNKNOWN, // roles::TITLEBAR 1
- ATK_ROLE_MENU_BAR, // roles::MENUBAR 2
- ATK_ROLE_SCROLL_BAR, // roles::SCROLLBAR 3
- ATK_ROLE_UNKNOWN, // roles::GRIP 4
- ATK_ROLE_UNKNOWN, // roles::SOUND 5
- ATK_ROLE_UNKNOWN, // roles::CURSOR 6
- ATK_ROLE_UNKNOWN, // roles::CARET 7
- ATK_ROLE_ALERT, // roles::ALERT 8
- ATK_ROLE_WINDOW, // roles::WINDOW 9
- ATK_ROLE_INTERNAL_FRAME, // roles::INTERNAL_FRAME 10
- ATK_ROLE_MENU, // roles::MENUPOPUP 11
- ATK_ROLE_MENU_ITEM, // roles::MENUITEM 12
- ATK_ROLE_TOOL_TIP, // roles::TOOLTIP 13
- ATK_ROLE_EMBEDDED, // roles::APPLICATION 14
- ATK_ROLE_DOCUMENT_FRAME, // roles::DOCUMENT 15
- ATK_ROLE_PANEL, // roles::PANE 16
- ATK_ROLE_CHART, // roles::CHART 17
- ATK_ROLE_DIALOG, // roles::DIALOG 18
- ATK_ROLE_UNKNOWN, // roles::BORDER 19
- ATK_ROLE_PANEL, // roles::GROUPING 20
- ATK_ROLE_SEPARATOR, // roles::SEPARATOR 21
- ATK_ROLE_TOOL_BAR, // roles::TOOLBAR 22
- ATK_ROLE_STATUSBAR, // roles::STATUSBAR 23
- ATK_ROLE_TABLE, // roles::TABLE 24
- ATK_ROLE_COLUMN_HEADER, // roles::COLUMNHEADER 25
- ATK_ROLE_ROW_HEADER, // roles::ROWHEADER 26
- ATK_ROLE_UNKNOWN, // roles::COLUMN 27
- ATK_ROLE_LIST_ITEM, // roles::ROW 28
- ATK_ROLE_TABLE_CELL, // roles::CELL 29
- ATK_ROLE_LINK, // roles::LINK 30
- ATK_ROLE_UNKNOWN, // roles::HELPBALLOON 31
- ATK_ROLE_IMAGE, // roles::CHARACTER 32
- ATK_ROLE_LIST, // roles::LIST 33
- ATK_ROLE_LIST_ITEM, // roles::LISTITEM 34
- ATK_ROLE_TREE, // roles::OUTLINE 35
- ATK_ROLE_LIST_ITEM, // roles::OUTLINEITEM 36
- ATK_ROLE_PAGE_TAB, // roles::PAGETAB 37
- ATK_ROLE_SCROLL_PANE, // roles::PROPERTYPAGE 38
- ATK_ROLE_UNKNOWN, // roles::INDICATOR 39
- ATK_ROLE_IMAGE, // roles::GRAPHIC 40
- ATK_ROLE_UNKNOWN, // roles::STATICTEXT 41
- ATK_ROLE_UNKNOWN, // roles::TEXT_LEAF 42
- ATK_ROLE_PUSH_BUTTON, // roles::PUSHBUTTON 43
- ATK_ROLE_CHECK_BOX, // roles::CHECKBUTTON 44
- ATK_ROLE_RADIO_BUTTON, // roles::RADIOBUTTON 45
- ATK_ROLE_COMBO_BOX, // roles::COMBOBOX 46
- ATK_ROLE_COMBO_BOX, // roles::DROPLIST 47
- ATK_ROLE_PROGRESS_BAR, // roles::PROGRESSBAR 48
- ATK_ROLE_DIAL, // roles::DIAL 49
- ATK_ROLE_UNKNOWN, // roles::HOTKEYFIELD 50
- ATK_ROLE_SLIDER, // roles::SLIDER 51
- ATK_ROLE_SPIN_BUTTON, // roles::SPINBUTTON 52
- ATK_ROLE_IMAGE, // roles::DIAGRAM 53
- ATK_ROLE_ANIMATION, // roles::ANIMATION 54
- ATK_ROLE_UNKNOWN, // roles::EQUATION 55
- ATK_ROLE_PUSH_BUTTON, // roles::BUTTONDROPDOWN 56
- ATK_ROLE_PUSH_BUTTON, // roles::BUTTONMENU 57
- ATK_ROLE_UNKNOWN, // roles::BUTTONDROPDOWNGRID 58
- ATK_ROLE_UNKNOWN, // roles::WHITESPACE 59
- ATK_ROLE_PAGE_TAB_LIST, // roles::PAGETABLIST 60
- ATK_ROLE_UNKNOWN, // roles::CLOCK 61
- ATK_ROLE_PUSH_BUTTON, // roles::SPLITBUTTON 62
- ATK_ROLE_UNKNOWN, // roles::IPADDRESS 63
- ATK_ROLE_ACCEL_LABEL, // roles::ACCEL_LABEL 64
- ATK_ROLE_ARROW, // roles::ARROW 65
- ATK_ROLE_CANVAS, // roles::CANVAS 66
- ATK_ROLE_CHECK_MENU_ITEM, // roles::CHECK_MENU_ITEM 67
- ATK_ROLE_COLOR_CHOOSER, // roles::COLOR_CHOOSER 68
- ATK_ROLE_DATE_EDITOR, // roles::DATE_EDITOR 69
- ATK_ROLE_DESKTOP_ICON, // roles::DESKTOP_ICON 70
- ATK_ROLE_DESKTOP_FRAME, // roles::DESKTOP_FRAME 71
- ATK_ROLE_DIRECTORY_PANE, // roles::DIRECTORY_PANE 72
- ATK_ROLE_FILE_CHOOSER, // roles::FILE_CHOOSER 73
- ATK_ROLE_FONT_CHOOSER, // roles::FONT_CHOOSER 74
- ATK_ROLE_FRAME, // roles::CHROME_WINDOW 75
- ATK_ROLE_GLASS_PANE, // roles::GLASS_PANE 76
- ATK_ROLE_HTML_CONTAINER, // roles::HTML_CONTAINER 77
- ATK_ROLE_ICON, // roles::ICON 78
- ATK_ROLE_LABEL, // roles::LABEL 79
- ATK_ROLE_LAYERED_PANE, // roles::LAYERED_PANE 80
- ATK_ROLE_OPTION_PANE, // roles::OPTION_PANE 81
- ATK_ROLE_PASSWORD_TEXT, // roles::PASSWORD_TEXT 82
- ATK_ROLE_POPUP_MENU, // roles::POPUP_MENU 83
- ATK_ROLE_RADIO_MENU_ITEM, // roles::RADIO_MENU_ITEM 84
- ATK_ROLE_ROOT_PANE, // roles::ROOT_PANE 85
- ATK_ROLE_SCROLL_PANE, // roles::SCROLL_PANE 86
- ATK_ROLE_SPLIT_PANE, // roles::SPLIT_PANE 87
- ATK_ROLE_TABLE_COLUMN_HEADER, // roles::TABLE_COLUMN_HEADER 88
- ATK_ROLE_TABLE_ROW_HEADER, // roles::TABLE_ROW_HEADER 89
- ATK_ROLE_TEAR_OFF_MENU_ITEM, // roles::TEAR_OFF_MENU_ITEM 90
- ATK_ROLE_TERMINAL, // roles::TERMINAL 91
- ATK_ROLE_TEXT, // roles::TEXT_CONTAINER 92
- ATK_ROLE_TOGGLE_BUTTON, // roles::TOGGLE_BUTTON 93
- ATK_ROLE_TREE_TABLE, // roles::TREE_TABLE 94
- ATK_ROLE_VIEWPORT, // roles::VIEWPORT 95
- ATK_ROLE_HEADER, // roles::HEADER 96
- ATK_ROLE_FOOTER, // roles::FOOTER 97
- ATK_ROLE_PARAGRAPH, // roles::PARAGRAPH 98
- ATK_ROLE_RULER, // roles::RULER 99
- ATK_ROLE_AUTOCOMPLETE, // roles::AUTOCOMPLETE 100
- ATK_ROLE_EDITBAR, // roles::EDITBAR 101
- ATK_ROLE_ENTRY, // roles::ENTRY 102
- ATK_ROLE_CAPTION, // roles::CAPTION 103
- ATK_ROLE_DOCUMENT_FRAME, // roles::DOCUMENT_FRAME 104
- ATK_ROLE_HEADING, // roles::HEADING 105
- ATK_ROLE_PAGE, // roles::PAGE 106
- ATK_ROLE_SECTION, // roles::SECTION 107
- ATK_ROLE_REDUNDANT_OBJECT, // roles::REDUNDANT_OBJECT 108
- ATK_ROLE_FORM, // roles::FORM 109
- ATK_ROLE_INPUT_METHOD_WINDOW, // roles::IME 110
- ATK_ROLE_APPLICATION, // roles::APP_ROOT 111
- ATK_ROLE_MENU, // roles::PARENT_MENUITEM 112
- ATK_ROLE_CALENDAR, // roles::CALENDAR 113
- ATK_ROLE_MENU, // roles::COMBOBOX_LIST 114
- ATK_ROLE_MENU_ITEM, // roles::COMBOBOX_OPTION 115
- ATK_ROLE_IMAGE, // roles::IMAGE_MAP 116
- ATK_ROLE_LIST_ITEM, // roles::OPTION 117
- ATK_ROLE_LIST_ITEM, // roles::RICH_OPTION 118
- ATK_ROLE_LIST, // roles::LISTBOX 119
- ATK_ROLE_UNKNOWN, // roles::FLAT_EQUATION 120
- ATK_ROLE_TABLE_CELL, // roles::GRID_CELL 121
- ATK_ROLE_PANEL, // roles::EMBEDDED_OBJECT 122
- ATK_ROLE_SECTION, // roles::NOTE 123
- ATK_ROLE_PANEL, // roles::FIGURE 124
- ATK_ROLE_CHECK_BOX, // roles::CHECK_RICH_OPTION 125
- ATK_ROLE_LIST, // roles::DEFINITION_LIST 126
- ATK_ROLE_LIST_ITEM, // roles::TERM 127
- ATK_ROLE_PARAGRAPH, // roles::DEFINITION 128
- kROLE_ATK_LAST_ENTRY // roles::LAST_ENTRY
-};
-
diff --git a/accessible/src/base/Role.h b/accessible/src/base/Role.h
index 4351a00746ae..3fadb8831a39 100644
--- a/accessible/src/base/Role.h
+++ b/accessible/src/base/Role.h
@@ -41,13 +41,16 @@
#define _role_h_
/**
- * Note: Make sure to update the localized role names when changing the list.
+ * @note Make sure to update the localized role names when changing the list.
+ * @note When adding a new role, be sure to also add it to base/RoleMap.h and
+ * update nsIAccessibleRole.
*/
namespace mozilla {
namespace a11y {
namespace roles {
- enum Role {
+
+enum Role {
/**
* Used when accessible hans't strong defined role.
*/
@@ -812,15 +815,12 @@ namespace roles {
* Represent a definition in a definition list (dd in HTML)
*/
DEFINITION = 128,
+};
- /**
- * It's not role actually. This constant is important to help ensure
- * nsRoleMap's are synchronized.
- */
- LAST_ENTRY = 129
- };
} // namespace role
+
typedef enum mozilla::a11y::roles::Role role;
+
} // namespace a11y
} // namespace mozilla
diff --git a/accessible/src/base/RoleMap.h b/accessible/src/base/RoleMap.h
new file mode 100644
index 000000000000..1841dd3cbca1
--- /dev/null
+++ b/accessible/src/base/RoleMap.h
@@ -0,0 +1,920 @@
+/* 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 http://mozilla.org/MPL/2.0/. */
+
+/**
+ * Usage: declare the macro ROLE()with the following arguments:
+ * ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role)
+ */
+
+ROLE(NOTHING,
+ "nothing",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_UNKNOWN)
+
+ROLE(TITLEBAR,
+ "titlebar",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole, //Irrelevant on OS X; windows are always native.
+ ROLE_SYSTEM_TITLEBAR,
+ ROLE_SYSTEM_TITLEBAR)
+
+ROLE(MENUBAR,
+ "menubar",
+ ATK_ROLE_MENU_BAR,
+ NSAccessibilityMenuBarRole, //Irrelevant on OS X; the menubar will always be native and on the top of the screen.
+ ROLE_SYSTEM_MENUBAR,
+ ROLE_SYSTEM_MENUBAR)
+
+ROLE(SCROLLBAR,
+ "scrollbar",
+ ATK_ROLE_SCROLL_BAR,
+ NSAccessibilityScrollBarRole, //We might need to make this its own mozAccessible, to support the children objects (valueindicator, down/up buttons).
+ ROLE_SYSTEM_SCROLLBAR,
+ ROLE_SYSTEM_SCROLLBAR)
+
+ROLE(GRIP,
+ "grip",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilitySplitterRole,
+ ROLE_SYSTEM_GRIP,
+ ROLE_SYSTEM_GRIP)
+
+ROLE(SOUND,
+ "sound",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole, //Unused on OS X.
+ ROLE_SYSTEM_SOUND,
+ ROLE_SYSTEM_SOUND)
+
+ROLE(CURSOR,
+ "cursor",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole, //Unused on OS X.
+ ROLE_SYSTEM_CURSOR,
+ ROLE_SYSTEM_CURSOR)
+
+ROLE(CARET,
+ "caret",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole, //Unused on OS X.
+ ROLE_SYSTEM_CARET,
+ ROLE_SYSTEM_CARET)
+
+ROLE(ALERT,
+ "alert",
+ ATK_ROLE_ALERT,
+ NSAccessibilityWindowRole,
+ ROLE_SYSTEM_ALERT,
+ ROLE_SYSTEM_ALERT)
+
+ROLE(WINDOW,
+ "window",
+ ATK_ROLE_WINDOW,
+ NSAccessibilityWindowRole, //Irrelevant on OS X; all window a11y is handled by the system.
+ ROLE_SYSTEM_WINDOW,
+ ROLE_SYSTEM_WINDOW)
+
+ROLE(INTERNAL_FRAME,
+ "internal frame",
+ ATK_ROLE_INTERNAL_FRAME,
+ NSAccessibilityScrollAreaRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_INTERNAL_FRAME)
+
+ROLE(MENUPOPUP,
+ "menupopup",
+ ATK_ROLE_MENU,
+ NSAccessibilityMenuRole, //The parent of menuitems.
+ ROLE_SYSTEM_MENUPOPUP,
+ ROLE_SYSTEM_MENUPOPUP)
+
+ROLE(MENUITEM,
+ "menuitem",
+ ATK_ROLE_MENU_ITEM,
+ NSAccessibilityMenuItemRole,
+ ROLE_SYSTEM_MENUITEM,
+ ROLE_SYSTEM_MENUITEM)
+
+ROLE(TOOLTIP,
+ "tooltip",
+ ATK_ROLE_TOOL_TIP,
+ @"AXHelpTag", //10.4+ only, so we re-define the constant.
+ ROLE_SYSTEM_TOOLTIP,
+ ROLE_SYSTEM_TOOLTIP)
+
+ROLE(APPLICATION,
+ "application",
+ ATK_ROLE_EMBEDDED,
+ NSAccessibilityGroupRole, //Unused on OS X. the system will take care of this.
+ ROLE_SYSTEM_APPLICATION,
+ ROLE_SYSTEM_APPLICATION)
+
+ROLE(DOCUMENT,
+ "document",
+ ATK_ROLE_DOCUMENT_FRAME,
+ @"AXWebArea",
+ ROLE_SYSTEM_DOCUMENT,
+ ROLE_SYSTEM_DOCUMENT)
+
+/**
+ * msaa comment:
+ * We used to map to ROLE_SYSTEM_PANE, but JAWS would
+ * not read the accessible name for the contaning pane.
+ * However, JAWS will read the accessible name for a groupbox.
+ * By mapping a PANE to a GROUPING, we get no undesirable effects,
+ * but fortunately JAWS will then read the group's label,
+ * when an inner control gets focused.
+ */
+ROLE(PANE,
+ "pane",
+ ATK_ROLE_PANEL,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_GROUPING,
+ ROLE_SYSTEM_GROUPING)
+
+ROLE(CHART,
+ "chart",
+ ATK_ROLE_CHART,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_CHART,
+ ROLE_SYSTEM_CHART)
+
+ROLE(DIALOG,
+ "dialog",
+ ATK_ROLE_DIALOG,
+ NSAccessibilityWindowRole, //There's a dialog subrole.
+ ROLE_SYSTEM_DIALOG,
+ ROLE_SYSTEM_DIALOG)
+
+ROLE(BORDER,
+ "border",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole, //Unused on OS X.
+ ROLE_SYSTEM_BORDER,
+ ROLE_SYSTEM_BORDER)
+
+ROLE(GROUPING,
+ "grouping",
+ ATK_ROLE_PANEL,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_GROUPING,
+ ROLE_SYSTEM_GROUPING)
+
+ROLE(SEPARATOR,
+ "separator",
+ ATK_ROLE_SEPARATOR,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_SEPARATOR,
+ ROLE_SYSTEM_SEPARATOR)
+
+ROLE(TOOLBAR,
+ "toolbar",
+ ATK_ROLE_TOOL_BAR,
+ NSAccessibilityToolbarRole,
+ ROLE_SYSTEM_TOOLBAR,
+ ROLE_SYSTEM_TOOLBAR)
+
+ROLE(STATUSBAR,
+ "statusbar",
+ ATK_ROLE_STATUSBAR,
+ NSAccessibilityUnknownRole, //Doesn't exist on OS X (a status bar is its parts; a progressbar, a label, etc.)
+ ROLE_SYSTEM_STATUSBAR,
+ ROLE_SYSTEM_STATUSBAR)
+
+ROLE(TABLE,
+ "table",
+ ATK_ROLE_TABLE,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_TABLE,
+ ROLE_SYSTEM_TABLE)
+
+ROLE(COLUMNHEADER,
+ "columnheader",
+ ATK_ROLE_COLUMN_HEADER,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_COLUMNHEADER,
+ ROLE_SYSTEM_COLUMNHEADER)
+
+ROLE(ROWHEADER,
+ "rowheader",
+ ATK_ROLE_ROW_HEADER,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_ROWHEADER,
+ ROLE_SYSTEM_ROWHEADER)
+
+ROLE(COLUMN,
+ "column",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityColumnRole,
+ ROLE_SYSTEM_COLUMN,
+ ROLE_SYSTEM_COLUMN)
+
+ROLE(ROW,
+ "row",
+ ATK_ROLE_LIST_ITEM,
+ NSAccessibilityRowRole,
+ ROLE_SYSTEM_ROW,
+ ROLE_SYSTEM_ROW)
+
+ROLE(CELL,
+ "cell",
+ ATK_ROLE_TABLE_CELL,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_CELL,
+ ROLE_SYSTEM_CELL)
+
+ROLE(LINK,
+ "link",
+ ATK_ROLE_LINK,
+ @"AXLink", //10.4+ the attr first define in SDK 10.4, so we define it here too. ROLE_LINK
+ ROLE_SYSTEM_LINK,
+ ROLE_SYSTEM_LINK)
+
+ROLE(HELPBALLOON,
+ "helpballoon",
+ ATK_ROLE_UNKNOWN,
+ @"AXHelpTag",
+ ROLE_SYSTEM_HELPBALLOON,
+ ROLE_SYSTEM_HELPBALLOON)
+
+ROLE(CHARACTER,
+ "character",
+ ATK_ROLE_IMAGE,
+ NSAccessibilityUnknownRole, //Unused on OS X.
+ ROLE_SYSTEM_CHARACTER,
+ ROLE_SYSTEM_CHARACTER)
+
+ROLE(LIST,
+ "list",
+ ATK_ROLE_LIST,
+ NSAccessibilityListRole,
+ ROLE_SYSTEM_LIST,
+ ROLE_SYSTEM_LIST)
+
+ROLE(LISTITEM,
+ "listitem",
+ ATK_ROLE_LIST_ITEM,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_LISTITEM,
+ ROLE_SYSTEM_LISTITEM)
+
+ROLE(OUTLINE,
+ "outline",
+ ATK_ROLE_TREE,
+ NSAccessibilityOutlineRole,
+ ROLE_SYSTEM_OUTLINE,
+ ROLE_SYSTEM_OUTLINE)
+
+ROLE(OUTLINEITEM,
+ "outlineitem",
+ ATK_ROLE_LIST_ITEM,
+ NSAccessibilityRowRole, //XXX: use OutlineRow as subrole.
+ ROLE_SYSTEM_OUTLINEITEM,
+ ROLE_SYSTEM_OUTLINEITEM)
+
+ROLE(PAGETAB,
+ "pagetab",
+ ATK_ROLE_PAGE_TAB,
+ NSAccessibilityRadioButtonRole,
+ ROLE_SYSTEM_PAGETAB,
+ ROLE_SYSTEM_PAGETAB)
+
+ROLE(PROPERTYPAGE,
+ "propertypage",
+ ATK_ROLE_SCROLL_PANE,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_PROPERTYPAGE,
+ ROLE_SYSTEM_PROPERTYPAGE)
+
+ROLE(INDICATOR,
+ "indicator",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_INDICATOR,
+ ROLE_SYSTEM_INDICATOR)
+
+ROLE(GRAPHIC,
+ "graphic",
+ ATK_ROLE_IMAGE,
+ NSAccessibilityImageRole,
+ ROLE_SYSTEM_GRAPHIC,
+ ROLE_SYSTEM_GRAPHIC)
+
+ROLE(STATICTEXT,
+ "statictext",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityStaticTextRole,
+ ROLE_SYSTEM_STATICTEXT,
+ ROLE_SYSTEM_STATICTEXT)
+
+ROLE(TEXT_LEAF,
+ "text leaf",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityStaticTextRole,
+ ROLE_SYSTEM_TEXT,
+ ROLE_SYSTEM_TEXT)
+
+ROLE(PUSHBUTTON,
+ "pushbutton",
+ ATK_ROLE_PUSH_BUTTON,
+ NSAccessibilityButtonRole,
+ ROLE_SYSTEM_PUSHBUTTON,
+ ROLE_SYSTEM_PUSHBUTTON)
+
+ROLE(CHECKBUTTON,
+ "checkbutton",
+ ATK_ROLE_CHECK_BOX,
+ NSAccessibilityCheckBoxRole,
+ ROLE_SYSTEM_CHECKBUTTON,
+ ROLE_SYSTEM_CHECKBUTTON)
+
+ROLE(RADIOBUTTON,
+ "radiobutton",
+ ATK_ROLE_RADIO_BUTTON,
+ NSAccessibilityRadioButtonRole,
+ ROLE_SYSTEM_RADIOBUTTON,
+ ROLE_SYSTEM_RADIOBUTTON)
+
+ROLE(COMBOBOX,
+ "combobox",
+ ATK_ROLE_COMBO_BOX,
+ NSAccessibilityPopUpButtonRole,
+ ROLE_SYSTEM_COMBOBOX,
+ ROLE_SYSTEM_COMBOBOX)
+
+ROLE(DROPLIST,
+ "droplist",
+ ATK_ROLE_COMBO_BOX,
+ NSAccessibilityPopUpButtonRole,
+ ROLE_SYSTEM_DROPLIST,
+ ROLE_SYSTEM_DROPLIST)
+
+ROLE(PROGRESSBAR,
+ "progressbar",
+ ATK_ROLE_PROGRESS_BAR,
+ NSAccessibilityProgressIndicatorRole,
+ ROLE_SYSTEM_PROGRESSBAR,
+ ROLE_SYSTEM_PROGRESSBAR)
+
+ROLE(DIAL,
+ "dial",
+ ATK_ROLE_DIAL,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_DIAL,
+ ROLE_SYSTEM_DIAL)
+
+ROLE(HOTKEYFIELD,
+ "hotkeyfield",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_HOTKEYFIELD,
+ ROLE_SYSTEM_HOTKEYFIELD)
+
+ROLE(SLIDER,
+ "slider",
+ ATK_ROLE_SLIDER,
+ NSAccessibilitySliderRole,
+ ROLE_SYSTEM_SLIDER,
+ ROLE_SYSTEM_SLIDER)
+
+ROLE(SPINBUTTON,
+ "spinbutton",
+ ATK_ROLE_SPIN_BUTTON,
+ NSAccessibilityIncrementorRole, //Subroles: Increment/Decrement.
+ ROLE_SYSTEM_SPINBUTTON,
+ ROLE_SYSTEM_SPINBUTTON)
+
+ROLE(DIAGRAM,
+ "diagram",
+ ATK_ROLE_IMAGE,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_DIAGRAM,
+ ROLE_SYSTEM_DIAGRAM)
+
+ROLE(ANIMATION,
+ "animation",
+ ATK_ROLE_ANIMATION,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_ANIMATION,
+ ROLE_SYSTEM_ANIMATION)
+
+ROLE(EQUATION,
+ "equation",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_EQUATION,
+ ROLE_SYSTEM_EQUATION)
+
+ROLE(BUTTONDROPDOWN,
+ "buttondropdown",
+ ATK_ROLE_PUSH_BUTTON,
+ NSAccessibilityPopUpButtonRole,
+ ROLE_SYSTEM_BUTTONDROPDOWN,
+ ROLE_SYSTEM_BUTTONDROPDOWN)
+
+ROLE(BUTTONMENU,
+ "buttonmenu",
+ ATK_ROLE_PUSH_BUTTON,
+ NSAccessibilityMenuButtonRole,
+ ROLE_SYSTEM_BUTTONMENU,
+ ROLE_SYSTEM_BUTTONMENU)
+
+ROLE(BUTTONDROPDOWNGRID,
+ "buttondropdowngrid",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_BUTTONDROPDOWNGRID,
+ ROLE_SYSTEM_BUTTONDROPDOWNGRID)
+
+ROLE(WHITESPACE,
+ "whitespace",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_WHITESPACE,
+ ROLE_SYSTEM_WHITESPACE)
+
+ROLE(PAGETABLIST,
+ "pagetablist",
+ ATK_ROLE_PAGE_TAB_LIST,
+ NSAccessibilityTabGroupRole,
+ ROLE_SYSTEM_PAGETABLIST,
+ ROLE_SYSTEM_PAGETABLIST)
+
+ROLE(CLOCK,
+ "clock",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole, //Unused on OS X
+ ROLE_SYSTEM_CLOCK,
+ ROLE_SYSTEM_CLOCK)
+
+ROLE(SPLITBUTTON,
+ "splitbutton",
+ ATK_ROLE_PUSH_BUTTON,
+ NSAccessibilityButtonRole,
+ ROLE_SYSTEM_SPLITBUTTON,
+ ROLE_SYSTEM_SPLITBUTTON)
+
+ROLE(IPADDRESS,
+ "ipaddress",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_IPADDRESS,
+ ROLE_SYSTEM_IPADDRESS)
+
+ROLE(ACCEL_LABEL,
+ "accel label",
+ ATK_ROLE_ACCEL_LABEL,
+ NSAccessibilityStaticTextRole,
+ ROLE_SYSTEM_STATICTEXT,
+ ROLE_SYSTEM_STATICTEXT)
+
+ROLE(ARROW,
+ "arrow",
+ ATK_ROLE_ARROW,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_INDICATOR,
+ ROLE_SYSTEM_INDICATOR)
+
+ROLE(CANVAS,
+ "canvas",
+ ATK_ROLE_CANVAS,
+ NSAccessibilityImageRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_CANVAS)
+
+ROLE(CHECK_MENU_ITEM,
+ "check menu item",
+ ATK_ROLE_CHECK_MENU_ITEM,
+ NSAccessibilityMenuItemRole,
+ ROLE_SYSTEM_MENUITEM,
+ IA2_ROLE_CHECK_MENU_ITEM)
+
+ROLE(COLOR_CHOOSER,
+ "color chooser",
+ ATK_ROLE_COLOR_CHOOSER,
+ NSAccessibilityColorWellRole,
+ ROLE_SYSTEM_DIALOG,
+ IA2_ROLE_COLOR_CHOOSER)
+
+ROLE(DATE_EDITOR,
+ "date editor",
+ ATK_ROLE_DATE_EDITOR,
+ NSAccessibilityUnknownRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_DATE_EDITOR)
+
+ROLE(DESKTOP_ICON,
+ "desktop icon",
+ ATK_ROLE_DESKTOP_ICON,
+ NSAccessibilityImageRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_DESKTOP_ICON)
+
+ROLE(DESKTOP_FRAME,
+ "desktop frame",
+ ATK_ROLE_DESKTOP_FRAME,
+ NSAccessibilityUnknownRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_DESKTOP_PANE)
+
+ROLE(DIRECTORY_PANE,
+ "directory pane",
+ ATK_ROLE_DIRECTORY_PANE,
+ NSAccessibilityBrowserRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_DIRECTORY_PANE)
+
+ROLE(FILE_CHOOSER,
+ "file chooser",
+ ATK_ROLE_FILE_CHOOSER,
+ NSAccessibilityUnknownRole, //Unused on OS X
+ USE_ROLE_STRING,
+ IA2_ROLE_FILE_CHOOSER)
+
+ROLE(FONT_CHOOSER,
+ "font chooser",
+ ATK_ROLE_FONT_CHOOSER,
+ NSAccessibilityUnknownRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_FONT_CHOOSER)
+
+ROLE(CHROME_WINDOW,
+ "chrome window",
+ ATK_ROLE_FRAME,
+ NSAccessibilityUnknownRole, //Unused on OS X
+ ROLE_SYSTEM_APPLICATION,
+ IA2_ROLE_FRAME)
+
+ROLE(GLASS_PANE,
+ "glass pane",
+ ATK_ROLE_GLASS_PANE,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_GLASS_PANE)
+
+ROLE(HTML_CONTAINER,
+ "html container",
+ ATK_ROLE_HTML_CONTAINER,
+ NSAccessibilityUnknownRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_UNKNOWN)
+
+ROLE(ICON,
+ "icon",
+ ATK_ROLE_ICON,
+ NSAccessibilityImageRole,
+ ROLE_SYSTEM_PUSHBUTTON,
+ IA2_ROLE_ICON)
+
+ROLE(LABEL,
+ "label",
+ ATK_ROLE_LABEL,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_STATICTEXT,
+ IA2_ROLE_LABEL)
+
+ROLE(LAYERED_PANE,
+ "layered pane",
+ ATK_ROLE_LAYERED_PANE,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_LAYERED_PANE)
+
+ROLE(OPTION_PANE,
+ "option pane",
+ ATK_ROLE_OPTION_PANE,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_OPTION_PANE)
+
+ROLE(PASSWORD_TEXT,
+ "password text",
+ ATK_ROLE_PASSWORD_TEXT,
+ NSAccessibilityTextFieldRole,
+ ROLE_SYSTEM_TEXT,
+ ROLE_SYSTEM_TEXT)
+
+ROLE(POPUP_MENU,
+ "popup menu",
+ ATK_ROLE_POPUP_MENU,
+ NSAccessibilityUnknownRole, //Unused
+ ROLE_SYSTEM_MENUPOPUP,
+ ROLE_SYSTEM_MENUPOPUP)
+
+ROLE(RADIO_MENU_ITEM,
+ "radio menu item",
+ ATK_ROLE_RADIO_MENU_ITEM,
+ NSAccessibilityMenuItemRole,
+ ROLE_SYSTEM_MENUITEM,
+ IA2_ROLE_RADIO_MENU_ITEM)
+
+ROLE(ROOT_PANE,
+ "root pane",
+ ATK_ROLE_ROOT_PANE,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_ROOT_PANE)
+
+ROLE(SCROLL_PANE,
+ "scroll pane",
+ ATK_ROLE_SCROLL_PANE,
+ NSAccessibilityScrollAreaRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_SCROLL_PANE)
+
+ROLE(SPLIT_PANE,
+ "split pane",
+ ATK_ROLE_SPLIT_PANE,
+ NSAccessibilitySplitGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_SPLIT_PANE)
+
+ROLE(TABLE_COLUMN_HEADER,
+ "table column header",
+ ATK_ROLE_TABLE_COLUMN_HEADER,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_COLUMNHEADER,
+ ROLE_SYSTEM_COLUMNHEADER)
+
+ROLE(TABLE_ROW_HEADER,
+ "table row header",
+ ATK_ROLE_TABLE_ROW_HEADER,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_ROWHEADER,
+ ROLE_SYSTEM_ROWHEADER)
+
+ROLE(TEAR_OFF_MENU_ITEM,
+ "tear off menu item",
+ ATK_ROLE_TEAR_OFF_MENU_ITEM,
+ NSAccessibilityMenuItemRole,
+ ROLE_SYSTEM_MENUITEM,
+ IA2_ROLE_TEAR_OFF_MENU)
+
+ROLE(TERMINAL,
+ "terminal",
+ ATK_ROLE_TERMINAL,
+ NSAccessibilityUnknownRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_TERMINAL)
+
+ROLE(TEXT_CONTAINER,
+ "text container",
+ ATK_ROLE_TEXT,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_TEXT_FRAME)
+
+ROLE(TOGGLE_BUTTON,
+ "toggle button",
+ ATK_ROLE_TOGGLE_BUTTON,
+ NSAccessibilityButtonRole,
+ ROLE_SYSTEM_PUSHBUTTON,
+ IA2_ROLE_TOGGLE_BUTTON)
+
+ROLE(TREE_TABLE,
+ "tree table",
+ ATK_ROLE_TREE_TABLE,
+ NSAccessibilityTableRole,
+ ROLE_SYSTEM_OUTLINE,
+ ROLE_SYSTEM_OUTLINE)
+
+ROLE(VIEWPORT,
+ "viewport",
+ ATK_ROLE_VIEWPORT,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_PANE,
+ IA2_ROLE_VIEW_PORT)
+
+ROLE(HEADER,
+ "header",
+ ATK_ROLE_HEADER,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_HEADER)
+
+ROLE(FOOTER,
+ "footer",
+ ATK_ROLE_FOOTER,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_FOOTER)
+
+ROLE(PARAGRAPH,
+ "paragraph",
+ ATK_ROLE_PARAGRAPH,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_PARAGRAPH)
+
+ROLE(RULER,
+ "ruler",
+ ATK_ROLE_RULER,
+ @"AXRuler", //10.4+ only, so we re-define the constant.
+ USE_ROLE_STRING,
+ IA2_ROLE_RULER)
+
+ROLE(AUTOCOMPLETE,
+ "autocomplete",
+ ATK_ROLE_AUTOCOMPLETE,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_COMBOBOX,
+ ROLE_SYSTEM_COMBOBOX)
+
+ROLE(EDITBAR,
+ "editbar",
+ ATK_ROLE_EDITBAR,
+ NSAccessibilityTextFieldRole,
+ ROLE_SYSTEM_TEXT,
+ IA2_ROLE_EDITBAR)
+
+ROLE(ENTRY,
+ "entry",
+ ATK_ROLE_ENTRY,
+ NSAccessibilityTextFieldRole,
+ ROLE_SYSTEM_TEXT,
+ ROLE_SYSTEM_TEXT)
+
+ROLE(CAPTION,
+ "caption",
+ ATK_ROLE_CAPTION,
+ NSAccessibilityStaticTextRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_CAPTION)
+
+ROLE(DOCUMENT_FRAME,
+ "document frame",
+ ATK_ROLE_DOCUMENT_FRAME,
+ NSAccessibilityScrollAreaRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_UNKNOWN)
+
+ROLE(HEADING,
+ "heading",
+ ATK_ROLE_HEADING,
+ @"AXHeading",
+ USE_ROLE_STRING,
+ IA2_ROLE_HEADING)
+
+ROLE(PAGE,
+ "page",
+ ATK_ROLE_PAGE,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_PAGE)
+
+ROLE(SECTION,
+ "section",
+ ATK_ROLE_SECTION,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_SECTION)
+
+ROLE(REDUNDANT_OBJECT,
+ "redundant object",
+ ATK_ROLE_REDUNDANT_OBJECT,
+ NSAccessibilityUnknownRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_REDUNDANT_OBJECT)
+
+ROLE(FORM,
+ "form",
+ ATK_ROLE_FORM,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_FORM)
+
+ROLE(IME,
+ "ime",
+ ATK_ROLE_INPUT_METHOD_WINDOW,
+ NSAccessibilityUnknownRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_INPUT_METHOD_WINDOW)
+
+ROLE(APP_ROOT,
+ "app root",
+ ATK_ROLE_APPLICATION,
+ NSAccessibilityUnknownRole, //Unused on OS X
+ ROLE_SYSTEM_APPLICATION,
+ ROLE_SYSTEM_APPLICATION)
+
+ROLE(PARENT_MENUITEM,
+ "parent menuitem",
+ ATK_ROLE_MENU,
+ NSAccessibilityMenuItemRole,
+ ROLE_SYSTEM_MENUITEM,
+ ROLE_SYSTEM_MENUITEM)
+
+ROLE(CALENDAR,
+ "calendar",
+ ATK_ROLE_CALENDAR,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_CLIENT,
+ ROLE_SYSTEM_CLIENT)
+
+ROLE(COMBOBOX_LIST,
+ "combobox list",
+ ATK_ROLE_MENU,
+ NSAccessibilityMenuRole,
+ ROLE_SYSTEM_LIST,
+ ROLE_SYSTEM_LIST)
+
+ROLE(COMBOBOX_OPTION,
+ "combobox option",
+ ATK_ROLE_MENU_ITEM,
+ NSAccessibilityMenuItemRole,
+ ROLE_SYSTEM_LISTITEM,
+ ROLE_SYSTEM_LISTITEM)
+
+ROLE(IMAGE_MAP,
+ "image map",
+ ATK_ROLE_IMAGE,
+ NSAccessibilityImageRole,
+ ROLE_SYSTEM_GRAPHIC,
+ ROLE_SYSTEM_GRAPHIC)
+
+ROLE(OPTION,
+ "listbox option",
+ ATK_ROLE_LIST_ITEM,
+ NSAccessibilityRowRole,
+ ROLE_SYSTEM_LISTITEM,
+ ROLE_SYSTEM_LISTITEM)
+
+ROLE(RICH_OPTION,
+ "listbox rich option",
+ ATK_ROLE_LIST_ITEM,
+ NSAccessibilityRowRole,
+ ROLE_SYSTEM_LISTITEM,
+ ROLE_SYSTEM_LISTITEM)
+
+ROLE(LISTBOX,
+ "listbox",
+ ATK_ROLE_LIST,
+ NSAccessibilityListRole,
+ ROLE_SYSTEM_LIST,
+ ROLE_SYSTEM_LIST)
+
+ROLE(FLAT_EQUATION,
+ "flat equation",
+ ATK_ROLE_UNKNOWN,
+ NSAccessibilityUnknownRole,
+ ROLE_SYSTEM_EQUATION,
+ ROLE_SYSTEM_EQUATION)
+
+ROLE(GRID_CELL,
+ "gridcell",
+ ATK_ROLE_TABLE_CELL,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_CELL,
+ ROLE_SYSTEM_CELL)
+
+ROLE(EMBEDDED_OBJECT,
+ "embedded object",
+ ATK_ROLE_PANEL,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_EMBEDDED_OBJECT)
+
+ROLE(NOTE,
+ "note",
+ ATK_ROLE_SECTION,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_NOTE)
+
+ROLE(FIGURE,
+ "figure",
+ ATK_ROLE_PANEL,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_GROUPING,
+ ROLE_SYSTEM_GROUPING)
+
+ROLE(CHECK_RICH_OPTION,
+ "check rich option",
+ ATK_ROLE_CHECK_BOX,
+ NSAccessibilityCheckBoxRole,
+ ROLE_SYSTEM_CHECKBUTTON,
+ ROLE_SYSTEM_CHECKBUTTON)
+
+ROLE(DEFINITION_LIST,
+ "definitionlist",
+ ATK_ROLE_LIST,
+ NSAccessibilityListRole,
+ ROLE_SYSTEM_LIST,
+ ROLE_SYSTEM_LIST)
+
+ROLE(TERM,
+ "term",
+ ATK_ROLE_LIST_ITEM,
+ NSAccessibilityGroupRole,
+ ROLE_SYSTEM_LISTITEM,
+ ROLE_SYSTEM_LISTITEM)
+
+ROLE(DEFINITION,
+ "definition",
+ ATK_ROLE_PARAGRAPH,
+ NSAccessibilityGroupRole,
+ USE_ROLE_STRING,
+ IA2_ROLE_PARAGRAPH)
diff --git a/accessible/src/base/nsAccessibilityService.cpp b/accessible/src/base/nsAccessibilityService.cpp
index 3dd35421c8d2..e2b07b98a15a 100644
--- a/accessible/src/base/nsAccessibilityService.cpp
+++ b/accessible/src/base/nsAccessibilityService.cpp
@@ -706,13 +706,19 @@ nsAccessibilityService::GetAccessibleFor(nsIDOMNode *aNode,
NS_IMETHODIMP
nsAccessibilityService::GetStringRole(PRUint32 aRole, nsAString& aString)
{
- if ( aRole >= ArrayLength(kRoleNames)) {
- aString.AssignLiteral("unknown");
+#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role) \
+ case roles::geckoRole: \
+ CopyUTF8toUTF16(stringRole, aString); \
return NS_OK;
+
+ switch (aRole) {
+#include "RoleMap.h"
+ default:
+ aString.AssignLiteral("unknown");
+ return NS_OK;
}
- CopyUTF8toUTF16(kRoleNames[aRole], aString);
- return NS_OK;
+#undef ROLE
}
NS_IMETHODIMP
diff --git a/accessible/src/base/nsAccessibilityService.h b/accessible/src/base/nsAccessibilityService.h
index 979d67d7f68e..d9f4462542db 100644
--- a/accessible/src/base/nsAccessibilityService.h
+++ b/accessible/src/base/nsAccessibilityService.h
@@ -295,142 +295,6 @@ GetAccService()
return nsAccessibilityService::gAccessibilityService;
}
-/**
- * Map nsIAccessibleRole constants to strings. Used by
- * nsIAccessibleRetrieval::getStringRole() method.
- */
-static const char kRoleNames[][20] = {
- "nothing", //ROLE_NOTHING
- "titlebar", //ROLE_TITLEBAR
- "menubar", //ROLE_MENUBAR
- "scrollbar", //ROLE_SCROLLBAR
- "grip", //ROLE_GRIP
- "sound", //ROLE_SOUND
- "cursor", //ROLE_CURSOR
- "caret", //ROLE_CARET
- "alert", //ROLE_ALERT
- "window", //ROLE_WINDOW
- "internal frame", //ROLE_INTERNAL_FRAME
- "menupopup", //ROLE_MENUPOPUP
- "menuitem", //ROLE_MENUITEM
- "tooltip", //ROLE_TOOLTIP
- "application", //ROLE_APPLICATION
- "document", //ROLE_DOCUMENT
- "pane", //ROLE_PANE
- "chart", //ROLE_CHART
- "dialog", //ROLE_DIALOG
- "border", //ROLE_BORDER
- "grouping", //ROLE_GROUPING
- "separator", //ROLE_SEPARATOR
- "toolbar", //ROLE_TOOLBAR
- "statusbar", //ROLE_STATUSBAR
- "table", //ROLE_TABLE
- "columnheader", //ROLE_COLUMNHEADER
- "rowheader", //ROLE_ROWHEADER
- "column", //ROLE_COLUMN
- "row", //ROLE_ROW
- "cell", //ROLE_CELL
- "link", //ROLE_LINK
- "helpballoon", //ROLE_HELPBALLOON
- "character", //ROLE_CHARACTER
- "list", //ROLE_LIST
- "listitem", //ROLE_LISTITEM
- "outline", //ROLE_OUTLINE
- "outlineitem", //ROLE_OUTLINEITEM
- "pagetab", //ROLE_PAGETAB
- "propertypage", //ROLE_PROPERTYPAGE
- "indicator", //ROLE_INDICATOR
- "graphic", //ROLE_GRAPHIC
- "statictext", //ROLE_STATICTEXT
- "text leaf", //ROLE_TEXT_LEAF
- "pushbutton", //ROLE_PUSHBUTTON
- "checkbutton", //ROLE_CHECKBUTTON
- "radiobutton", //ROLE_RADIOBUTTON
- "combobox", //ROLE_COMBOBOX
- "droplist", //ROLE_DROPLIST
- "progressbar", //ROLE_PROGRESSBAR
- "dial", //ROLE_DIAL
- "hotkeyfield", //ROLE_HOTKEYFIELD
- "slider", //ROLE_SLIDER
- "spinbutton", //ROLE_SPINBUTTON
- "diagram", //ROLE_DIAGRAM
- "animation", //ROLE_ANIMATION
- "equation", //ROLE_EQUATION
- "buttondropdown", //ROLE_BUTTONDROPDOWN
- "buttonmenu", //ROLE_BUTTONMENU
- "buttondropdowngrid", //ROLE_BUTTONDROPDOWNGRID
- "whitespace", //ROLE_WHITESPACE
- "pagetablist", //ROLE_PAGETABLIST
- "clock", //ROLE_CLOCK
- "splitbutton", //ROLE_SPLITBUTTON
- "ipaddress", //ROLE_IPADDRESS
- "accel label", //ROLE_ACCEL_LABEL
- "arrow", //ROLE_ARROW
- "canvas", //ROLE_CANVAS
- "check menu item", //ROLE_CHECK_MENU_ITEM
- "color chooser", //ROLE_COLOR_CHOOSER
- "date editor", //ROLE_DATE_EDITOR
- "desktop icon", //ROLE_DESKTOP_ICON
- "desktop frame", //ROLE_DESKTOP_FRAME
- "directory pane", //ROLE_DIRECTORY_PANE
- "file chooser", //ROLE_FILE_CHOOSER
- "font chooser", //ROLE_FONT_CHOOSER
- "chrome window", //ROLE_CHROME_WINDOW
- "glass pane", //ROLE_GLASS_PANE
- "html container", //ROLE_HTML_CONTAINER
- "icon", //ROLE_ICON
- "label", //ROLE_LABEL
- "layered pane", //ROLE_LAYERED_PANE
- "option pane", //ROLE_OPTION_PANE
- "password text", //ROLE_PASSWORD_TEXT
- "popup menu", //ROLE_POPUP_MENU
- "radio menu item", //ROLE_RADIO_MENU_ITEM
- "root pane", //ROLE_ROOT_PANE
- "scroll pane", //ROLE_SCROLL_PANE
- "split pane", //ROLE_SPLIT_PANE
- "table column header", //ROLE_TABLE_COLUMN_HEADER
- "table row header", //ROLE_TABLE_ROW_HEADER
- "tear off menu item", //ROLE_TEAR_OFF_MENU_ITEM
- "terminal", //ROLE_TERMINAL
- "text container", //ROLE_TEXT_CONTAINER
- "toggle button", //ROLE_TOGGLE_BUTTON
- "tree table", //ROLE_TREE_TABLE
- "viewport", //ROLE_VIEWPORT
- "header", //ROLE_HEADER
- "footer", //ROLE_FOOTER
- "paragraph", //ROLE_PARAGRAPH
- "ruler", //ROLE_RULER
- "autocomplete", //ROLE_AUTOCOMPLETE
- "editbar", //ROLE_EDITBAR
- "entry", //ROLE_ENTRY
- "caption", //ROLE_CAPTION
- "document frame", //ROLE_DOCUMENT_FRAME
- "heading", //ROLE_HEADING
- "page", //ROLE_PAGE
- "section", //ROLE_SECTION
- "redundant object", //ROLE_REDUNDANT_OBJECT
- "form", //ROLE_FORM
- "ime", //ROLE_IME
- "app root", //ROLE_APP_ROOT
- "parent menuitem", //ROLE_PARENT_MENUITEM
- "calendar", //ROLE_CALENDAR
- "combobox list", //ROLE_COMBOBOX_LIST
- "combobox option", //ROLE_COMBOBOX_OPTION
- "image map", //ROLE_IMAGE_MAP
- "listbox option", //ROLE_OPTION
- "listbox rich option", //ROLE_RICH_OPTION
- "listbox", //ROLE_LISTBOX
- "flat equation", //ROLE_FLAT_EQUATION
- "gridcell", //ROLE_GRID_CELL
- "embedded object", //ROLE_EMBEDDED_OBJECT
- "note", //ROLE_NOTE
- "figure", //ROLE_FIGURE
- "check rich option", //ROLE_CHECK_RICH_OPTION
- "definitionlist", //ROLE_DEFINITION_LIST
- "term", //ROLE_TERM
- "definition" //ROLE_DEFINITION
-};
-
/**
* Map nsIAccessibleEvents constants to strings. Used by
* nsIAccessibleRetrieval::getStringEventType() method.
diff --git a/accessible/src/mac/Makefile.in b/accessible/src/mac/Makefile.in
index d735fd0a0dcb..0849fd2bf45d 100644
--- a/accessible/src/mac/Makefile.in
+++ b/accessible/src/mac/Makefile.in
@@ -80,7 +80,6 @@ EXPORTS = \
mozAccessibleProtocol.h \
mozActionElements.h \
mozTextAccessible.h \
- nsRoleMap.h \
$(NULL)
# we don't want the shared lib, but we want to force the creation of a static lib.
diff --git a/accessible/src/mac/mozAccessible.mm b/accessible/src/mac/mozAccessible.mm
index 37d3ebc771a7..1085f425ee36 100644
--- a/accessible/src/mac/mozAccessible.mm
+++ b/accessible/src/mac/mozAccessible.mm
@@ -40,7 +40,6 @@
#import "MacUtils.h"
#import "mozView.h"
-#import "nsRoleMap.h"
#include "Accessible-inl.h"
#include "nsIAccessibleRelation.h"
@@ -121,10 +120,6 @@ GetNativeFromGeckoAccessible(nsIAccessible *anAccessible)
mGeckoAccessible = geckoAccessible;
mIsExpired = NO;
mRole = geckoAccessible->Role();
-
- // Check for OS X "role skew"; the role constants in nsIAccessible.idl need to match the ones
- // in nsRoleMap.h.
- NS_ASSERTION([AXRoles[roles::LAST_ENTRY] isEqualToString:@"ROLE_LAST_ENTRY"], "Role skew in the role map!");
}
return self;
@@ -462,7 +457,19 @@ GetNativeFromGeckoAccessible(nsIAccessible *anAccessible)
NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(mGeckoAccessible),
"Does not support nsIAccessibleText when it should");
#endif
- return (NSString*) AXRoles[mRole];
+
+#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role) \
+ case roles::geckoRole: \
+ return macRole;
+
+ switch (mRole) {
+#include "RoleMap.h"
+ default:
+ NS_NOTREACHED("Unknown role.");
+ return NSAccessibilityUnknownRole;
+ }
+
+#undef ROLE
}
- (NSString*)subrole
diff --git a/accessible/src/mac/nsAccessibleWrap.h b/accessible/src/mac/nsAccessibleWrap.h
index d817c39efabc..f3297aca36a5 100644
--- a/accessible/src/mac/nsAccessibleWrap.h
+++ b/accessible/src/mac/nsAccessibleWrap.h
@@ -101,7 +101,7 @@ public: // construction, destruction
*/
void GetUnignoredChildren(nsTArray* aChildrenArray);
nsAccessible* GetUnignoredParent() const;
-
+
protected:
virtual nsresult FirePlatformEvent(AccEvent* aEvent);
diff --git a/accessible/src/mac/nsAccessibleWrap.mm b/accessible/src/mac/nsAccessibleWrap.mm
index f60be6f97465..b1bfbfe080ef 100644
--- a/accessible/src/mac/nsAccessibleWrap.mm
+++ b/accessible/src/mac/nsAccessibleWrap.mm
@@ -39,8 +39,6 @@
#include "nsDocAccessible.h"
#include "nsObjCExceptions.h"
-#import "nsRoleMap.h"
-
#include "Accessible-inl.h"
#include "Role.h"
diff --git a/accessible/src/mac/nsRoleMap.h b/accessible/src/mac/nsRoleMap.h
deleted file mode 100644
index 7c86fbffce8b..000000000000
--- a/accessible/src/mac/nsRoleMap.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:expandtab:shiftwidth=2:tabstop=2:
- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is Mozilla Foundation
- * Portions created by the Initial Developer are Copyright (C) 2006
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * HÃ¥kan Waara
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#import
-
-#include "nsIAccessible.h"
-
-static const NSString* AXRoles [] = {
- NSAccessibilityUnknownRole, // roles::NOTHING 0
- NSAccessibilityUnknownRole, // roles::TITLEBAR 1 Irrelevant on OS X; windows are always native.
- NSAccessibilityScrollBarRole, // roles::SCROLLBAR 3 We might need to make this its own mozAccessible, to support the children objects (valueindicator, down/up buttons).
- NSAccessibilityMenuBarRole, // roles::MENUBAR 2 Irrelevant on OS X; the menubar will always be native and on the top of the screen.
- NSAccessibilitySplitterRole, // roles::GRIP 4
- NSAccessibilityUnknownRole, // roles::SOUND 5 Unused on OS X.
- NSAccessibilityUnknownRole, // roles::CURSOR 6 Unused on OS X.
- NSAccessibilityUnknownRole, // roles::CARET 7 Unused on OS X.
- NSAccessibilityWindowRole, // roles::ALERT 8
- NSAccessibilityWindowRole, // roles::WINDOW 9 Irrelevant on OS X; all window a11y is handled by the system.
- NSAccessibilityScrollAreaRole, // roles::INTERNAL_FRAME 10
- NSAccessibilityMenuRole, // roles::MENUPOPUP 11 The parent of menuitems.
- NSAccessibilityMenuItemRole, // roles::MENUITEM 12
- @"AXHelpTag", // roles::TOOLTIP 13 10.4+ only, so we re-define the constant.
- NSAccessibilityGroupRole, // roles::APPLICATION 14 Unused on OS X. the system will take care of this.
- @"AXWebArea", // roles::DOCUMENT 15
- NSAccessibilityGroupRole, // roles::PANE 16
- NSAccessibilityUnknownRole, // roles::CHART 17
- NSAccessibilityWindowRole, // roles::DIALOG 18 There's a dialog subrole.
- NSAccessibilityUnknownRole, // roles::BORDER 19 Unused on OS X.
- NSAccessibilityGroupRole, // roles::GROUPING 20
- NSAccessibilityUnknownRole, // roles::SEPARATOR 21
- NSAccessibilityToolbarRole, // roles::TOOLBAR 22
- NSAccessibilityUnknownRole, // roles::STATUSBAR 23 Doesn't exist on OS X (a status bar is its parts; a progressbar, a label, etc.)
- NSAccessibilityGroupRole, // roles::TABLE 24
- NSAccessibilityGroupRole, // roles::COLUMNHEADER 25
- NSAccessibilityGroupRole, // roles::ROWHEADER 26
- NSAccessibilityColumnRole, // roles::COLUMN 27
- NSAccessibilityRowRole, // roles::ROW 28
- NSAccessibilityGroupRole, // roles::CELL 29
- @"AXLink", // roles::LINK 30 10.4+ the attr first define in SDK 10.4, so we define it here too. ROLE_LINK
- @"AXHelpTag", // roles::HELPBALLOON 31
- NSAccessibilityUnknownRole, // roles::CHARACTER 32 Unused on OS X.
- NSAccessibilityListRole, // roles::LIST 33
- NSAccessibilityGroupRole, // roles::LISTITEM 34
- NSAccessibilityOutlineRole, // roles::OUTLINE 35
- NSAccessibilityRowRole, // roles::OUTLINEITEM 36 XXX: use OutlineRow as subrole.
- NSAccessibilityRadioButtonRole, // roles::PAGETAB 37
- NSAccessibilityGroupRole, // roles::PROPERTYPAGE 38
- NSAccessibilityUnknownRole, // roles::INDICATOR 39
- NSAccessibilityImageRole, // roles::GRAPHIC 40
- NSAccessibilityStaticTextRole, // roles::STATICTEXT 41
- NSAccessibilityStaticTextRole, // roles::TEXT_LEAF 42
- NSAccessibilityButtonRole, // roles::PUSHBUTTON 43
- NSAccessibilityCheckBoxRole, // roles::CHECKBUTTON 44
- NSAccessibilityRadioButtonRole, // roles::RADIOBUTTON 45
- NSAccessibilityPopUpButtonRole, // roles::COMBOBOX 46
- NSAccessibilityPopUpButtonRole, // roles::DROPLIST 47
- NSAccessibilityProgressIndicatorRole, // roles::PROGRESSBAR 48
- NSAccessibilityUnknownRole, // roles::DIAL 49
- NSAccessibilityUnknownRole, // roles::HOTKEYFIELD 50
- NSAccessibilitySliderRole, // roles::SLIDER 51
- NSAccessibilityIncrementorRole, // roles::SPINBUTTON 52 Subroles: Increment/Decrement.
- NSAccessibilityUnknownRole, // roles::DIAGRAM 53
- NSAccessibilityUnknownRole, // roles::ANIMATION 54
- NSAccessibilityUnknownRole, // roles::EQUATION 55
- NSAccessibilityPopUpButtonRole, // roles::BUTTONDROPDOWN 56
- NSAccessibilityMenuButtonRole, // roles::BUTTONMENU 57
- NSAccessibilityGroupRole, // roles::BUTTONDROPDOWNGRID 58
- NSAccessibilityUnknownRole, // roles::WHITESPACE 59
- NSAccessibilityTabGroupRole, // roles::PAGETABLIST 60
- NSAccessibilityUnknownRole, // roles::CLOCK 61 Unused on OS X
- NSAccessibilityButtonRole, // roles::SPLITBUTTON 62
- NSAccessibilityUnknownRole, // roles::IPADDRESS 63
- NSAccessibilityStaticTextRole, // roles::ACCEL_LABEL 64
- NSAccessibilityUnknownRole, // roles::ARROW 65
- NSAccessibilityImageRole, // roles::CANVAS 66
- NSAccessibilityMenuItemRole, // roles::CHECK_MENU_ITEM 67
- NSAccessibilityColorWellRole, // roles::COLOR_CHOOSER 68
- NSAccessibilityUnknownRole, // roles::DATE_EDITOR 69
- NSAccessibilityImageRole, // roles::DESKTOP_ICON 70
- NSAccessibilityUnknownRole, // roles::DESKTOP_FRAME 71
- NSAccessibilityBrowserRole, // roles::DIRECTORY_PANE 72
- NSAccessibilityUnknownRole, // roles::FILE_CHOOSER 73 Unused on OS X
- NSAccessibilityUnknownRole, // roles::FONT_CHOOSER 74
- NSAccessibilityUnknownRole, // roles::CHROME_WINDOW 75 Unused on OS X
- NSAccessibilityGroupRole, // roles::GLASS_PANE 76
- NSAccessibilityUnknownRole, // roles::HTML_CONTAINER 77
- NSAccessibilityImageRole, // roles::ICON 78
- NSAccessibilityGroupRole, // roles::LABEL 79
- NSAccessibilityGroupRole, // roles::LAYERED_PANE 80
- NSAccessibilityGroupRole, // roles::OPTION_PANE 81
- NSAccessibilityTextFieldRole, // roles::PASSWORD_TEXT 82
- NSAccessibilityUnknownRole, // roles::POPUP_MENU 83 Unused
- NSAccessibilityMenuItemRole, // roles::RADIO_MENU_ITEM 84
- NSAccessibilityGroupRole, // roles::ROOT_PANE 85
- NSAccessibilityScrollAreaRole, // roles::SCROLL_PANE 86
- NSAccessibilitySplitGroupRole, // roles::SPLIT_PANE 87
- NSAccessibilityUnknownRole, // roles::TABLE_COLUMN_HEADER 88
- NSAccessibilityUnknownRole, // roles::TABLE_ROW_HEADER 89
- NSAccessibilityMenuItemRole, // roles::TEAR_OFF_MENU_ITEM 90
- NSAccessibilityUnknownRole, // roles::TERMINAL 91
- NSAccessibilityGroupRole, // roles::TEXT_CONTAINER 92
- NSAccessibilityButtonRole, // roles::TOGGLE_BUTTON 93
- NSAccessibilityTableRole, // roles::TREE_TABLE 94
- NSAccessibilityUnknownRole, // roles::VIEWPORT 95
- NSAccessibilityGroupRole, // roles::HEADER 96
- NSAccessibilityGroupRole, // roles::FOOTER 97
- NSAccessibilityGroupRole, // roles::PARAGRAPH 98
- @"AXRuler", // roles::RULER 99 10.4+ only, so we re-define the constant.
- NSAccessibilityUnknownRole, // roles::AUTOCOMPLETE 100
- NSAccessibilityTextFieldRole, // roles::EDITBAR 101
- NSAccessibilityTextFieldRole, // roles::ENTRY 102
- NSAccessibilityStaticTextRole, // roles::CAPTION 103
- NSAccessibilityScrollAreaRole, // roles::DOCUMENT_FRAME 104
- @"AXHeading", // roles::HEADING 105
- NSAccessibilityGroupRole, // roles::PAGE 106
- NSAccessibilityGroupRole, // roles::SECTION 107
- NSAccessibilityUnknownRole, // roles::REDUNDANT_OBJECT 108
- NSAccessibilityGroupRole, // roles::FORM 109
- NSAccessibilityUnknownRole, // roles::IME 110
- NSAccessibilityUnknownRole, // roles::APP_ROOT 111 Unused on OS X
- NSAccessibilityMenuItemRole, // roles::PARENT_MENUITEM 112
- NSAccessibilityGroupRole, // roles::CALENDAR 113
- NSAccessibilityMenuRole, // roles::COMBOBOX_LIST 114
- NSAccessibilityMenuItemRole, // roles::COMBOBOX_OPTION 115
- NSAccessibilityImageRole, // roles::IMAGE_MAP 116
- NSAccessibilityRowRole, // roles::OPTION 117
- NSAccessibilityRowRole, // roles::RICH_OPTION 118
- NSAccessibilityListRole, // roles::LISTBOX 119
- NSAccessibilityUnknownRole, // roles::FLAT_EQUATION 120
- NSAccessibilityGroupRole, // roles::GRID_CELL 121
- NSAccessibilityGroupRole, // roles::EMBEDDED_OBJECT 122
- NSAccessibilityGroupRole, // roles::NOTE 123
- NSAccessibilityGroupRole, // roles::FIGURE 124
- NSAccessibilityCheckBoxRole, // roles::CHECK_RICH_OPTION 125
- NSAccessibilityListRole, // roles::DEFINITION_LIST 126
- NSAccessibilityGroupRole, // roles::TERM 127
- NSAccessibilityGroupRole, // roles::DEFINITION 128
- @"ROLE_LAST_ENTRY" // roles::LAST_ENTRY Bogus role that will never be shown (just marks the end of this array)!
-};
diff --git a/accessible/src/msaa/nsAccessibleWrap.cpp b/accessible/src/msaa/nsAccessibleWrap.cpp
index ad376602b93e..4831ecdefe19 100644
--- a/accessible/src/msaa/nsAccessibleWrap.cpp
+++ b/accessible/src/msaa/nsAccessibleWrap.cpp
@@ -52,6 +52,7 @@
#include "nsIAccessibleRelation.h"
#include "Accessible2_i.c"
+#include "AccessibleRole.h"
#include "AccessibleStates.h"
#include "nsIMutableArray.h"
@@ -65,12 +66,29 @@
#include "nsTextFormatter.h"
#include "nsIView.h"
#include "nsIViewManager.h"
-#include "nsRoleMap.h"
#include "nsEventMap.h"
#include "nsArrayUtils.h"
+#include "OLEACC.H"
+
+using namespace mozilla;
using namespace mozilla::a11y;
+const PRUint32 USE_ROLE_STRING = 0;
+
+#ifndef ROLE_SYSTEM_SPLITBUTTON
+const PRUint32 ROLE_SYSTEM_SPLITBUTTON = 0x3e; // Not defined in all oleacc.h versions
+#endif
+
+#ifndef ROLE_SYSTEM_IPADDRESS
+const PRUint32 ROLE_SYSTEM_IPADDRESS = 0x3f; // Not defined in all oleacc.h versions
+#endif
+
+#ifndef ROLE_SYSTEM_OUTLINEBUTTON
+const PRUint32 ROLE_SYSTEM_OUTLINEBUTTON = 0x40; // Not defined in all oleacc.h versions
+#endif
+
+
/* For documentation of the accessibility architecture,
* see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html
*/
@@ -374,15 +392,26 @@ __try {
"Does not support nsIAccessibleText when it should");
#endif
- roles::Role role = xpAccessible->Role();
- PRUint32 msaaRole = gWindowsRoleMap[role].msaaRole;
- NS_ASSERTION(gWindowsRoleMap[roles::LAST_ENTRY].msaaRole == ROLE_WINDOWS_LAST_ENTRY,
- "MSAA role map skewed");
+ a11y::role geckoRole = xpAccessible->Role();
+ PRUint32 msaaRole = 0;
+
+#define ROLE(_geckoRole, stringRole, atkRole, macRole, _msaaRole, ia2Role) \
+ case roles::_geckoRole: \
+ msaaRole = _msaaRole; \
+ break;
+
+ switch (geckoRole) {
+#include "RoleMap.h"
+ default:
+ MOZ_NOT_REACHED("Unknown role.");
+ };
+
+#undef ROLE
// Special case, if there is a ROLE_ROW inside of a ROLE_TREE_TABLE, then call the MSAA role
// a ROLE_OUTLINEITEM for consistency and compatibility.
// We need this because ARIA has a role of "row" for both grid and treegrid
- if (role == roles::ROW) {
+ if (geckoRole == roles::ROW) {
nsAccessible* xpParent = Parent();
if (xpParent && xpParent->Role() == roles::TREE_TABLE)
msaaRole = ROLE_SYSTEM_OUTLINEITEM;
@@ -1202,15 +1231,23 @@ __try {
if (IsDefunct())
return CO_E_OBJNOTCONNECTED;
- NS_ASSERTION(gWindowsRoleMap[roles::LAST_ENTRY].ia2Role == ROLE_WINDOWS_LAST_ENTRY,
- "MSAA role map skewed");
+#define ROLE(_geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role) \
+ case roles::_geckoRole: \
+ *aRole = ia2Role; \
+ break;
- roles::Role role = Role();
- *aRole = gWindowsRoleMap[role].ia2Role;
+ a11y::role geckoRole = Role();
+ switch (geckoRole) {
+#include "RoleMap.h"
+ default:
+ MOZ_NOT_REACHED("Unknown role.");
+ };
+
+#undef ROLE
// Special case, if there is a ROLE_ROW inside of a ROLE_TREE_TABLE, then call
// the IA2 role a ROLE_OUTLINEITEM.
- if (role == roles::ROW) {
+ if (geckoRole == roles::ROW) {
nsAccessible* xpParent = Parent();
if (xpParent && xpParent->Role() == roles::TREE_TABLE)
*aRole = ROLE_SYSTEM_OUTLINEITEM;
diff --git a/accessible/src/msaa/nsRoleMap.h b/accessible/src/msaa/nsRoleMap.h
deleted file mode 100644
index f6ee3b737851..000000000000
--- a/accessible/src/msaa/nsRoleMap.h
+++ /dev/null
@@ -1,467 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:expandtab:shiftwidth=2:tabstop=2:
- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is IBM Corporation
- * Portions created by the Initial Developer are Copyright (C) 2006
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Gao, Ming
- * Aaron Leventhal
- * Alexander Surkov
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include "OLEACC.H"
-#include "AccessibleRole.h"
-
-const PRUint32 USE_ROLE_STRING = 0;
-const PRUint32 ROLE_WINDOWS_LAST_ENTRY = 0xffffffff;
-
-#ifndef ROLE_SYSTEM_SPLITBUTTON
-const PRUint32 ROLE_SYSTEM_SPLITBUTTON = 0x3e; // Not defined in all oleacc.h versions
-#endif
-
-#ifndef ROLE_SYSTEM_IPADDRESS
-const PRUint32 ROLE_SYSTEM_IPADDRESS = 0x3f; // Not defined in all oleacc.h versions
-#endif
-
-#ifndef ROLE_SYSTEM_OUTLINEBUTTON
-const PRUint32 ROLE_SYSTEM_OUTLINEBUTTON = 0x40; // Not defined in all oleacc.h versions
-#endif
-
-struct WindowsRoleMapItem
-{
- PRUint32 msaaRole;
- long ia2Role;
-};
-
-// Map array from cross platform roles to MSAA/IA2 roles
-static const WindowsRoleMapItem gWindowsRoleMap[] = {
- // roles::NOTHING
- { USE_ROLE_STRING, IA2_ROLE_UNKNOWN },
-
- // roles::TITLEBAR
- { ROLE_SYSTEM_TITLEBAR, ROLE_SYSTEM_TITLEBAR },
-
- // roles::MENUBAR
- { ROLE_SYSTEM_MENUBAR, ROLE_SYSTEM_MENUBAR },
-
- // roles::SCROLLBAR
- { ROLE_SYSTEM_SCROLLBAR, ROLE_SYSTEM_SCROLLBAR },
-
- // roles::GRIP
- { ROLE_SYSTEM_GRIP, ROLE_SYSTEM_GRIP },
-
- // roles::SOUND
- { ROLE_SYSTEM_SOUND, ROLE_SYSTEM_SOUND },
-
- // roles::CURSOR
- { ROLE_SYSTEM_CURSOR, ROLE_SYSTEM_CURSOR },
-
- // roles::CARET
- { ROLE_SYSTEM_CARET, ROLE_SYSTEM_CARET },
-
- // roles::ALERT
- { ROLE_SYSTEM_ALERT, ROLE_SYSTEM_ALERT },
-
- // roles::WINDOW
- { ROLE_SYSTEM_WINDOW, ROLE_SYSTEM_WINDOW },
-
- // roles::INTERNAL_FRAME
- { USE_ROLE_STRING, IA2_ROLE_INTERNAL_FRAME},
-
- // roles::MENUPOPUP
- { ROLE_SYSTEM_MENUPOPUP, ROLE_SYSTEM_MENUPOPUP },
-
- // roles::MENUITEM
- { ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_MENUITEM },
-
- // roles::TOOLTIP
- { ROLE_SYSTEM_TOOLTIP, ROLE_SYSTEM_TOOLTIP },
-
- // roles::APPLICATION
- { ROLE_SYSTEM_APPLICATION, ROLE_SYSTEM_APPLICATION },
-
- // roles::DOCUMENT
- { ROLE_SYSTEM_DOCUMENT, ROLE_SYSTEM_DOCUMENT },
-
- // roles::PANE
- // We used to map to ROLE_SYSTEM_PANE, but JAWS would
- // not read the accessible name for the contaning pane.
- // However, JAWS will read the accessible name for a groupbox.
- // By mapping a PANE to a GROUPING, we get no undesirable effects,
- // but fortunately JAWS will then read the group's label,
- // when an inner control gets focused.
- { ROLE_SYSTEM_GROUPING , ROLE_SYSTEM_GROUPING },
-
- // roles::CHART
- { ROLE_SYSTEM_CHART, ROLE_SYSTEM_CHART },
-
- // roles::DIALOG
- { ROLE_SYSTEM_DIALOG, ROLE_SYSTEM_DIALOG },
-
- // roles::BORDER
- { ROLE_SYSTEM_BORDER, ROLE_SYSTEM_BORDER },
-
- // roles::GROUPING
- { ROLE_SYSTEM_GROUPING, ROLE_SYSTEM_GROUPING },
-
- // roles::SEPARATOR
- { ROLE_SYSTEM_SEPARATOR, ROLE_SYSTEM_SEPARATOR },
-
- // roles::TOOLBAR
- { ROLE_SYSTEM_TOOLBAR, ROLE_SYSTEM_TOOLBAR },
-
- // roles::STATUSBAR
- { ROLE_SYSTEM_STATUSBAR, ROLE_SYSTEM_STATUSBAR },
-
- // roles::TABLE
- { ROLE_SYSTEM_TABLE, ROLE_SYSTEM_TABLE },
-
- // roles::COLUMNHEADER,
- { ROLE_SYSTEM_COLUMNHEADER, ROLE_SYSTEM_COLUMNHEADER },
-
- // roles::ROWHEADER
- { ROLE_SYSTEM_ROWHEADER, ROLE_SYSTEM_ROWHEADER },
-
- // roles::COLUMN
- { ROLE_SYSTEM_COLUMN, ROLE_SYSTEM_COLUMN },
-
- // roles::ROW
- { ROLE_SYSTEM_ROW, ROLE_SYSTEM_ROW },
-
- // roles::CELL
- { ROLE_SYSTEM_CELL, ROLE_SYSTEM_CELL },
-
- // roles::LINK
- { ROLE_SYSTEM_LINK, ROLE_SYSTEM_LINK },
-
- // roles::HELPBALLOON
- { ROLE_SYSTEM_HELPBALLOON, ROLE_SYSTEM_HELPBALLOON },
-
- // roles::CHARACTER
- { ROLE_SYSTEM_CHARACTER, ROLE_SYSTEM_CHARACTER },
-
- // roles::LIST
- { ROLE_SYSTEM_LIST, ROLE_SYSTEM_LIST },
-
- // roles::LISTITEM
- { ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_LISTITEM },
-
- // roles::OUTLINE
- { ROLE_SYSTEM_OUTLINE, ROLE_SYSTEM_OUTLINE },
-
- // roles::OUTLINEITEM
- { ROLE_SYSTEM_OUTLINEITEM, ROLE_SYSTEM_OUTLINEITEM },
-
- // roles::PAGETAB
- { ROLE_SYSTEM_PAGETAB, ROLE_SYSTEM_PAGETAB },
-
- // roles::PROPERTYPAGE
- { ROLE_SYSTEM_PROPERTYPAGE, ROLE_SYSTEM_PROPERTYPAGE },
-
- // roles::INDICATOR
- { ROLE_SYSTEM_INDICATOR, ROLE_SYSTEM_INDICATOR },
-
- // roles::GRAPHIC
- { ROLE_SYSTEM_GRAPHIC, ROLE_SYSTEM_GRAPHIC },
-
- // roles::STATICTEXT
- { ROLE_SYSTEM_STATICTEXT, ROLE_SYSTEM_STATICTEXT },
-
- // roles::TEXT_LEAF
- { ROLE_SYSTEM_TEXT, ROLE_SYSTEM_TEXT },
-
- // roles::PUSHBUTTON
- { ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_PUSHBUTTON },
-
- // roles::CHECKBUTTON
- { ROLE_SYSTEM_CHECKBUTTON, ROLE_SYSTEM_CHECKBUTTON },
-
- // roles::RADIOBUTTON
- { ROLE_SYSTEM_RADIOBUTTON, ROLE_SYSTEM_RADIOBUTTON },
-
- // roles::COMBOBOX
- { ROLE_SYSTEM_COMBOBOX, ROLE_SYSTEM_COMBOBOX },
-
- // roles::DROPLIST
- { ROLE_SYSTEM_DROPLIST, ROLE_SYSTEM_DROPLIST },
-
- // roles::PROGRESSBAR
- { ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_PROGRESSBAR },
-
- // roles::DIAL
- { ROLE_SYSTEM_DIAL, ROLE_SYSTEM_DIAL },
-
- // roles::HOTKEYFIELD
- { ROLE_SYSTEM_HOTKEYFIELD, ROLE_SYSTEM_HOTKEYFIELD },
-
- // roles::SLIDER
- { ROLE_SYSTEM_SLIDER, ROLE_SYSTEM_SLIDER },
-
- // roles::SPINBUTTON
- { ROLE_SYSTEM_SPINBUTTON, ROLE_SYSTEM_SPINBUTTON },
-
- // roles::DIAGRAM
- { ROLE_SYSTEM_DIAGRAM, ROLE_SYSTEM_DIAGRAM },
-
- // roles::ANIMATION
- { ROLE_SYSTEM_ANIMATION, ROLE_SYSTEM_ANIMATION },
-
- // roles::EQUATION
- { ROLE_SYSTEM_EQUATION, ROLE_SYSTEM_EQUATION },
-
- // roles::BUTTONDROPDOWN
- { ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_BUTTONDROPDOWN },
-
- // roles::BUTTONMENU
- { ROLE_SYSTEM_BUTTONMENU, ROLE_SYSTEM_BUTTONMENU },
-
- // roles::BUTTONDROPDOWNGRID
- { ROLE_SYSTEM_BUTTONDROPDOWNGRID, ROLE_SYSTEM_BUTTONDROPDOWNGRID },
-
- // roles::WHITESPACE
- { ROLE_SYSTEM_WHITESPACE, ROLE_SYSTEM_WHITESPACE },
-
- // roles::PAGETABLIST
- { ROLE_SYSTEM_PAGETABLIST, ROLE_SYSTEM_PAGETABLIST },
-
- // roles::CLOCK
- { ROLE_SYSTEM_CLOCK, ROLE_SYSTEM_CLOCK },
-
- // roles::SPLITBUTTON
- { ROLE_SYSTEM_SPLITBUTTON, ROLE_SYSTEM_SPLITBUTTON },
-
- // roles::IPADDRESS
- { ROLE_SYSTEM_IPADDRESS, ROLE_SYSTEM_IPADDRESS },
-
- // Make up for Gecko roles that we don't have in MSAA or IA2. When in doubt
- // map them to USE_ROLE_STRING (IA2_ROLE_UNKNOWN).
-
- // roles::ACCEL_LABEL
- { ROLE_SYSTEM_STATICTEXT, ROLE_SYSTEM_STATICTEXT },
-
- // roles::ARROW
- { ROLE_SYSTEM_INDICATOR, ROLE_SYSTEM_INDICATOR },
-
- // roles::CANVAS
- { USE_ROLE_STRING, IA2_ROLE_CANVAS },
-
- // roles::CHECK_MENU_ITEM
- { ROLE_SYSTEM_MENUITEM, IA2_ROLE_CHECK_MENU_ITEM },
-
- // roles::COLOR_CHOOSER
- { ROLE_SYSTEM_DIALOG, IA2_ROLE_COLOR_CHOOSER },
-
- // roles::DATE_EDITOR
- { USE_ROLE_STRING, IA2_ROLE_DATE_EDITOR },
-
- // roles::DESKTOP_ICON
- { USE_ROLE_STRING, IA2_ROLE_DESKTOP_ICON },
-
- // roles::DESKTOP_FRAME
- { USE_ROLE_STRING, IA2_ROLE_DESKTOP_PANE },
-
- // roles::DIRECTORY_PANE
- { USE_ROLE_STRING, IA2_ROLE_DIRECTORY_PANE },
-
- // roles::FILE_CHOOSER
- { USE_ROLE_STRING, IA2_ROLE_FILE_CHOOSER },
-
- // roles::FONT_CHOOSER
- { USE_ROLE_STRING, IA2_ROLE_FONT_CHOOSER },
-
- // roles::CHROME_WINDOW
- { ROLE_SYSTEM_APPLICATION, IA2_ROLE_FRAME },
-
- // roles::GLASS_PANE
- { USE_ROLE_STRING, IA2_ROLE_GLASS_PANE },
-
- // roles::HTML_CONTAINER
- { USE_ROLE_STRING, IA2_ROLE_UNKNOWN },
-
- // roles::ICON
- { ROLE_SYSTEM_PUSHBUTTON, IA2_ROLE_ICON },
-
- // roles::LABEL
- { ROLE_SYSTEM_STATICTEXT, IA2_ROLE_LABEL },
-
- // roles::LAYERED_PANE
- { USE_ROLE_STRING, IA2_ROLE_LAYERED_PANE },
-
- // roles::OPTION_PANE
- { USE_ROLE_STRING, IA2_ROLE_OPTION_PANE },
-
- // roles::PASSWORD_TEXT
- { ROLE_SYSTEM_TEXT, ROLE_SYSTEM_TEXT },
-
- // roles::POPUP_MENU
- { ROLE_SYSTEM_MENUPOPUP, ROLE_SYSTEM_MENUPOPUP },
-
- // roles::RADIO_MENU_ITEM
- { ROLE_SYSTEM_MENUITEM, IA2_ROLE_RADIO_MENU_ITEM },
-
- // roles::ROOT_PANE
- { USE_ROLE_STRING, IA2_ROLE_ROOT_PANE },
-
- // roles::SCROLL_PANE
- { USE_ROLE_STRING, IA2_ROLE_SCROLL_PANE },
-
- // roles::SPLIT_PANE
- { USE_ROLE_STRING, IA2_ROLE_SPLIT_PANE },
-
- // roles::TABLE_COLUMN_HEADER
- { ROLE_SYSTEM_COLUMNHEADER, ROLE_SYSTEM_COLUMNHEADER },
-
- // roles::TABLE_ROW_HEADER
- { ROLE_SYSTEM_ROWHEADER, ROLE_SYSTEM_ROWHEADER },
-
- // roles::TEAR_OFF_MENU_ITEM
- { ROLE_SYSTEM_MENUITEM, IA2_ROLE_TEAR_OFF_MENU },
-
- // roles::TERMINAL
- { USE_ROLE_STRING, IA2_ROLE_TERMINAL },
-
- // roles::TEXT_CONTAINER
- { USE_ROLE_STRING, IA2_ROLE_TEXT_FRAME },
-
- // roles::TOGGLE_BUTTON
- { ROLE_SYSTEM_PUSHBUTTON, IA2_ROLE_TOGGLE_BUTTON },
-
- // roles::TREE_TABLE
- { ROLE_SYSTEM_OUTLINE, ROLE_SYSTEM_OUTLINE },
-
- // roles::VIEWPORT
- { ROLE_SYSTEM_PANE, IA2_ROLE_VIEW_PORT },
-
- // roles::HEADER
- { USE_ROLE_STRING, IA2_ROLE_HEADER },
-
- // roles::FOOTER
- { USE_ROLE_STRING, IA2_ROLE_FOOTER },
-
- // roles::PARAGRAPH
- { USE_ROLE_STRING, IA2_ROLE_PARAGRAPH },
-
- // roles::RULER
- { USE_ROLE_STRING, IA2_ROLE_RULER },
-
- // roles::AUTOCOMPLETE
- { ROLE_SYSTEM_COMBOBOX, ROLE_SYSTEM_COMBOBOX },
-
- // roles::EDITBAR
- { ROLE_SYSTEM_TEXT, IA2_ROLE_EDITBAR },
-
- // roles::ENTRY
- { ROLE_SYSTEM_TEXT, ROLE_SYSTEM_TEXT },
-
- // roles::CAPTION
- { USE_ROLE_STRING, IA2_ROLE_CAPTION },
-
- // roles::DOCUMENT_FRAME
- { USE_ROLE_STRING, IA2_ROLE_UNKNOWN },
-
- // roles::HEADING
- { USE_ROLE_STRING, IA2_ROLE_HEADING },
-
- // roles::PAGE
- { USE_ROLE_STRING, IA2_ROLE_PAGE },
-
- // roles::SECTION
- { USE_ROLE_STRING, IA2_ROLE_SECTION },
-
- // roles::REDUNDANT_OBJECT
- { USE_ROLE_STRING, IA2_ROLE_REDUNDANT_OBJECT },
-
- // roles::FORM
- { USE_ROLE_STRING, IA2_ROLE_FORM },
-
- // roles::IME
- { USE_ROLE_STRING, IA2_ROLE_INPUT_METHOD_WINDOW },
-
- // roles::APP_ROOT
- { ROLE_SYSTEM_APPLICATION, ROLE_SYSTEM_APPLICATION },
-
- // roles::PARENT_MENUITEM
- { ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_MENUITEM },
-
- // roles::CALENDAR
- { ROLE_SYSTEM_CLIENT, ROLE_SYSTEM_CLIENT },
-
- // roles::COMBOBOX_LIST
- { ROLE_SYSTEM_LIST, ROLE_SYSTEM_LIST },
-
- // roles::COMBOBOX_OPTION
- { ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_LISTITEM },
-
- // roles::IMAGE_MAP
- { ROLE_SYSTEM_GRAPHIC, ROLE_SYSTEM_GRAPHIC },
-
- // roles::OPTION
- { ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_LISTITEM },
-
- // roles::RICH_OPTION
- { ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_LISTITEM },
-
- // roles::LISTBOX
- { ROLE_SYSTEM_LIST, ROLE_SYSTEM_LIST },
-
- // roles::FLAT_EQUATION
- { ROLE_SYSTEM_EQUATION, ROLE_SYSTEM_EQUATION },
-
- // roles::GRID_CELL
- { ROLE_SYSTEM_CELL, ROLE_SYSTEM_CELL },
-
- // roles::EMBEDDED_OBJECT
- { USE_ROLE_STRING, IA2_ROLE_EMBEDDED_OBJECT },
-
- // roles::NOTE
- { USE_ROLE_STRING, IA2_ROLE_NOTE },
-
- // roles::FIGURE
- { ROLE_SYSTEM_GROUPING, ROLE_SYSTEM_GROUPING },
-
- // roles::CHECK_RICH_OPTION
- { ROLE_SYSTEM_CHECKBUTTON, ROLE_SYSTEM_CHECKBUTTON },
-
- // roles::DEFINITION_LIST
- { ROLE_SYSTEM_LIST, ROLE_SYSTEM_LIST },
-
- // roles::TERM
- { ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_LISTITEM },
-
- // roles::DEFINITION
- { USE_ROLE_STRING, IA2_ROLE_PARAGRAPH },
-
- // roles::LAST_ENTRY
- { ROLE_WINDOWS_LAST_ENTRY, ROLE_WINDOWS_LAST_ENTRY }
-};
-
diff --git a/accessible/src/msaa/nsRootAccessibleWrap.cpp b/accessible/src/msaa/nsRootAccessibleWrap.cpp
index 0910470ba5cf..d362059c8ce5 100644
--- a/accessible/src/msaa/nsRootAccessibleWrap.cpp
+++ b/accessible/src/msaa/nsRootAccessibleWrap.cpp
@@ -20,7 +20,7 @@
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
- * Alexander Surkov (origianl author)
+ * Alexander Surkov (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),