Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(514)

Unified Diff: content/browser/accessibility/browser_accessibility_cocoa.mm

Issue 8493016: content: Remove 16 exit time destructors and 15 static initializers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: mac compile Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/browser/browser_thread_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/accessibility/browser_accessibility_cocoa.mm
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index 86a6934b9c72bb523a97244f5b31f958b105a748..fe0c5aac460ef0ba9fa15d269adc49a30620bf10 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -8,6 +8,7 @@
#include <map>
+#include "base/basictypes.h"
#include "base/string16.h"
#include "base/sys_string_conversions.h"
#include "base/utf_string_conversions.h"
@@ -43,139 +44,14 @@ struct MapEntry {
NSString* nativeValue;
};
+typedef std::map<WebAccessibility::Role, NSString*> RoleMap;
+
struct AttributeToMethodNameEntry {
NSString* attribute;
NSString* methodName;
};
-static const MapEntry roles[] = {
- { WebAccessibility::ROLE_ALERT, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_ALERT_DIALOG, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_ANNOTATION, NSAccessibilityUnknownRole },
- { WebAccessibility::ROLE_APPLICATION, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_ARTICLE, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_BROWSER, NSAccessibilityBrowserRole },
- { WebAccessibility::ROLE_BUSY_INDICATOR, NSAccessibilityBusyIndicatorRole },
- { WebAccessibility::ROLE_BUTTON, NSAccessibilityButtonRole },
- { WebAccessibility::ROLE_CELL, @"AXCell" },
- { WebAccessibility::ROLE_CHECKBOX, NSAccessibilityCheckBoxRole },
- { WebAccessibility::ROLE_COLOR_WELL, NSAccessibilityColorWellRole },
- { WebAccessibility::ROLE_COLUMN, NSAccessibilityColumnRole },
- { WebAccessibility::ROLE_COLUMN_HEADER, @"AXCell" },
- { WebAccessibility::ROLE_DEFINITION_LIST_DEFINITION,
- NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_DEFINITION_LIST_TERM, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_DIALOG, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_DIRECTORY, NSAccessibilityListRole },
- { WebAccessibility::ROLE_DISCLOSURE_TRIANGLE,
- NSAccessibilityDisclosureTriangleRole },
- { WebAccessibility::ROLE_DOCUMENT, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_DRAWER, NSAccessibilityDrawerRole },
- { WebAccessibility::ROLE_EDITABLE_TEXT, NSAccessibilityTextFieldRole },
- { WebAccessibility::ROLE_GRID, NSAccessibilityGridRole },
- { WebAccessibility::ROLE_GROUP, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_GROW_AREA, NSAccessibilityGrowAreaRole },
- { WebAccessibility::ROLE_HEADING, @"AXHeading" },
- { WebAccessibility::ROLE_HELP_TAG, NSAccessibilityHelpTagRole },
- { WebAccessibility::ROLE_IGNORED, NSAccessibilityUnknownRole },
- { WebAccessibility::ROLE_IMAGE, NSAccessibilityImageRole },
- { WebAccessibility::ROLE_IMAGE_MAP, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_IMAGE_MAP_LINK, NSAccessibilityLinkRole },
- { WebAccessibility::ROLE_INCREMENTOR, NSAccessibilityIncrementorRole },
- { WebAccessibility::ROLE_LANDMARK_APPLICATION, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LANDMARK_BANNER, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LANDMARK_COMPLEMENTARY, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LANDMARK_CONTENTINFO, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LANDMARK_MAIN, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LANDMARK_NAVIGATION, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LANDMARK_SEARCH, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LINK, NSAccessibilityLinkRole },
- { WebAccessibility::ROLE_LIST, NSAccessibilityListRole },
- { WebAccessibility::ROLE_LIST_ITEM, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LIST_MARKER, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LISTBOX, NSAccessibilityListRole },
- { WebAccessibility::ROLE_LISTBOX_OPTION, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_LOG, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_MARQUEE, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_MATH, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_MATTE, NSAccessibilityMatteRole },
- { WebAccessibility::ROLE_MENU, NSAccessibilityMenuRole },
- { WebAccessibility::ROLE_MENU_ITEM, NSAccessibilityMenuItemRole },
- { WebAccessibility::ROLE_MENU_BUTTON, NSAccessibilityButtonRole },
- { WebAccessibility::ROLE_MENU_LIST_OPTION, NSAccessibilityMenuItemRole },
- { WebAccessibility::ROLE_MENU_LIST_POPUP, NSAccessibilityUnknownRole },
- { WebAccessibility::ROLE_NOTE, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_OUTLINE, NSAccessibilityOutlineRole },
- { WebAccessibility::ROLE_POPUP_BUTTON, NSAccessibilityPopUpButtonRole },
- { WebAccessibility::ROLE_PROGRESS_INDICATOR,
- NSAccessibilityProgressIndicatorRole },
- { WebAccessibility::ROLE_RADIO_BUTTON, NSAccessibilityRadioButtonRole },
- { WebAccessibility::ROLE_RADIO_GROUP, NSAccessibilityRadioGroupRole },
- { WebAccessibility::ROLE_REGION, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_ROOT_WEB_AREA, @"AXWebArea" },
- { WebAccessibility::ROLE_ROW, NSAccessibilityRowRole },
- { WebAccessibility::ROLE_ROW_HEADER, @"AXCell" },
- { WebAccessibility::ROLE_RULER, NSAccessibilityRulerRole },
- { WebAccessibility::ROLE_RULER_MARKER, NSAccessibilityRulerMarkerRole },
- // TODO(dtseng): we don't correctly support the attributes for these roles.
- // { WebAccessibility::ROLE_SCROLLAREA, NSAccessibilityScrollAreaRole },
- // { WebAccessibility::ROLE_SCROLLBAR, NSAccessibilityScrollBarRole },
- { WebAccessibility::ROLE_SHEET, NSAccessibilitySheetRole },
- { WebAccessibility::ROLE_SLIDER, NSAccessibilitySliderRole },
- { WebAccessibility::ROLE_SLIDER_THUMB, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_SPLITTER, NSAccessibilitySplitterRole },
- { WebAccessibility::ROLE_SPLIT_GROUP, NSAccessibilitySplitGroupRole },
- { WebAccessibility::ROLE_STATIC_TEXT, NSAccessibilityStaticTextRole },
- { WebAccessibility::ROLE_STATUS, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_SYSTEM_WIDE, NSAccessibilityUnknownRole },
- { WebAccessibility::ROLE_TAB, NSAccessibilityRadioButtonRole },
- { WebAccessibility::ROLE_TAB_LIST, NSAccessibilityTabGroupRole },
- { WebAccessibility::ROLE_TAB_PANEL, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_TABLE, NSAccessibilityTableRole },
- { WebAccessibility::ROLE_TABLE_HEADER_CONTAINER, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_TAB_GROUP, NSAccessibilityTabGroupRole },
- { WebAccessibility::ROLE_TEXTAREA, NSAccessibilityTextAreaRole },
- { WebAccessibility::ROLE_TEXT_FIELD, NSAccessibilityTextFieldRole },
- { WebAccessibility::ROLE_TIMER, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_TOOLBAR, NSAccessibilityToolbarRole },
- { WebAccessibility::ROLE_TOOLTIP, NSAccessibilityGroupRole },
- { WebAccessibility::ROLE_TREE, NSAccessibilityOutlineRole },
- { WebAccessibility::ROLE_TREE_GRID, NSAccessibilityTableRole },
- { WebAccessibility::ROLE_TREE_ITEM, NSAccessibilityRowRole },
- { WebAccessibility::ROLE_VALUE_INDICATOR, NSAccessibilityValueIndicatorRole },
- { WebAccessibility::ROLE_WEBCORE_LINK, NSAccessibilityLinkRole },
- { WebAccessibility::ROLE_WEB_AREA, @"AXWebArea" },
- { WebAccessibility::ROLE_WINDOW, NSAccessibilityUnknownRole },
-};
-
-static const MapEntry subroles[] = {
- { WebAccessibility::ROLE_ALERT, @"AXApplicationAlert" },
- { WebAccessibility::ROLE_ALERT_DIALOG, @"AXApplicationAlertDialog" },
- { WebAccessibility::ROLE_ARTICLE, @"AXDocumentArticle" },
- { WebAccessibility::ROLE_DEFINITION_LIST_DEFINITION, @"AXDefinition" },
- { WebAccessibility::ROLE_DEFINITION_LIST_TERM, @"AXTerm" },
- { WebAccessibility::ROLE_DIALOG, @"AXApplicationDialog" },
- { WebAccessibility::ROLE_DOCUMENT, @"AXDocument" },
- { WebAccessibility::ROLE_LANDMARK_APPLICATION, @"AXLandmarkApplication" },
- { WebAccessibility::ROLE_LANDMARK_BANNER, @"AXLandmarkBanner" },
- { WebAccessibility::ROLE_LANDMARK_COMPLEMENTARY, @"AXLandmarkComplementary" },
- { WebAccessibility::ROLE_LANDMARK_CONTENTINFO, @"AXLandmarkContentInfo" },
- { WebAccessibility::ROLE_LANDMARK_MAIN, @"AXLandmarkMain" },
- { WebAccessibility::ROLE_LANDMARK_NAVIGATION, @"AXLandmarkNavigation" },
- { WebAccessibility::ROLE_LANDMARK_SEARCH, @"AXLandmarkSearch" },
- { WebAccessibility::ROLE_LOG, @"AXApplicationLog" },
- { WebAccessibility::ROLE_MARQUEE, @"AXApplicationMarquee" },
- { WebAccessibility::ROLE_MATH, @"AXDocumentMath" },
- { WebAccessibility::ROLE_NOTE, @"AXDocumentNote" },
- { WebAccessibility::ROLE_REGION, @"AXDocumentRegion" },
- { WebAccessibility::ROLE_STATUS, @"AXApplicationStatus" },
- { WebAccessibility::ROLE_TAB_PANEL, @"AXTabPanel" },
- { WebAccessibility::ROLE_TIMER, @"AXApplicationTimer" },
- { WebAccessibility::ROLE_TOOLTIP, @"AXUserInterfaceTooltip" },
- { WebAccessibility::ROLE_TREE_ITEM, NSAccessibilityOutlineRowSubrole },
-};
-
-static const AttributeToMethodNameEntry attributeToMethodNameContainer[] = {
+const AttributeToMethodNameEntry attributeToMethodNameContainer[] = {
{ NSAccessibilityChildrenAttribute, @"children" },
{ NSAccessibilityColumnsAttribute, @"columns" },
{ NSAccessibilityDescriptionAttribute, @"description" },
@@ -217,10 +93,173 @@ bool GetState(BrowserAccessibility* accessibility, int state) {
return ((accessibility->state() >> state) & 1);
}
+RoleMap BuildRoleMap() {
+ const MapEntry roles[] = {
+ { WebAccessibility::ROLE_ALERT, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_ALERT_DIALOG, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_ANNOTATION, NSAccessibilityUnknownRole },
+ { WebAccessibility::ROLE_APPLICATION, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_ARTICLE, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_BROWSER, NSAccessibilityBrowserRole },
+ { WebAccessibility::ROLE_BUSY_INDICATOR, NSAccessibilityBusyIndicatorRole },
+ { WebAccessibility::ROLE_BUTTON, NSAccessibilityButtonRole },
+ { WebAccessibility::ROLE_CELL, @"AXCell" },
+ { WebAccessibility::ROLE_CHECKBOX, NSAccessibilityCheckBoxRole },
+ { WebAccessibility::ROLE_COLOR_WELL, NSAccessibilityColorWellRole },
+ { WebAccessibility::ROLE_COLUMN, NSAccessibilityColumnRole },
+ { WebAccessibility::ROLE_COLUMN_HEADER, @"AXCell" },
+ { WebAccessibility::ROLE_DEFINITION_LIST_DEFINITION,
+ NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_DEFINITION_LIST_TERM, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_DIALOG, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_DIRECTORY, NSAccessibilityListRole },
+ { WebAccessibility::ROLE_DISCLOSURE_TRIANGLE,
+ NSAccessibilityDisclosureTriangleRole },
+ { WebAccessibility::ROLE_DOCUMENT, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_DRAWER, NSAccessibilityDrawerRole },
+ { WebAccessibility::ROLE_EDITABLE_TEXT, NSAccessibilityTextFieldRole },
+ { WebAccessibility::ROLE_GRID, NSAccessibilityGridRole },
+ { WebAccessibility::ROLE_GROUP, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_GROW_AREA, NSAccessibilityGrowAreaRole },
+ { WebAccessibility::ROLE_HEADING, @"AXHeading" },
+ { WebAccessibility::ROLE_HELP_TAG, NSAccessibilityHelpTagRole },
+ { WebAccessibility::ROLE_IGNORED, NSAccessibilityUnknownRole },
+ { WebAccessibility::ROLE_IMAGE, NSAccessibilityImageRole },
+ { WebAccessibility::ROLE_IMAGE_MAP, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_IMAGE_MAP_LINK, NSAccessibilityLinkRole },
+ { WebAccessibility::ROLE_INCREMENTOR, NSAccessibilityIncrementorRole },
+ { WebAccessibility::ROLE_LANDMARK_APPLICATION, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LANDMARK_BANNER, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LANDMARK_COMPLEMENTARY, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LANDMARK_CONTENTINFO, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LANDMARK_MAIN, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LANDMARK_NAVIGATION, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LANDMARK_SEARCH, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LINK, NSAccessibilityLinkRole },
+ { WebAccessibility::ROLE_LIST, NSAccessibilityListRole },
+ { WebAccessibility::ROLE_LIST_ITEM, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LIST_MARKER, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LISTBOX, NSAccessibilityListRole },
+ { WebAccessibility::ROLE_LISTBOX_OPTION, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_LOG, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_MARQUEE, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_MATH, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_MATTE, NSAccessibilityMatteRole },
+ { WebAccessibility::ROLE_MENU, NSAccessibilityMenuRole },
+ { WebAccessibility::ROLE_MENU_ITEM, NSAccessibilityMenuItemRole },
+ { WebAccessibility::ROLE_MENU_BUTTON, NSAccessibilityButtonRole },
+ { WebAccessibility::ROLE_MENU_LIST_OPTION, NSAccessibilityMenuItemRole },
+ { WebAccessibility::ROLE_MENU_LIST_POPUP, NSAccessibilityUnknownRole },
+ { WebAccessibility::ROLE_NOTE, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_OUTLINE, NSAccessibilityOutlineRole },
+ { WebAccessibility::ROLE_POPUP_BUTTON, NSAccessibilityPopUpButtonRole },
+ { WebAccessibility::ROLE_PROGRESS_INDICATOR,
+ NSAccessibilityProgressIndicatorRole },
+ { WebAccessibility::ROLE_RADIO_BUTTON, NSAccessibilityRadioButtonRole },
+ { WebAccessibility::ROLE_RADIO_GROUP, NSAccessibilityRadioGroupRole },
+ { WebAccessibility::ROLE_REGION, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_ROOT_WEB_AREA, @"AXWebArea" },
+ { WebAccessibility::ROLE_ROW, NSAccessibilityRowRole },
+ { WebAccessibility::ROLE_ROW_HEADER, @"AXCell" },
+ { WebAccessibility::ROLE_RULER, NSAccessibilityRulerRole },
+ { WebAccessibility::ROLE_RULER_MARKER, NSAccessibilityRulerMarkerRole },
+ // TODO(dtseng): we don't correctly support the attributes for these roles.
+ // { WebAccessibility::ROLE_SCROLLAREA, NSAccessibilityScrollAreaRole },
+ // { WebAccessibility::ROLE_SCROLLBAR, NSAccessibilityScrollBarRole },
+ { WebAccessibility::ROLE_SHEET, NSAccessibilitySheetRole },
+ { WebAccessibility::ROLE_SLIDER, NSAccessibilitySliderRole },
+ { WebAccessibility::ROLE_SLIDER_THUMB, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_SPLITTER, NSAccessibilitySplitterRole },
+ { WebAccessibility::ROLE_SPLIT_GROUP, NSAccessibilitySplitGroupRole },
+ { WebAccessibility::ROLE_STATIC_TEXT, NSAccessibilityStaticTextRole },
+ { WebAccessibility::ROLE_STATUS, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_SYSTEM_WIDE, NSAccessibilityUnknownRole },
+ { WebAccessibility::ROLE_TAB, NSAccessibilityRadioButtonRole },
+ { WebAccessibility::ROLE_TAB_LIST, NSAccessibilityTabGroupRole },
+ { WebAccessibility::ROLE_TAB_PANEL, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_TABLE, NSAccessibilityTableRole },
+ { WebAccessibility::ROLE_TABLE_HEADER_CONTAINER, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_TAB_GROUP, NSAccessibilityTabGroupRole },
+ { WebAccessibility::ROLE_TEXTAREA, NSAccessibilityTextAreaRole },
+ { WebAccessibility::ROLE_TEXT_FIELD, NSAccessibilityTextFieldRole },
+ { WebAccessibility::ROLE_TIMER, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_TOOLBAR, NSAccessibilityToolbarRole },
+ { WebAccessibility::ROLE_TOOLTIP, NSAccessibilityGroupRole },
+ { WebAccessibility::ROLE_TREE, NSAccessibilityOutlineRole },
+ { WebAccessibility::ROLE_TREE_GRID, NSAccessibilityTableRole },
+ { WebAccessibility::ROLE_TREE_ITEM, NSAccessibilityRowRole },
+ { WebAccessibility::ROLE_VALUE_INDICATOR,
+ NSAccessibilityValueIndicatorRole },
+ { WebAccessibility::ROLE_WEBCORE_LINK, NSAccessibilityLinkRole },
+ { WebAccessibility::ROLE_WEB_AREA, @"AXWebArea" },
+ { WebAccessibility::ROLE_WINDOW, NSAccessibilityUnknownRole },
+ };
+
+ RoleMap role_map;
+ for (size_t i = 0; i < arraysize(roles); ++i)
+ role_map[roles[i].webKitValue] = roles[i].nativeValue;
+ return role_map;
+}
+
// A mapping of webkit roles to native roles.
-std::map<WebAccessibility::Role, NSString*> webAccessibilityToNativeRole;
+NSString* NativeRoleFromWebAccessibilityRole(
+ const WebAccessibility::Role& role) {
+ CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_role,
+ (BuildRoleMap()));
+ RoleMap::iterator it = web_accessibility_to_native_role.find(role);
+ if (it != web_accessibility_to_native_role.end())
+ return it->second;
+ else
+ return NSAccessibilityUnknownRole;
+}
+
+RoleMap BuildSubroleMap() {
+ const MapEntry subroles[] = {
+ { WebAccessibility::ROLE_ALERT, @"AXApplicationAlert" },
+ { WebAccessibility::ROLE_ALERT_DIALOG, @"AXApplicationAlertDialog" },
+ { WebAccessibility::ROLE_ARTICLE, @"AXDocumentArticle" },
+ { WebAccessibility::ROLE_DEFINITION_LIST_DEFINITION, @"AXDefinition" },
+ { WebAccessibility::ROLE_DEFINITION_LIST_TERM, @"AXTerm" },
+ { WebAccessibility::ROLE_DIALOG, @"AXApplicationDialog" },
+ { WebAccessibility::ROLE_DOCUMENT, @"AXDocument" },
+ { WebAccessibility::ROLE_LANDMARK_APPLICATION, @"AXLandmarkApplication" },
+ { WebAccessibility::ROLE_LANDMARK_BANNER, @"AXLandmarkBanner" },
+ { WebAccessibility::ROLE_LANDMARK_COMPLEMENTARY,
+ @"AXLandmarkComplementary" },
+ { WebAccessibility::ROLE_LANDMARK_CONTENTINFO, @"AXLandmarkContentInfo" },
+ { WebAccessibility::ROLE_LANDMARK_MAIN, @"AXLandmarkMain" },
+ { WebAccessibility::ROLE_LANDMARK_NAVIGATION, @"AXLandmarkNavigation" },
+ { WebAccessibility::ROLE_LANDMARK_SEARCH, @"AXLandmarkSearch" },
+ { WebAccessibility::ROLE_LOG, @"AXApplicationLog" },
+ { WebAccessibility::ROLE_MARQUEE, @"AXApplicationMarquee" },
+ { WebAccessibility::ROLE_MATH, @"AXDocumentMath" },
+ { WebAccessibility::ROLE_NOTE, @"AXDocumentNote" },
+ { WebAccessibility::ROLE_REGION, @"AXDocumentRegion" },
+ { WebAccessibility::ROLE_STATUS, @"AXApplicationStatus" },
+ { WebAccessibility::ROLE_TAB_PANEL, @"AXTabPanel" },
+ { WebAccessibility::ROLE_TIMER, @"AXApplicationTimer" },
+ { WebAccessibility::ROLE_TOOLTIP, @"AXUserInterfaceTooltip" },
+ { WebAccessibility::ROLE_TREE_ITEM, NSAccessibilityOutlineRowSubrole },
+ };
+
+ RoleMap subrole_map;
+ for (size_t i = 0; i < arraysize(subroles); ++i)
+ subrole_map[subroles[i].webKitValue] = subroles[i].nativeValue;
+ return subrole_map;
+}
+
// A mapping of webkit roles to native subroles.
-std::map<WebAccessibility::Role, NSString*> webAccessibilityToNativeSubrole;
+NSString* NativeSubroleFromWebAccessibilityRole(
+ const WebAccessibility::Role& role) {
+ CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_subrole,
+ (BuildSubroleMap()));
+ RoleMap::iterator it = web_accessibility_to_native_subrole.find(role);
+ if (it != web_accessibility_to_native_subrole.end())
+ return it->second;
+ else
+ return nil;
+}
+
// A mapping from an accessibility attribute to its method name.
NSDictionary* attributeToMethodNameMap = nil;
@@ -229,17 +268,6 @@ NSDictionary* attributeToMethodNameMap = nil;
@implementation BrowserAccessibilityCocoa
+ (void)initialize {
- const size_t numRoles = sizeof(roles) / sizeof(roles[0]);
- for (size_t i = 0; i < numRoles; ++i) {
- webAccessibilityToNativeRole[roles[i].webKitValue] = roles[i].nativeValue;
- }
-
- const size_t numSubroles = sizeof(subroles) / sizeof(subroles[0]);
- for (size_t i = 0; i < numSubroles; ++i) {
- webAccessibilityToNativeSubrole[subroles[i].webKitValue] =
- subroles[i].nativeValue;
- }
-
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
const size_t numAttributes = sizeof(attributeToMethodNameContainer) /
sizeof(attributeToMethodNameContainer[0]);
@@ -450,13 +478,7 @@ NSDictionary* attributeToMethodNameMap = nil;
static_cast<WebAccessibility::Role>( browserAccessibility_->role());
// Roles that we only determine at runtime.
- std::map<WebAccessibility::Role, NSString*>::iterator it =
- webAccessibilityToNativeRole.find(browserAccessibilityRole);
-
- if (it != webAccessibilityToNativeRole.end())
- return it->second;
- else
- return NSAccessibilityUnknownRole;
+ return NativeRoleFromWebAccessibilityRole(browserAccessibilityRole);
}
// Returns a string indicating the role description of this object.
@@ -543,12 +565,7 @@ NSDictionary* attributeToMethodNameMap = nil;
}
}
- std::map<WebAccessibility::Role, NSString*>::iterator it =
- webAccessibilityToNativeSubrole.find(browserAccessibilityRole);
- if (it != webAccessibilityToNativeSubrole.end())
- return it->second;
- else
- return nil;
+ return NativeSubroleFromWebAccessibilityRole(browserAccessibilityRole);
}
// Returns all tabs in this subtree.
« no previous file with comments | « no previous file | content/browser/browser_thread_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698