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

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

Powered by Google App Engine
This is Rietveld 408576698