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

Side by Side Diff: content/browser/accessibility/browser_accessibility_cocoa.mm

Issue 23651003: Use Blink accessibility enums in Chromium (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 3 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <execinfo.h> 5 #include <execinfo.h>
6 6
7 #import "content/browser/accessibility/browser_accessibility_cocoa.h" 7 #import "content/browser/accessibility/browser_accessibility_cocoa.h"
8 8
9 #include <map> 9 #include <map>
10 10
(...skipping 22 matching lines...) Expand all
33 33
34 // Returns an autoreleased copy of the AccessibilityNodeData's attribute. 34 // Returns an autoreleased copy of the AccessibilityNodeData's attribute.
35 NSString* NSStringForStringAttribute( 35 NSString* NSStringForStringAttribute(
36 BrowserAccessibility* browserAccessibility, 36 BrowserAccessibility* browserAccessibility,
37 StringAttribute attribute) { 37 StringAttribute attribute) {
38 return base::SysUTF8ToNSString( 38 return base::SysUTF8ToNSString(
39 browserAccessibility->GetStringAttribute(attribute)); 39 browserAccessibility->GetStringAttribute(attribute));
40 } 40 }
41 41
42 struct MapEntry { 42 struct MapEntry {
43 AccessibilityNodeData::Role webKitValue; 43 WebKit::WebAXRole webKitValue;
44 NSString* nativeValue; 44 NSString* nativeValue;
45 }; 45 };
46 46
47 typedef std::map<AccessibilityNodeData::Role, NSString*> RoleMap; 47 typedef std::map<WebKit::WebAXRole, NSString*> RoleMap;
48 48
49 // GetState checks the bitmask used in AccessibilityNodeData to check 49 // GetState checks the bitmask used in AccessibilityNodeData to check
50 // if the given state was set on the accessibility object. 50 // if the given state was set on the accessibility object.
51 bool GetState(BrowserAccessibility* accessibility, int state) { 51 bool GetState(BrowserAccessibility* accessibility, WebKit::WebAXState state) {
52 return ((accessibility->state() >> state) & 1); 52 return ((accessibility->state() >> state) & 1);
53 } 53 }
54 54
55 RoleMap BuildRoleMap() { 55 RoleMap BuildRoleMap() {
56 const MapEntry roles[] = { 56 const MapEntry roles[] = {
57 { AccessibilityNodeData::ROLE_ALERT, NSAccessibilityGroupRole }, 57 { WebKit::WebAXRoleAlert, NSAccessibilityGroupRole },
58 { AccessibilityNodeData::ROLE_ALERT_DIALOG, NSAccessibilityGroupRole }, 58 { WebKit::WebAXRoleAlertDialog, NSAccessibilityGroupRole },
59 { AccessibilityNodeData::ROLE_ANNOTATION, NSAccessibilityUnknownRole }, 59 { WebKit::WebAXRoleAnnotation, NSAccessibilityUnknownRole },
60 { AccessibilityNodeData::ROLE_APPLICATION, NSAccessibilityGroupRole }, 60 { WebKit::WebAXRoleApplication, NSAccessibilityGroupRole },
61 { AccessibilityNodeData::ROLE_ARTICLE, NSAccessibilityGroupRole }, 61 { WebKit::WebAXRoleArticle, NSAccessibilityGroupRole },
62 { AccessibilityNodeData::ROLE_BROWSER, NSAccessibilityBrowserRole }, 62 { WebKit::WebAXRoleBrowser, NSAccessibilityBrowserRole },
63 { AccessibilityNodeData::ROLE_BUSY_INDICATOR, 63 { WebKit::WebAXRoleBusyIndicator, NSAccessibilityBusyIndicatorRole },
64 NSAccessibilityBusyIndicatorRole }, 64 { WebKit::WebAXRoleButton, NSAccessibilityButtonRole },
65 { AccessibilityNodeData::ROLE_BUTTON, NSAccessibilityButtonRole }, 65 { WebKit::WebAXRoleCanvas, NSAccessibilityImageRole },
66 { AccessibilityNodeData::ROLE_CANVAS, NSAccessibilityImageRole }, 66 { WebKit::WebAXRoleCell, @"AXCell" },
67 { AccessibilityNodeData::ROLE_CANVAS_WITH_FALLBACK_CONTENT, 67 { WebKit::WebAXRoleCheckBox, NSAccessibilityCheckBoxRole },
68 NSAccessibilityGroupRole }, 68 { WebKit::WebAXRoleColorWell, NSAccessibilityColorWellRole },
69 { AccessibilityNodeData::ROLE_CELL, @"AXCell" }, 69 { WebKit::WebAXRoleComboBox, NSAccessibilityComboBoxRole },
70 { AccessibilityNodeData::ROLE_CHECKBOX, NSAccessibilityCheckBoxRole }, 70 { WebKit::WebAXRoleColumn, NSAccessibilityColumnRole },
71 { AccessibilityNodeData::ROLE_COLOR_WELL, NSAccessibilityColorWellRole }, 71 { WebKit::WebAXRoleColumnHeader, @"AXCell" },
72 { AccessibilityNodeData::ROLE_COMBO_BOX, NSAccessibilityComboBoxRole }, 72 { WebKit::WebAXRoleDefinition, NSAccessibilityGroupRole },
73 { AccessibilityNodeData::ROLE_COLUMN, NSAccessibilityColumnRole }, 73 { WebKit::WebAXRoleDescriptionListDetail, NSAccessibilityGroupRole },
74 { AccessibilityNodeData::ROLE_COLUMN_HEADER, @"AXCell" }, 74 { WebKit::WebAXRoleDescriptionListTerm, NSAccessibilityGroupRole },
75 { AccessibilityNodeData::ROLE_DEFINITION, NSAccessibilityGroupRole }, 75 { WebKit::WebAXRoleDialog, NSAccessibilityGroupRole },
76 { AccessibilityNodeData::ROLE_DESCRIPTION_LIST_DETAIL, 76 { WebKit::WebAXRoleDirectory, NSAccessibilityListRole },
77 NSAccessibilityGroupRole }, 77 { WebKit::WebAXRoleDisclosureTriangle,
78 { AccessibilityNodeData::ROLE_DESCRIPTION_LIST_TERM, 78 NSAccessibilityDisclosureTriangleRole },
79 NSAccessibilityGroupRole }, 79 { WebKit::WebAXRoleDiv, NSAccessibilityGroupRole },
80 { AccessibilityNodeData::ROLE_DIALOG, NSAccessibilityGroupRole }, 80 { WebKit::WebAXRoleDocument, NSAccessibilityGroupRole },
81 { AccessibilityNodeData::ROLE_DIRECTORY, NSAccessibilityListRole }, 81 { WebKit::WebAXRoleDrawer, NSAccessibilityDrawerRole },
82 { AccessibilityNodeData::ROLE_DISCLOSURE_TRIANGLE, 82 { WebKit::WebAXRoleEditableText, NSAccessibilityTextFieldRole },
83 NSAccessibilityDisclosureTriangleRole }, 83 { WebKit::WebAXRoleFooter, NSAccessibilityGroupRole },
84 { AccessibilityNodeData::ROLE_DIV, NSAccessibilityGroupRole }, 84 { WebKit::WebAXRoleForm, NSAccessibilityGroupRole },
85 { AccessibilityNodeData::ROLE_DOCUMENT, NSAccessibilityGroupRole }, 85 { WebKit::WebAXRoleGrid, NSAccessibilityGridRole },
86 { AccessibilityNodeData::ROLE_DRAWER, NSAccessibilityDrawerRole }, 86 { WebKit::WebAXRoleGroup, NSAccessibilityGroupRole },
87 { AccessibilityNodeData::ROLE_EDITABLE_TEXT, NSAccessibilityTextFieldRole }, 87 { WebKit::WebAXRoleGrowArea, NSAccessibilityGrowAreaRole },
88 { AccessibilityNodeData::ROLE_FOOTER, NSAccessibilityGroupRole }, 88 { WebKit::WebAXRoleHeading, @"AXHeading" },
89 { AccessibilityNodeData::ROLE_FORM, NSAccessibilityGroupRole }, 89 { WebKit::WebAXRoleHelpTag, NSAccessibilityHelpTagRole },
90 { AccessibilityNodeData::ROLE_GRID, NSAccessibilityGridRole }, 90 { WebKit::WebAXRoleHorizontalRule, NSAccessibilityGroupRole },
91 { AccessibilityNodeData::ROLE_GROUP, NSAccessibilityGroupRole }, 91 { WebKit::WebAXRoleIgnored, NSAccessibilityUnknownRole },
92 { AccessibilityNodeData::ROLE_GROW_AREA, NSAccessibilityGrowAreaRole }, 92 { WebKit::WebAXRoleImage, NSAccessibilityImageRole },
93 { AccessibilityNodeData::ROLE_HEADING, @"AXHeading" }, 93 { WebKit::WebAXRoleImageMap, NSAccessibilityGroupRole },
94 { AccessibilityNodeData::ROLE_HELP_TAG, NSAccessibilityHelpTagRole }, 94 { WebKit::WebAXRoleImageMapLink, NSAccessibilityLinkRole },
95 { AccessibilityNodeData::ROLE_HORIZONTAL_RULE, NSAccessibilityGroupRole }, 95 { WebKit::WebAXRoleIncrementor, NSAccessibilityIncrementorRole },
96 { AccessibilityNodeData::ROLE_IGNORED, NSAccessibilityUnknownRole }, 96 { WebKit::WebAXRoleLabel, NSAccessibilityGroupRole },
97 { AccessibilityNodeData::ROLE_IMAGE, NSAccessibilityImageRole }, 97 { WebKit::WebAXRoleApplication, NSAccessibilityGroupRole },
98 { AccessibilityNodeData::ROLE_IMAGE_MAP, NSAccessibilityGroupRole }, 98 { WebKit::WebAXRoleBanner, NSAccessibilityGroupRole },
99 { AccessibilityNodeData::ROLE_IMAGE_MAP_LINK, NSAccessibilityLinkRole }, 99 { WebKit::WebAXRoleComplementary, NSAccessibilityGroupRole },
100 { AccessibilityNodeData::ROLE_INCREMENTOR, NSAccessibilityIncrementorRole }, 100 { WebKit::WebAXRoleContentInfo, NSAccessibilityGroupRole },
101 { AccessibilityNodeData::ROLE_LABEL, NSAccessibilityGroupRole }, 101 { WebKit::WebAXRoleMain, NSAccessibilityGroupRole },
102 { AccessibilityNodeData::ROLE_LANDMARK_APPLICATION, 102 { WebKit::WebAXRoleNavigation, NSAccessibilityGroupRole },
103 NSAccessibilityGroupRole }, 103 { WebKit::WebAXRoleSearch, NSAccessibilityGroupRole },
104 { AccessibilityNodeData::ROLE_LANDMARK_BANNER, NSAccessibilityGroupRole }, 104 { WebKit::WebAXRoleLink, NSAccessibilityLinkRole },
105 { AccessibilityNodeData::ROLE_LANDMARK_COMPLEMENTARY, 105 { WebKit::WebAXRoleList, NSAccessibilityListRole },
106 NSAccessibilityGroupRole }, 106 { WebKit::WebAXRoleListItem, NSAccessibilityGroupRole },
107 { AccessibilityNodeData::ROLE_LANDMARK_CONTENTINFO, 107 { WebKit::WebAXRoleListMarker, @"AXListMarker" },
108 NSAccessibilityGroupRole }, 108 { WebKit::WebAXRoleListBox, NSAccessibilityListRole },
109 { AccessibilityNodeData::ROLE_LANDMARK_MAIN, NSAccessibilityGroupRole }, 109 { WebKit::WebAXRoleListBoxOption, NSAccessibilityStaticTextRole },
110 { AccessibilityNodeData::ROLE_LANDMARK_NAVIGATION, 110 { WebKit::WebAXRoleLog, NSAccessibilityGroupRole },
111 NSAccessibilityGroupRole }, 111 { WebKit::WebAXRoleMarquee, NSAccessibilityGroupRole },
112 { AccessibilityNodeData::ROLE_LANDMARK_SEARCH, NSAccessibilityGroupRole }, 112 { WebKit::WebAXRoleMath, NSAccessibilityGroupRole },
113 { AccessibilityNodeData::ROLE_LINK, NSAccessibilityLinkRole }, 113 { WebKit::WebAXRoleMatte, NSAccessibilityMatteRole },
114 { AccessibilityNodeData::ROLE_LIST, NSAccessibilityListRole }, 114 { WebKit::WebAXRoleMenu, NSAccessibilityMenuRole },
115 { AccessibilityNodeData::ROLE_LIST_ITEM, NSAccessibilityGroupRole }, 115 { WebKit::WebAXRoleMenuBar, NSAccessibilityMenuBarRole },
116 { AccessibilityNodeData::ROLE_LIST_MARKER, @"AXListMarker" }, 116 { WebKit::WebAXRoleMenuItem, NSAccessibilityMenuItemRole },
117 { AccessibilityNodeData::ROLE_LISTBOX, NSAccessibilityListRole }, 117 { WebKit::WebAXRoleMenuButton, NSAccessibilityButtonRole },
118 { AccessibilityNodeData::ROLE_LISTBOX_OPTION, 118 { WebKit::WebAXRoleMenuListOption, NSAccessibilityMenuItemRole },
119 NSAccessibilityStaticTextRole }, 119 { WebKit::WebAXRoleMenuListPopup, NSAccessibilityUnknownRole },
120 { AccessibilityNodeData::ROLE_LOG, NSAccessibilityGroupRole }, 120 { WebKit::WebAXRoleNote, NSAccessibilityGroupRole },
121 { AccessibilityNodeData::ROLE_MARQUEE, NSAccessibilityGroupRole }, 121 { WebKit::WebAXRoleOutline, NSAccessibilityOutlineRole },
122 { AccessibilityNodeData::ROLE_MATH, NSAccessibilityGroupRole }, 122 { WebKit::WebAXRoleParagraph, NSAccessibilityGroupRole },
123 { AccessibilityNodeData::ROLE_MATTE, NSAccessibilityMatteRole }, 123 { WebKit::WebAXRolePopUpButton, NSAccessibilityPopUpButtonRole },
124 { AccessibilityNodeData::ROLE_MENU, NSAccessibilityMenuRole }, 124 { WebKit::WebAXRolePresentational, NSAccessibilityGroupRole },
125 { AccessibilityNodeData::ROLE_MENU_BAR, NSAccessibilityMenuBarRole }, 125 { WebKit::WebAXRoleProgressIndicator,
126 { AccessibilityNodeData::ROLE_MENU_ITEM, NSAccessibilityMenuItemRole }, 126 NSAccessibilityProgressIndicatorRole },
127 { AccessibilityNodeData::ROLE_MENU_BUTTON, NSAccessibilityButtonRole }, 127 { WebKit::WebAXRoleRadioButton, NSAccessibilityRadioButtonRole },
128 { AccessibilityNodeData::ROLE_MENU_LIST_OPTION, 128 { WebKit::WebAXRoleRadioGroup, NSAccessibilityRadioGroupRole },
129 NSAccessibilityMenuItemRole }, 129 { WebKit::WebAXRoleRegion, NSAccessibilityGroupRole },
130 { AccessibilityNodeData::ROLE_MENU_LIST_POPUP, NSAccessibilityUnknownRole }, 130 { WebKit::WebAXRoleRootWebArea, @"AXWebArea" },
131 { AccessibilityNodeData::ROLE_NOTE, NSAccessibilityGroupRole }, 131 { WebKit::WebAXRoleRow, NSAccessibilityRowRole },
132 { AccessibilityNodeData::ROLE_OUTLINE, NSAccessibilityOutlineRole }, 132 { WebKit::WebAXRoleRowHeader, @"AXCell" },
133 { AccessibilityNodeData::ROLE_PARAGRAPH, NSAccessibilityGroupRole }, 133 { WebKit::WebAXRoleRuler, NSAccessibilityRulerRole },
134 { AccessibilityNodeData::ROLE_POPUP_BUTTON, 134 { WebKit::WebAXRoleRulerMarker, NSAccessibilityRulerMarkerRole },
135 NSAccessibilityPopUpButtonRole },
136 { AccessibilityNodeData::ROLE_PRESENTATIONAL, NSAccessibilityGroupRole },
137 { AccessibilityNodeData::ROLE_PROGRESS_INDICATOR,
138 NSAccessibilityProgressIndicatorRole },
139 { AccessibilityNodeData::ROLE_RADIO_BUTTON,
140 NSAccessibilityRadioButtonRole },
141 { AccessibilityNodeData::ROLE_RADIO_GROUP, NSAccessibilityRadioGroupRole },
142 { AccessibilityNodeData::ROLE_REGION, NSAccessibilityGroupRole },
143 { AccessibilityNodeData::ROLE_ROOT_WEB_AREA, @"AXWebArea" },
144 { AccessibilityNodeData::ROLE_ROW, NSAccessibilityRowRole },
145 { AccessibilityNodeData::ROLE_ROW_HEADER, @"AXCell" },
146 { AccessibilityNodeData::ROLE_RULER, NSAccessibilityRulerRole },
147 { AccessibilityNodeData::ROLE_RULER_MARKER,
148 NSAccessibilityRulerMarkerRole },
149 // TODO(dtseng): we don't correctly support the attributes for these roles. 135 // TODO(dtseng): we don't correctly support the attributes for these roles.
150 // { AccessibilityNodeData::ROLE_SCROLLAREA, 136 // { WebKit::WebAXRoleScrollArea, NSAccessibilityScrollAreaRole },
151 // NSAccessibilityScrollAreaRole }, 137 { WebKit::WebAXRoleScrollBar, NSAccessibilityScrollBarRole },
152 { AccessibilityNodeData::ROLE_SCROLLBAR, NSAccessibilityScrollBarRole }, 138 { WebKit::WebAXRoleSheet, NSAccessibilitySheetRole },
153 { AccessibilityNodeData::ROLE_SHEET, NSAccessibilitySheetRole }, 139 { WebKit::WebAXRoleSlider, NSAccessibilitySliderRole },
154 { AccessibilityNodeData::ROLE_SLIDER, NSAccessibilitySliderRole }, 140 { WebKit::WebAXRoleSliderThumb, NSAccessibilityValueIndicatorRole },
155 { AccessibilityNodeData::ROLE_SLIDER_THUMB, 141 { WebKit::WebAXRoleSpinButton, NSAccessibilitySliderRole },
156 NSAccessibilityValueIndicatorRole }, 142 { WebKit::WebAXRoleSplitter, NSAccessibilitySplitterRole },
157 { AccessibilityNodeData::ROLE_SPIN_BUTTON, NSAccessibilitySliderRole }, 143 { WebKit::WebAXRoleSplitGroup, NSAccessibilitySplitGroupRole },
158 { AccessibilityNodeData::ROLE_SPLITTER, NSAccessibilitySplitterRole }, 144 { WebKit::WebAXRoleStaticText, NSAccessibilityStaticTextRole },
159 { AccessibilityNodeData::ROLE_SPLIT_GROUP, NSAccessibilitySplitGroupRole }, 145 { WebKit::WebAXRoleStatus, NSAccessibilityGroupRole },
160 { AccessibilityNodeData::ROLE_STATIC_TEXT, NSAccessibilityStaticTextRole }, 146 { WebKit::WebAXRoleSVGRoot, NSAccessibilityGroupRole },
161 { AccessibilityNodeData::ROLE_STATUS, NSAccessibilityGroupRole }, 147 { WebKit::WebAXRoleSystemWide, NSAccessibilityUnknownRole },
162 { AccessibilityNodeData::ROLE_SVG_ROOT, NSAccessibilityGroupRole }, 148 { WebKit::WebAXRoleTab, NSAccessibilityRadioButtonRole },
163 { AccessibilityNodeData::ROLE_SYSTEM_WIDE, NSAccessibilityUnknownRole }, 149 { WebKit::WebAXRoleTabList, NSAccessibilityTabGroupRole },
164 { AccessibilityNodeData::ROLE_TAB, NSAccessibilityRadioButtonRole }, 150 { WebKit::WebAXRoleTabPanel, NSAccessibilityGroupRole },
165 { AccessibilityNodeData::ROLE_TAB_LIST, NSAccessibilityTabGroupRole }, 151 { WebKit::WebAXRoleTable, NSAccessibilityTableRole },
166 { AccessibilityNodeData::ROLE_TAB_PANEL, NSAccessibilityGroupRole }, 152 { WebKit::WebAXRoleTableHeaderContainer, NSAccessibilityGroupRole },
167 { AccessibilityNodeData::ROLE_TABLE, NSAccessibilityTableRole }, 153 { WebKit::WebAXRoleTextArea, NSAccessibilityTextAreaRole },
168 { AccessibilityNodeData::ROLE_TABLE_HEADER_CONTAINER, 154 { WebKit::WebAXRoleTextField, NSAccessibilityTextFieldRole },
169 NSAccessibilityGroupRole }, 155 { WebKit::WebAXRoleTimer, NSAccessibilityGroupRole },
170 { AccessibilityNodeData::ROLE_TAB_GROUP_UNUSED, 156 { WebKit::WebAXRoleToggleButton, NSAccessibilityButtonRole },
171 NSAccessibilityTabGroupRole }, 157 { WebKit::WebAXRoleToolbar, NSAccessibilityToolbarRole },
172 { AccessibilityNodeData::ROLE_TEXTAREA, NSAccessibilityTextAreaRole }, 158 { WebKit::WebAXRoleUserInterfaceTooltip, NSAccessibilityGroupRole },
173 { AccessibilityNodeData::ROLE_TEXT_FIELD, NSAccessibilityTextFieldRole }, 159 { WebKit::WebAXRoleTree, NSAccessibilityOutlineRole },
174 { AccessibilityNodeData::ROLE_TIMER, NSAccessibilityGroupRole }, 160 { WebKit::WebAXRoleTreeGrid, NSAccessibilityTableRole },
175 { AccessibilityNodeData::ROLE_TOGGLE_BUTTON, NSAccessibilityButtonRole }, 161 { WebKit::WebAXRoleTreeItem, NSAccessibilityRowRole },
176 { AccessibilityNodeData::ROLE_TOOLBAR, NSAccessibilityToolbarRole }, 162 { WebKit::WebAXRoleValueIndicator, NSAccessibilityValueIndicatorRole },
177 { AccessibilityNodeData::ROLE_TOOLTIP, NSAccessibilityGroupRole }, 163 { WebKit::WebAXRoleLink, NSAccessibilityLinkRole },
178 { AccessibilityNodeData::ROLE_TREE, NSAccessibilityOutlineRole }, 164 { WebKit::WebAXRoleWebArea, @"AXWebArea" },
179 { AccessibilityNodeData::ROLE_TREE_GRID, NSAccessibilityTableRole }, 165 { WebKit::WebAXRoleWindow, NSAccessibilityWindowRole },
180 { AccessibilityNodeData::ROLE_TREE_ITEM, NSAccessibilityRowRole },
181 { AccessibilityNodeData::ROLE_VALUE_INDICATOR,
182 NSAccessibilityValueIndicatorRole },
183 { AccessibilityNodeData::ROLE_WEBCORE_LINK, NSAccessibilityLinkRole },
184 { AccessibilityNodeData::ROLE_WEB_AREA, @"AXWebArea" },
185 { AccessibilityNodeData::ROLE_WINDOW, NSAccessibilityWindowRole },
186 }; 166 };
187 167
188 RoleMap role_map; 168 RoleMap role_map;
189 for (size_t i = 0; i < arraysize(roles); ++i) 169 for (size_t i = 0; i < arraysize(roles); ++i)
190 role_map[roles[i].webKitValue] = roles[i].nativeValue; 170 role_map[roles[i].webKitValue] = roles[i].nativeValue;
191 return role_map; 171 return role_map;
192 } 172 }
193 173
194 // A mapping of webkit roles to native roles. 174 // A mapping of webkit roles to native roles.
195 NSString* NativeRoleFromAccessibilityNodeDataRole( 175 NSString* NativeRoleFromAccessibilityNodeDataRole(
196 const AccessibilityNodeData::Role& role) { 176 const WebKit::WebAXRole& role) {
197 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_role, 177 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_role,
198 (BuildRoleMap())); 178 (BuildRoleMap()));
199 RoleMap::iterator it = web_accessibility_to_native_role.find(role); 179 RoleMap::iterator it = web_accessibility_to_native_role.find(role);
200 if (it != web_accessibility_to_native_role.end()) 180 if (it != web_accessibility_to_native_role.end())
201 return it->second; 181 return it->second;
202 else 182 else
203 return NSAccessibilityUnknownRole; 183 return NSAccessibilityUnknownRole;
204 } 184 }
205 185
206 RoleMap BuildSubroleMap() { 186 RoleMap BuildSubroleMap() {
207 const MapEntry subroles[] = { 187 const MapEntry subroles[] = {
208 { AccessibilityNodeData::ROLE_ALERT, @"AXApplicationAlert" }, 188 { WebKit::WebAXRoleAlert, @"AXApplicationAlert" },
209 { AccessibilityNodeData::ROLE_ALERT_DIALOG, @"AXApplicationAlertDialog" }, 189 { WebKit::WebAXRoleAlertDialog, @"AXApplicationAlertDialog" },
210 { AccessibilityNodeData::ROLE_ARTICLE, @"AXDocumentArticle" }, 190 { WebKit::WebAXRoleArticle, @"AXDocumentArticle" },
211 { AccessibilityNodeData::ROLE_DEFINITION, @"AXDefinition" }, 191 { WebKit::WebAXRoleDefinition, @"AXDefinition" },
212 { AccessibilityNodeData::ROLE_DESCRIPTION_LIST_DETAIL, @"AXDescription" }, 192 { WebKit::WebAXRoleDescriptionListDetail, @"AXDescription" },
213 { AccessibilityNodeData::ROLE_DESCRIPTION_LIST_TERM, @"AXTerm" }, 193 { WebKit::WebAXRoleDescriptionListTerm, @"AXTerm" },
214 { AccessibilityNodeData::ROLE_DIALOG, @"AXApplicationDialog" }, 194 { WebKit::WebAXRoleDialog, @"AXApplicationDialog" },
215 { AccessibilityNodeData::ROLE_DOCUMENT, @"AXDocument" }, 195 { WebKit::WebAXRoleDocument, @"AXDocument" },
216 { AccessibilityNodeData::ROLE_FOOTER, @"AXLandmarkContentInfo" }, 196 { WebKit::WebAXRoleFooter, @"AXLandmarkContentInfo" },
217 { AccessibilityNodeData::ROLE_LANDMARK_APPLICATION, 197 { WebKit::WebAXRoleApplication, @"AXLandmarkApplication" },
218 @"AXLandmarkApplication" }, 198 { WebKit::WebAXRoleBanner, @"AXLandmarkBanner" },
219 { AccessibilityNodeData::ROLE_LANDMARK_BANNER, @"AXLandmarkBanner" }, 199 { WebKit::WebAXRoleComplementary, @"AXLandmarkComplementary" },
220 { AccessibilityNodeData::ROLE_LANDMARK_COMPLEMENTARY, 200 { WebKit::WebAXRoleContentInfo, @"AXLandmarkContentInfo" },
221 @"AXLandmarkComplementary" }, 201 { WebKit::WebAXRoleMain, @"AXLandmarkMain" },
222 { AccessibilityNodeData::ROLE_LANDMARK_CONTENTINFO, 202 { WebKit::WebAXRoleNavigation, @"AXLandmarkNavigation" },
223 @"AXLandmarkContentInfo" }, 203 { WebKit::WebAXRoleSearch, @"AXLandmarkSearch" },
224 { AccessibilityNodeData::ROLE_LANDMARK_MAIN, @"AXLandmarkMain" }, 204 { WebKit::WebAXRoleLog, @"AXApplicationLog" },
225 { AccessibilityNodeData::ROLE_LANDMARK_NAVIGATION, 205 { WebKit::WebAXRoleMarquee, @"AXApplicationMarquee" },
226 @"AXLandmarkNavigation" }, 206 { WebKit::WebAXRoleMath, @"AXDocumentMath" },
227 { AccessibilityNodeData::ROLE_LANDMARK_SEARCH, @"AXLandmarkSearch" }, 207 { WebKit::WebAXRoleNote, @"AXDocumentNote" },
228 { AccessibilityNodeData::ROLE_LOG, @"AXApplicationLog" }, 208 { WebKit::WebAXRoleRegion, @"AXDocumentRegion" },
229 { AccessibilityNodeData::ROLE_MARQUEE, @"AXApplicationMarquee" }, 209 { WebKit::WebAXRoleStatus, @"AXApplicationStatus" },
230 { AccessibilityNodeData::ROLE_MATH, @"AXDocumentMath" }, 210 { WebKit::WebAXRoleTabPanel, @"AXTabPanel" },
231 { AccessibilityNodeData::ROLE_NOTE, @"AXDocumentNote" }, 211 { WebKit::WebAXRoleTimer, @"AXApplicationTimer" },
232 { AccessibilityNodeData::ROLE_REGION, @"AXDocumentRegion" }, 212 { WebKit::WebAXRoleUserInterfaceTooltip, @"AXUserInterfaceTooltip" },
233 { AccessibilityNodeData::ROLE_STATUS, @"AXApplicationStatus" }, 213 { WebKit::WebAXRoleTreeItem, NSAccessibilityOutlineRowSubrole },
234 { AccessibilityNodeData::ROLE_TAB_PANEL, @"AXTabPanel" },
235 { AccessibilityNodeData::ROLE_TIMER, @"AXApplicationTimer" },
236 { AccessibilityNodeData::ROLE_TOOLTIP, @"AXUserInterfaceTooltip" },
237 { AccessibilityNodeData::ROLE_TREE_ITEM, NSAccessibilityOutlineRowSubrole },
238 }; 214 };
239 215
240 RoleMap subrole_map; 216 RoleMap subrole_map;
241 for (size_t i = 0; i < arraysize(subroles); ++i) 217 for (size_t i = 0; i < arraysize(subroles); ++i)
242 subrole_map[subroles[i].webKitValue] = subroles[i].nativeValue; 218 subrole_map[subroles[i].webKitValue] = subroles[i].nativeValue;
243 return subrole_map; 219 return subrole_map;
244 } 220 }
245 221
246 // A mapping of webkit roles to native subroles. 222 // A mapping of webkit roles to native subroles.
247 NSString* NativeSubroleFromAccessibilityNodeDataRole( 223 NSString* NativeSubroleFromAccessibilityNodeDataRole(
248 const AccessibilityNodeData::Role& role) { 224 const WebKit::WebAXRole& role) {
249 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_subrole, 225 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_subrole,
250 (BuildSubroleMap())); 226 (BuildSubroleMap()));
251 RoleMap::iterator it = web_accessibility_to_native_subrole.find(role); 227 RoleMap::iterator it = web_accessibility_to_native_subrole.find(role);
252 if (it != web_accessibility_to_native_subrole.end()) 228 if (it != web_accessibility_to_native_subrole.end())
253 return it->second; 229 return it->second;
254 else 230 else
255 return nil; 231 return nil;
256 } 232 }
257 233
258 // A mapping from an accessibility attribute to its method name. 234 // A mapping from an accessibility attribute to its method name.
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 - (void)childrenChanged { 390 - (void)childrenChanged {
415 if (![self isIgnored]) { 391 if (![self isIgnored]) {
416 children_.reset(); 392 children_.reset();
417 } else { 393 } else {
418 [browserAccessibility_->parent()->ToBrowserAccessibilityCocoa() 394 [browserAccessibility_->parent()->ToBrowserAccessibilityCocoa()
419 childrenChanged]; 395 childrenChanged];
420 } 396 }
421 } 397 }
422 398
423 - (NSArray*)columnHeaders { 399 - (NSArray*)columnHeaders {
424 if ([self internalRole] != AccessibilityNodeData::ROLE_TABLE && 400 if ([self internalRole] != WebKit::WebAXRoleTable &&
425 [self internalRole] != AccessibilityNodeData::ROLE_GRID) { 401 [self internalRole] != WebKit::WebAXRoleGrid) {
426 return nil; 402 return nil;
427 } 403 }
428 404
429 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; 405 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease];
430 const std::vector<int32>& uniqueCellIds = 406 const std::vector<int32>& uniqueCellIds =
431 browserAccessibility_->GetIntListAttribute( 407 browserAccessibility_->GetIntListAttribute(
432 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 408 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS);
433 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { 409 for (size_t i = 0; i < uniqueCellIds.size(); ++i) {
434 int id = uniqueCellIds[i]; 410 int id = uniqueCellIds[i];
435 BrowserAccessibility* cell = 411 BrowserAccessibility* cell =
436 browserAccessibility_->manager()->GetFromRendererID(id); 412 browserAccessibility_->manager()->GetFromRendererID(id);
437 if (cell && cell->role() == AccessibilityNodeData::ROLE_COLUMN_HEADER) 413 if (cell && cell->role() == WebKit::WebAXRoleColumnHeader)
438 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; 414 [ret addObject:cell->ToBrowserAccessibilityCocoa()];
439 } 415 }
440 return ret; 416 return ret;
441 } 417 }
442 418
443 - (NSValue*)columnIndexRange { 419 - (NSValue*)columnIndexRange {
444 if ([self internalRole] != AccessibilityNodeData::ROLE_CELL) 420 if ([self internalRole] != WebKit::WebAXRoleCell)
445 return nil; 421 return nil;
446 422
447 int column = -1; 423 int column = -1;
448 int colspan = -1; 424 int colspan = -1;
449 browserAccessibility_->GetIntAttribute( 425 browserAccessibility_->GetIntAttribute(
450 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column); 426 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column);
451 browserAccessibility_->GetIntAttribute( 427 browserAccessibility_->GetIntAttribute(
452 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan); 428 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan);
453 if (column >= 0 && colspan >= 1) 429 if (column >= 0 && colspan >= 1)
454 return [NSValue valueWithRange:NSMakeRange(column, colspan)]; 430 return [NSValue valueWithRange:NSMakeRange(column, colspan)];
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 size_t leftIndex = url.rfind('/'); 468 size_t leftIndex = url.rfind('/');
493 std::string basename = 469 std::string basename =
494 leftIndex != std::string::npos ? url.substr(leftIndex) : url; 470 leftIndex != std::string::npos ? url.substr(leftIndex) : url;
495 return base::SysUTF8ToNSString(basename); 471 return base::SysUTF8ToNSString(basename);
496 } 472 }
497 473
498 return @""; 474 return @"";
499 } 475 }
500 476
501 - (NSNumber*)disclosing { 477 - (NSNumber*)disclosing {
502 if ([self internalRole] == AccessibilityNodeData::ROLE_TREE_ITEM) { 478 if ([self internalRole] == WebKit::WebAXRoleTreeItem) {
503 return [NSNumber numberWithBool: 479 return [NSNumber numberWithBool:
504 GetState(browserAccessibility_, AccessibilityNodeData::STATE_EXPANDED)]; 480 GetState(browserAccessibility_, WebKit::WebAXStateExpanded)];
505 } else { 481 } else {
506 return nil; 482 return nil;
507 } 483 }
508 } 484 }
509 485
510 - (id)disclosedByRow { 486 - (id)disclosedByRow {
511 // The row that contains this row. 487 // The row that contains this row.
512 // It should be the same as the first parent that is a treeitem. 488 // It should be the same as the first parent that is a treeitem.
513 return nil; 489 return nil;
514 } 490 }
515 491
516 - (NSNumber*)disclosureLevel { 492 - (NSNumber*)disclosureLevel {
517 AccessibilityNodeData::Role role = [self internalRole]; 493 WebKit::WebAXRole role = [self internalRole];
518 if (role == AccessibilityNodeData::ROLE_ROW || 494 if (role == WebKit::WebAXRoleRow ||
519 role == AccessibilityNodeData::ROLE_TREE_ITEM) { 495 role == WebKit::WebAXRoleTreeItem) {
520 int level = browserAccessibility_->GetIntAttribute( 496 int level = browserAccessibility_->GetIntAttribute(
521 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL); 497 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL);
522 // Mac disclosureLevel is 0-based, but web levels are 1-based. 498 // Mac disclosureLevel is 0-based, but web levels are 1-based.
523 if (level > 0) 499 if (level > 0)
524 level--; 500 level--;
525 return [NSNumber numberWithInt:level]; 501 return [NSNumber numberWithInt:level];
526 } else { 502 } else {
527 return nil; 503 return nil;
528 } 504 }
529 } 505 }
530 506
531 - (id)disclosedRows { 507 - (id)disclosedRows {
532 // The rows that are considered inside this row. 508 // The rows that are considered inside this row.
533 return nil; 509 return nil;
534 } 510 }
535 511
536 - (NSNumber*)enabled { 512 - (NSNumber*)enabled {
537 return [NSNumber numberWithBool: 513 return [NSNumber numberWithBool:
538 !GetState(browserAccessibility_, 514 GetState(browserAccessibility_, WebKit::WebAXStateEnabled)];
539 AccessibilityNodeData::STATE_UNAVAILABLE)];
540 } 515 }
541 516
542 - (NSNumber*)focused { 517 - (NSNumber*)focused {
543 BrowserAccessibilityManager* manager = browserAccessibility_->manager(); 518 BrowserAccessibilityManager* manager = browserAccessibility_->manager();
544 NSNumber* ret = [NSNumber numberWithBool: 519 NSNumber* ret = [NSNumber numberWithBool:
545 manager->GetFocus(NULL) == browserAccessibility_]; 520 manager->GetFocus(NULL) == browserAccessibility_];
546 return ret; 521 return ret;
547 } 522 }
548 523
549 - (id)header { 524 - (id)header {
550 int headerElementId = -1; 525 int headerElementId = -1;
551 if ([self internalRole] == AccessibilityNodeData::ROLE_TABLE || 526 if ([self internalRole] == WebKit::WebAXRoleTable ||
552 [self internalRole] == AccessibilityNodeData::ROLE_GRID) { 527 [self internalRole] == WebKit::WebAXRoleGrid) {
553 browserAccessibility_->GetIntAttribute( 528 browserAccessibility_->GetIntAttribute(
554 AccessibilityNodeData::ATTR_TABLE_HEADER_ID, &headerElementId); 529 AccessibilityNodeData::ATTR_TABLE_HEADER_ID, &headerElementId);
555 } else if ([self internalRole] == AccessibilityNodeData::ROLE_COLUMN) { 530 } else if ([self internalRole] == WebKit::WebAXRoleColumn) {
556 browserAccessibility_->GetIntAttribute( 531 browserAccessibility_->GetIntAttribute(
557 AccessibilityNodeData::ATTR_TABLE_COLUMN_HEADER_ID, &headerElementId); 532 AccessibilityNodeData::ATTR_TABLE_COLUMN_HEADER_ID, &headerElementId);
558 } else if ([self internalRole] == AccessibilityNodeData::ROLE_ROW) { 533 } else if ([self internalRole] == WebKit::WebAXRoleRow) {
559 browserAccessibility_->GetIntAttribute( 534 browserAccessibility_->GetIntAttribute(
560 AccessibilityNodeData::ATTR_TABLE_ROW_HEADER_ID, &headerElementId); 535 AccessibilityNodeData::ATTR_TABLE_ROW_HEADER_ID, &headerElementId);
561 } 536 }
562 537
563 if (headerElementId > 0) { 538 if (headerElementId > 0) {
564 BrowserAccessibility* headerObject = 539 BrowserAccessibility* headerObject =
565 browserAccessibility_->manager()->GetFromRendererID(headerElementId); 540 browserAccessibility_->manager()->GetFromRendererID(headerElementId);
566 if (headerObject) 541 if (headerObject)
567 return headerObject->ToBrowserAccessibilityCocoa(); 542 return headerObject->ToBrowserAccessibilityCocoa();
568 } 543 }
569 return nil; 544 return nil;
570 } 545 }
571 546
572 - (NSString*)help { 547 - (NSString*)help {
573 return NSStringForStringAttribute( 548 return NSStringForStringAttribute(
574 browserAccessibility_, AccessibilityNodeData::ATTR_HELP); 549 browserAccessibility_, AccessibilityNodeData::ATTR_HELP);
575 } 550 }
576 551
577 - (NSNumber*)index { 552 - (NSNumber*)index {
578 if ([self internalRole] == AccessibilityNodeData::ROLE_COLUMN) { 553 if ([self internalRole] == WebKit::WebAXRoleColumn) {
579 int columnIndex = browserAccessibility_->GetIntAttribute( 554 int columnIndex = browserAccessibility_->GetIntAttribute(
580 AccessibilityNodeData::ATTR_TABLE_COLUMN_INDEX); 555 AccessibilityNodeData::ATTR_TABLE_COLUMN_INDEX);
581 return [NSNumber numberWithInt:columnIndex]; 556 return [NSNumber numberWithInt:columnIndex];
582 } else if ([self internalRole] == AccessibilityNodeData::ROLE_ROW) { 557 } else if ([self internalRole] == WebKit::WebAXRoleRow) {
583 int rowIndex = browserAccessibility_->GetIntAttribute( 558 int rowIndex = browserAccessibility_->GetIntAttribute(
584 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX); 559 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX);
585 return [NSNumber numberWithInt:rowIndex]; 560 return [NSNumber numberWithInt:rowIndex];
586 } 561 }
587 562
588 return nil; 563 return nil;
589 } 564 }
590 565
591 // Returns whether or not this node should be ignored in the 566 // Returns whether or not this node should be ignored in the
592 // accessibility tree. 567 // accessibility tree.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 599
625 - (NSNumber*)minValue { 600 - (NSNumber*)minValue {
626 float floatValue = browserAccessibility_->GetFloatAttribute( 601 float floatValue = browserAccessibility_->GetFloatAttribute(
627 AccessibilityNodeData::ATTR_MIN_VALUE_FOR_RANGE); 602 AccessibilityNodeData::ATTR_MIN_VALUE_FOR_RANGE);
628 return [NSNumber numberWithFloat:floatValue]; 603 return [NSNumber numberWithFloat:floatValue];
629 } 604 }
630 605
631 - (NSString*)orientation { 606 - (NSString*)orientation {
632 // We present a spin button as a vertical slider, with a role description 607 // We present a spin button as a vertical slider, with a role description
633 // of "spin button". 608 // of "spin button".
634 if ([self internalRole] == AccessibilityNodeData::ROLE_SPIN_BUTTON) 609 if ([self internalRole] == WebKit::WebAXRoleSpinButton)
635 return NSAccessibilityVerticalOrientationValue; 610 return NSAccessibilityVerticalOrientationValue;
636 611
637 if (GetState(browserAccessibility_, AccessibilityNodeData::STATE_VERTICAL)) 612 if (GetState(browserAccessibility_, WebKit::WebAXStateVertical))
638 return NSAccessibilityVerticalOrientationValue; 613 return NSAccessibilityVerticalOrientationValue;
639 else 614 else
640 return NSAccessibilityHorizontalOrientationValue; 615 return NSAccessibilityHorizontalOrientationValue;
641 } 616 }
642 617
643 - (NSNumber*)numberOfCharacters { 618 - (NSNumber*)numberOfCharacters {
644 return [NSNumber numberWithInt:browserAccessibility_->value().length()]; 619 return [NSNumber numberWithInt:browserAccessibility_->value().length()];
645 } 620 }
646 621
647 // The origin of this accessibility object in the page's document. 622 // The origin of this accessibility object in the page's document.
(...skipping 17 matching lines...) Expand all
665 return manager->parent_view(); 640 return manager->parent_view();
666 } 641 }
667 } 642 }
668 643
669 - (NSValue*)position { 644 - (NSValue*)position {
670 return [NSValue valueWithPoint:[delegate_ accessibilityPointInScreen:self]]; 645 return [NSValue valueWithPoint:[delegate_ accessibilityPointInScreen:self]];
671 } 646 }
672 647
673 - (NSNumber*)required { 648 - (NSNumber*)required {
674 return [NSNumber numberWithBool: 649 return [NSNumber numberWithBool:
675 GetState(browserAccessibility_, AccessibilityNodeData::STATE_REQUIRED)]; 650 GetState(browserAccessibility_, WebKit::WebAXStateRequired)];
676 } 651 }
677 652
678 // Returns an enum indicating the role from browserAccessibility_. 653 // Returns an enum indicating the role from browserAccessibility_.
679 - (AccessibilityNodeData::Role)internalRole { 654 - (WebKit::WebAXRole)internalRole {
680 return static_cast<AccessibilityNodeData::Role>( 655 return static_cast<WebKit::WebAXRole>(browserAccessibility_->role());
681 browserAccessibility_->role());
682 } 656 }
683 657
684 // Returns a string indicating the NSAccessibility role of this object. 658 // Returns a string indicating the NSAccessibility role of this object.
685 - (NSString*)role { 659 - (NSString*)role {
686 return NativeRoleFromAccessibilityNodeDataRole([self internalRole]); 660 WebKit::WebAXRole role = [self internalRole];
661 if (role == WebKit::WebAXRoleCanvas &&
662 browserAccessibility_->GetBoolAttribute(
663 AccessibilityNodeData::ATTR_CANVAS_HAS_FALLBACK)) {
664 return NSAccessibilityGroupRole;
665 }
666 return NativeRoleFromAccessibilityNodeDataRole(role);
687 } 667 }
688 668
689 // Returns a string indicating the role description of this object. 669 // Returns a string indicating the role description of this object.
690 - (NSString*)roleDescription { 670 - (NSString*)roleDescription {
691 NSString* role = [self role]; 671 NSString* role = [self role];
692 672
693 ContentClient* content_client = content::GetContentClient(); 673 ContentClient* content_client = content::GetContentClient();
694 674
695 // The following descriptions are specific to webkit. 675 // The following descriptions are specific to webkit.
696 if ([role isEqualToString:@"AXWebArea"]) { 676 if ([role isEqualToString:@"AXWebArea"]) {
697 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 677 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
698 IDS_AX_ROLE_WEB_AREA)); 678 IDS_AX_ROLE_WEB_AREA));
699 } 679 }
700 680
701 if ([role isEqualToString:@"NSAccessibilityLinkRole"]) { 681 if ([role isEqualToString:@"NSAccessibilityLinkRole"]) {
702 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 682 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
703 IDS_AX_ROLE_LINK)); 683 IDS_AX_ROLE_LINK));
704 } 684 }
705 685
706 if ([role isEqualToString:@"AXHeading"]) { 686 if ([role isEqualToString:@"AXHeading"]) {
707 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 687 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
708 IDS_AX_ROLE_HEADING)); 688 IDS_AX_ROLE_HEADING));
709 } 689 }
710 690
711 if ([role isEqualToString:NSAccessibilityGroupRole] || 691 if ([role isEqualToString:NSAccessibilityGroupRole] ||
712 [role isEqualToString:NSAccessibilityRadioButtonRole]) { 692 [role isEqualToString:NSAccessibilityRadioButtonRole]) {
713 std::string role; 693 std::string role;
714 if (browserAccessibility_->GetHtmlAttribute("role", &role)) { 694 if (browserAccessibility_->GetHtmlAttribute("role", &role)) {
715 AccessibilityNodeData::Role internalRole = 695 WebKit::WebAXRole internalRole = [self internalRole];
716 [self internalRole]; 696 if ((internalRole != WebKit::WebAXRoleGroup &&
717 if ((internalRole != AccessibilityNodeData::ROLE_GROUP && 697 internalRole != WebKit::WebAXRoleListItem) ||
718 internalRole != AccessibilityNodeData::ROLE_LIST_ITEM) || 698 internalRole == WebKit::WebAXRoleTab) {
719 internalRole == AccessibilityNodeData::ROLE_TAB) {
720 // TODO(dtseng): This is not localized; see crbug/84814. 699 // TODO(dtseng): This is not localized; see crbug/84814.
721 return base::SysUTF8ToNSString(role); 700 return base::SysUTF8ToNSString(role);
722 } 701 }
723 } 702 }
724 } 703 }
725 704
726 switch([self internalRole]) { 705 switch([self internalRole]) {
727 case AccessibilityNodeData::ROLE_FOOTER: 706 case WebKit::WebAXRoleFooter:
728 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 707 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
729 IDS_AX_ROLE_FOOTER)); 708 IDS_AX_ROLE_FOOTER));
730 case AccessibilityNodeData::ROLE_SPIN_BUTTON: 709 case WebKit::WebAXRoleSpinButton:
731 // This control is similar to what VoiceOver calls a "stepper". 710 // This control is similar to what VoiceOver calls a "stepper".
732 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 711 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
733 IDS_AX_ROLE_STEPPER)); 712 IDS_AX_ROLE_STEPPER));
734 default: 713 default:
735 break; 714 break;
736 } 715 }
737 716
738 return NSAccessibilityRoleDescription(role, nil); 717 return NSAccessibilityRoleDescription(role, nil);
739 } 718 }
740 719
741 - (NSArray*)rowHeaders { 720 - (NSArray*)rowHeaders {
742 if ([self internalRole] != AccessibilityNodeData::ROLE_TABLE && 721 if ([self internalRole] != WebKit::WebAXRoleTable &&
743 [self internalRole] != AccessibilityNodeData::ROLE_GRID) { 722 [self internalRole] != WebKit::WebAXRoleGrid) {
744 return nil; 723 return nil;
745 } 724 }
746 725
747 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; 726 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease];
748 const std::vector<int32>& uniqueCellIds = 727 const std::vector<int32>& uniqueCellIds =
749 browserAccessibility_->GetIntListAttribute( 728 browserAccessibility_->GetIntListAttribute(
750 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 729 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS);
751 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { 730 for (size_t i = 0; i < uniqueCellIds.size(); ++i) {
752 int id = uniqueCellIds[i]; 731 int id = uniqueCellIds[i];
753 BrowserAccessibility* cell = 732 BrowserAccessibility* cell =
754 browserAccessibility_->manager()->GetFromRendererID(id); 733 browserAccessibility_->manager()->GetFromRendererID(id);
755 if (cell && cell->role() == AccessibilityNodeData::ROLE_ROW_HEADER) 734 if (cell && cell->role() == WebKit::WebAXRoleRowHeader)
756 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; 735 [ret addObject:cell->ToBrowserAccessibilityCocoa()];
757 } 736 }
758 return ret; 737 return ret;
759 } 738 }
760 739
761 - (NSValue*)rowIndexRange { 740 - (NSValue*)rowIndexRange {
762 if ([self internalRole] != AccessibilityNodeData::ROLE_CELL) 741 if ([self internalRole] != WebKit::WebAXRoleCell)
763 return nil; 742 return nil;
764 743
765 int row = -1; 744 int row = -1;
766 int rowspan = -1; 745 int rowspan = -1;
767 browserAccessibility_->GetIntAttribute( 746 browserAccessibility_->GetIntAttribute(
768 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row); 747 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row);
769 browserAccessibility_->GetIntAttribute( 748 browserAccessibility_->GetIntAttribute(
770 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan); 749 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan);
771 if (row >= 0 && rowspan >= 1) 750 if (row >= 0 && rowspan >= 1)
772 return [NSValue valueWithRange:NSMakeRange(row, rowspan)]; 751 return [NSValue valueWithRange:NSMakeRange(row, rowspan)];
773 return nil; 752 return nil;
774 } 753 }
775 754
776 - (NSArray*)rows { 755 - (NSArray*)rows {
777 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; 756 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease];
778 757
779 if ([self internalRole] == AccessibilityNodeData::ROLE_TABLE|| 758 if ([self internalRole] == WebKit::WebAXRoleTable||
780 [self internalRole] == AccessibilityNodeData::ROLE_GRID) { 759 [self internalRole] == WebKit::WebAXRoleGrid) {
781 for (BrowserAccessibilityCocoa* child in [self children]) { 760 for (BrowserAccessibilityCocoa* child in [self children]) {
782 if ([[child role] isEqualToString:NSAccessibilityRowRole]) 761 if ([[child role] isEqualToString:NSAccessibilityRowRole])
783 [ret addObject:child]; 762 [ret addObject:child];
784 } 763 }
785 } else if ([self internalRole] == AccessibilityNodeData::ROLE_COLUMN) { 764 } else if ([self internalRole] == WebKit::WebAXRoleColumn) {
786 const std::vector<int32>& indirectChildIds = 765 const std::vector<int32>& indirectChildIds =
787 browserAccessibility_->GetIntListAttribute( 766 browserAccessibility_->GetIntListAttribute(
788 AccessibilityNodeData::ATTR_INDIRECT_CHILD_IDS); 767 AccessibilityNodeData::ATTR_INDIRECT_CHILD_IDS);
789 for (uint32 i = 0; i < indirectChildIds.size(); ++i) { 768 for (uint32 i = 0; i < indirectChildIds.size(); ++i) {
790 int id = indirectChildIds[i]; 769 int id = indirectChildIds[i];
791 BrowserAccessibility* rowElement = 770 BrowserAccessibility* rowElement =
792 browserAccessibility_->manager()->GetFromRendererID(id); 771 browserAccessibility_->manager()->GetFromRendererID(id);
793 if (rowElement) 772 if (rowElement)
794 [ret addObject:rowElement->ToBrowserAccessibilityCocoa()]; 773 [ret addObject:rowElement->ToBrowserAccessibilityCocoa()];
795 } 774 }
796 } 775 }
797 776
798 return ret; 777 return ret;
799 } 778 }
800 779
801 // Returns the size of this object. 780 // Returns the size of this object.
802 - (NSValue*)size { 781 - (NSValue*)size {
803 gfx::Rect bounds = browserAccessibility_->GetLocalBoundsRect(); 782 gfx::Rect bounds = browserAccessibility_->GetLocalBoundsRect();
804 return [NSValue valueWithSize:NSMakeSize(bounds.width(), bounds.height())]; 783 return [NSValue valueWithSize:NSMakeSize(bounds.width(), bounds.height())];
805 } 784 }
806 785
807 // Returns a subrole based upon the role. 786 // Returns a subrole based upon the role.
808 - (NSString*) subrole { 787 - (NSString*) subrole {
809 AccessibilityNodeData::Role browserAccessibilityRole = [self internalRole]; 788 WebKit::WebAXRole browserAccessibilityRole = [self internalRole];
810 if (browserAccessibilityRole == AccessibilityNodeData::ROLE_TEXT_FIELD && 789 if (browserAccessibilityRole == WebKit::WebAXRoleTextField &&
811 GetState(browserAccessibility_, AccessibilityNodeData::STATE_PROTECTED)) { 790 GetState(browserAccessibility_, WebKit::WebAXStateProtected)) {
812 return @"AXSecureTextField"; 791 return @"AXSecureTextField";
813 } 792 }
814 793
815 NSString* htmlTag = NSStringForStringAttribute( 794 NSString* htmlTag = NSStringForStringAttribute(
816 browserAccessibility_, AccessibilityNodeData::ATTR_HTML_TAG); 795 browserAccessibility_, AccessibilityNodeData::ATTR_HTML_TAG);
817 796
818 if (browserAccessibilityRole == AccessibilityNodeData::ROLE_LIST) { 797 if (browserAccessibilityRole == WebKit::WebAXRoleList) {
819 if ([htmlTag isEqualToString:@"ul"] || 798 if ([htmlTag isEqualToString:@"ul"] ||
820 [htmlTag isEqualToString:@"ol"]) { 799 [htmlTag isEqualToString:@"ol"]) {
821 return @"AXContentList"; 800 return @"AXContentList";
822 } else if ([htmlTag isEqualToString:@"dl"]) { 801 } else if ([htmlTag isEqualToString:@"dl"]) {
823 return @"AXDescriptionList"; 802 return @"AXDescriptionList";
824 } 803 }
825 } 804 }
826 805
827 return NativeSubroleFromAccessibilityNodeDataRole(browserAccessibilityRole); 806 return NativeSubroleFromAccessibilityNodeDataRole(browserAccessibilityRole);
828 } 807 }
829 808
830 // Returns all tabs in this subtree. 809 // Returns all tabs in this subtree.
831 - (NSArray*)tabs { 810 - (NSArray*)tabs {
832 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease]; 811 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease];
833 812
834 if ([self internalRole] == AccessibilityNodeData::ROLE_TAB) 813 if ([self internalRole] == WebKit::WebAXRoleTab)
835 [tabSubtree addObject:self]; 814 [tabSubtree addObject:self];
836 815
837 for (uint i=0; i < [[self children] count]; ++i) { 816 for (uint i=0; i < [[self children] count]; ++i) {
838 NSArray* tabChildren = [[[self children] objectAtIndex:i] tabs]; 817 NSArray* tabChildren = [[[self children] objectAtIndex:i] tabs];
839 if ([tabChildren count] > 0) 818 if ([tabChildren count] > 0)
840 [tabSubtree addObjectsFromArray:tabChildren]; 819 [tabSubtree addObjectsFromArray:tabChildren];
841 } 820 }
842 821
843 return tabSubtree; 822 return tabSubtree;
844 } 823 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL, &level)) { 858 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL, &level)) {
880 return [NSNumber numberWithInt:level]; 859 return [NSNumber numberWithInt:level];
881 } 860 }
882 } else if ([role isEqualToString:NSAccessibilityButtonRole]) { 861 } else if ([role isEqualToString:NSAccessibilityButtonRole]) {
883 // AXValue does not make sense for pure buttons. 862 // AXValue does not make sense for pure buttons.
884 return @""; 863 return @"";
885 } else if ([role isEqualToString:NSAccessibilityCheckBoxRole] || 864 } else if ([role isEqualToString:NSAccessibilityCheckBoxRole] ||
886 [role isEqualToString:NSAccessibilityRadioButtonRole]) { 865 [role isEqualToString:NSAccessibilityRadioButtonRole]) {
887 int value = 0; 866 int value = 0;
888 value = GetState( 867 value = GetState(
889 browserAccessibility_, AccessibilityNodeData::STATE_CHECKED) ? 1 : 0; 868 browserAccessibility_, WebKit::WebAXStateChecked) ? 1 : 0;
890 value = GetState( 869 value = GetState(
891 browserAccessibility_, AccessibilityNodeData::STATE_SELECTED) ? 870 browserAccessibility_, WebKit::WebAXStateSelected) ?
892 1 : 871 1 :
893 value; 872 value;
894 873
895 if (browserAccessibility_->GetBoolAttribute( 874 if (browserAccessibility_->GetBoolAttribute(
896 AccessibilityNodeData::ATTR_BUTTON_MIXED)) { 875 AccessibilityNodeData::ATTR_BUTTON_MIXED)) {
897 value = 2; 876 value = 2;
898 } 877 }
899 return [NSNumber numberWithInt:value]; 878 return [NSNumber numberWithInt:value];
900 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] || 879 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] ||
901 [role isEqualToString:NSAccessibilitySliderRole] || 880 [role isEqualToString:NSAccessibilitySliderRole] ||
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 - (NSArray*)visibleColumns { 928 - (NSArray*)visibleColumns {
950 return [self columns]; 929 return [self columns];
951 } 930 }
952 931
953 - (NSArray*)visibleRows { 932 - (NSArray*)visibleRows {
954 return [self rows]; 933 return [self rows];
955 } 934 }
956 935
957 - (NSNumber*)visited { 936 - (NSNumber*)visited {
958 return [NSNumber numberWithBool: 937 return [NSNumber numberWithBool:
959 GetState(browserAccessibility_, AccessibilityNodeData::STATE_TRAVERSED)]; 938 GetState(browserAccessibility_, WebKit::WebAXStateVisited)];
960 } 939 }
961 940
962 - (id)window { 941 - (id)window {
963 return [delegate_ window]; 942 return [delegate_ window];
964 } 943 }
965 944
966 - (NSString*)methodNameForAttribute:(NSString*)attribute { 945 - (NSString*)methodNameForAttribute:(NSString*)attribute {
967 return [attributeToMethodNameMap objectForKey:attribute]; 946 return [attributeToMethodNameMap objectForKey:attribute];
968 } 947 }
969 948
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1047 if (line_index < 0 || line_index >= line_count) 1026 if (line_index < 0 || line_index >= line_count)
1048 return nil; 1027 return nil;
1049 int start = line_index > 0 ? line_breaks[line_index - 1] : 0; 1028 int start = line_index > 0 ? line_breaks[line_index - 1] : 0;
1050 int end = line_index < line_count - 1 ? line_breaks[line_index] : len; 1029 int end = line_index < line_count - 1 ? line_breaks[line_index] : len;
1051 return [NSValue valueWithRange: 1030 return [NSValue valueWithRange:
1052 NSMakeRange(start, end - start)]; 1031 NSMakeRange(start, end - start)];
1053 } 1032 }
1054 1033
1055 if ([attribute isEqualToString: 1034 if ([attribute isEqualToString:
1056 NSAccessibilityCellForColumnAndRowParameterizedAttribute]) { 1035 NSAccessibilityCellForColumnAndRowParameterizedAttribute]) {
1057 if ([self internalRole] != AccessibilityNodeData::ROLE_TABLE && 1036 if ([self internalRole] != WebKit::WebAXRoleTable &&
1058 [self internalRole] != AccessibilityNodeData::ROLE_GRID) { 1037 [self internalRole] != WebKit::WebAXRoleGrid) {
1059 return nil; 1038 return nil;
1060 } 1039 }
1061 if (![parameter isKindOfClass:[NSArray self]]) 1040 if (![parameter isKindOfClass:[NSArray self]])
1062 return nil; 1041 return nil;
1063 NSArray* array = parameter; 1042 NSArray* array = parameter;
1064 int column = [[array objectAtIndex:0] intValue]; 1043 int column = [[array objectAtIndex:0] intValue];
1065 int row = [[array objectAtIndex:1] intValue]; 1044 int row = [[array objectAtIndex:1] intValue];
1066 int num_columns = browserAccessibility_->GetIntAttribute( 1045 int num_columns = browserAccessibility_->GetIntAttribute(
1067 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT); 1046 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT);
1068 int num_rows = browserAccessibility_->GetIntAttribute( 1047 int num_rows = browserAccessibility_->GetIntAttribute(
1069 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT); 1048 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT);
1070 if (column < 0 || column >= num_columns || 1049 if (column < 0 || column >= num_columns ||
1071 row < 0 || row >= num_rows) { 1050 row < 0 || row >= num_rows) {
1072 return nil; 1051 return nil;
1073 } 1052 }
1074 for (size_t i = 0; 1053 for (size_t i = 0;
1075 i < browserAccessibility_->child_count(); 1054 i < browserAccessibility_->child_count();
1076 ++i) { 1055 ++i) {
1077 BrowserAccessibility* child = browserAccessibility_->GetChild(i); 1056 BrowserAccessibility* child = browserAccessibility_->GetChild(i);
1078 if (child->role() != AccessibilityNodeData::ROLE_ROW) 1057 if (child->role() != WebKit::WebAXRoleRow)
1079 continue; 1058 continue;
1080 int rowIndex; 1059 int rowIndex;
1081 if (!child->GetIntAttribute( 1060 if (!child->GetIntAttribute(
1082 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX, &rowIndex)) { 1061 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX, &rowIndex)) {
1083 continue; 1062 continue;
1084 } 1063 }
1085 if (rowIndex < row) 1064 if (rowIndex < row)
1086 continue; 1065 continue;
1087 if (rowIndex > row) 1066 if (rowIndex > row)
1088 break; 1067 break;
1089 for (size_t j = 0; 1068 for (size_t j = 0;
1090 j < child->child_count(); 1069 j < child->child_count();
1091 ++j) { 1070 ++j) {
1092 BrowserAccessibility* cell = child->GetChild(j); 1071 BrowserAccessibility* cell = child->GetChild(j);
1093 if (cell->role() != AccessibilityNodeData::ROLE_CELL) 1072 if (cell->role() != WebKit::WebAXRoleCell)
1094 continue; 1073 continue;
1095 int colIndex; 1074 int colIndex;
1096 if (!cell->GetIntAttribute( 1075 if (!cell->GetIntAttribute(
1097 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, 1076 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX,
1098 &colIndex)) { 1077 &colIndex)) {
1099 continue; 1078 continue;
1100 } 1079 }
1101 if (colIndex == column) 1080 if (colIndex == column)
1102 return cell->ToBrowserAccessibilityCocoa(); 1081 return cell->ToBrowserAccessibilityCocoa();
1103 if (colIndex > column) 1082 if (colIndex > column)
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
1356 } 1335 }
1357 1336
1358 // Returns whether or not the specified attribute can be set by the 1337 // Returns whether or not the specified attribute can be set by the
1359 // accessibility API via |accessibilitySetValue:forAttribute:|. 1338 // accessibility API via |accessibilitySetValue:forAttribute:|.
1360 - (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute { 1339 - (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute {
1361 if (!browserAccessibility_) 1340 if (!browserAccessibility_)
1362 return nil; 1341 return nil;
1363 1342
1364 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) 1343 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute])
1365 return GetState(browserAccessibility_, 1344 return GetState(browserAccessibility_,
1366 AccessibilityNodeData::STATE_FOCUSABLE); 1345 WebKit::WebAXStateFocusable);
1367 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { 1346 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
1368 return browserAccessibility_->GetBoolAttribute( 1347 return browserAccessibility_->GetBoolAttribute(
1369 AccessibilityNodeData::ATTR_CAN_SET_VALUE); 1348 AccessibilityNodeData::ATTR_CAN_SET_VALUE);
1370 } 1349 }
1371 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] && 1350 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] &&
1372 ([[self role] isEqualToString:NSAccessibilityTextFieldRole] || 1351 ([[self role] isEqualToString:NSAccessibilityTextFieldRole] ||
1373 [[self role] isEqualToString:NSAccessibilityTextAreaRole])) 1352 [[self role] isEqualToString:NSAccessibilityTextAreaRole]))
1374 return YES; 1353 return YES;
1375 1354
1376 return NO; 1355 return NO;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1472 return [super hash]; 1451 return [super hash];
1473 return browserAccessibility_->renderer_id(); 1452 return browserAccessibility_->renderer_id();
1474 } 1453 }
1475 1454
1476 - (BOOL)accessibilityShouldUseUniqueId { 1455 - (BOOL)accessibilityShouldUseUniqueId {
1477 return YES; 1456 return YES;
1478 } 1457 }
1479 1458
1480 @end 1459 @end
1481 1460
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698