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

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

Issue 116293005: Refactor content/ to use ui::AXNodeData instead of blink. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update content/DEPS instead of subdirs Created 6 years, 11 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
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/strings/string16.h" 12 #include "base/strings/string16.h"
13 #include "base/strings/sys_string_conversions.h" 13 #include "base/strings/sys_string_conversions.h"
14 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "content/browser/accessibility/browser_accessibility_manager.h" 15 #include "content/browser/accessibility/browser_accessibility_manager.h"
16 #include "content/browser/accessibility/browser_accessibility_manager_mac.h" 16 #include "content/browser/accessibility/browser_accessibility_manager_mac.h"
17 #include "content/public/common/content_client.h" 17 #include "content/public/common/content_client.h"
18 #include "grit/webkit_strings.h" 18 #include "grit/webkit_strings.h"
19 19
20 // See http://openradar.appspot.com/9896491. This SPI has been tested on 10.5, 20 // See http://openradar.appspot.com/9896491. This SPI has been tested on 10.5,
21 // 10.6, and 10.7. It allows accessibility clients to observe events posted on 21 // 10.6, and 10.7. It allows accessibility clients to observe events posted on
22 // this object. 22 // this object.
23 extern "C" void NSAccessibilityUnregisterUniqueIdForUIElement(id element); 23 extern "C" void NSAccessibilityUnregisterUniqueIdForUIElement(id element);
24 24
25 using content::AccessibilityNodeData; 25 using ui::AXNodeData;
26 using content::BrowserAccessibility; 26 using content::BrowserAccessibility;
27 using content::BrowserAccessibilityManager; 27 using content::BrowserAccessibilityManager;
28 using content::BrowserAccessibilityManagerMac; 28 using content::BrowserAccessibilityManagerMac;
29 using content::ContentClient; 29 using content::ContentClient;
30 typedef AccessibilityNodeData::StringAttribute StringAttribute; 30 typedef ui::AXStringAttribute StringAttribute;
31 31
32 namespace { 32 namespace {
33 33
34 // Returns an autoreleased copy of the AccessibilityNodeData's attribute. 34 // Returns an autoreleased copy of the AXNodeData'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 blink::WebAXRole webKitValue; 43 ui::AXRole webKitValue;
44 NSString* nativeValue; 44 NSString* nativeValue;
45 }; 45 };
46 46
47 typedef std::map<blink::WebAXRole, NSString*> RoleMap; 47 typedef std::map<ui::AXRole, NSString*> RoleMap;
48 48
49 // GetState checks the bitmask used in AccessibilityNodeData to check 49 // GetState checks the bitmask used in AXNodeData 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, blink::WebAXState state) { 51 bool GetState(BrowserAccessibility* accessibility, ui::AXState 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 { blink::WebAXRoleAlert, NSAccessibilityGroupRole }, 57 { ui::AX_ROLE_ALERT, NSAccessibilityGroupRole },
58 { blink::WebAXRoleAlertDialog, NSAccessibilityGroupRole }, 58 { ui::AX_ROLE_ALERT_DIALOG, NSAccessibilityGroupRole },
59 { blink::WebAXRoleAnnotation, NSAccessibilityUnknownRole }, 59 { ui::AX_ROLE_ANNOTATION, NSAccessibilityUnknownRole },
60 { blink::WebAXRoleApplication, NSAccessibilityGroupRole }, 60 { ui::AX_ROLE_APPLICATION, NSAccessibilityGroupRole },
61 { blink::WebAXRoleArticle, NSAccessibilityGroupRole }, 61 { ui::AX_ROLE_ARTICLE, NSAccessibilityGroupRole },
62 { blink::WebAXRoleBrowser, NSAccessibilityBrowserRole }, 62 { ui::AX_ROLE_BANNER, NSAccessibilityGroupRole },
63 { blink::WebAXRoleBusyIndicator, NSAccessibilityBusyIndicatorRole }, 63 { ui::AX_ROLE_BROWSER, NSAccessibilityBrowserRole },
64 { blink::WebAXRoleButton, NSAccessibilityButtonRole }, 64 { ui::AX_ROLE_BUSY_INDICATOR, NSAccessibilityBusyIndicatorRole },
65 { blink::WebAXRoleCanvas, NSAccessibilityImageRole }, 65 { ui::AX_ROLE_BUTTON, NSAccessibilityButtonRole },
66 { blink::WebAXRoleCell, @"AXCell" }, 66 { ui::AX_ROLE_CANVAS, NSAccessibilityImageRole },
67 { blink::WebAXRoleCheckBox, NSAccessibilityCheckBoxRole }, 67 { ui::AX_ROLE_CELL, @"AXCell" },
68 { blink::WebAXRoleColorWell, NSAccessibilityColorWellRole }, 68 { ui::AX_ROLE_CHECK_BOX, NSAccessibilityCheckBoxRole },
69 { blink::WebAXRoleComboBox, NSAccessibilityComboBoxRole }, 69 { ui::AX_ROLE_COLOR_WELL, NSAccessibilityColorWellRole },
70 { blink::WebAXRoleColumn, NSAccessibilityColumnRole }, 70 { ui::AX_ROLE_COLUMN, NSAccessibilityColumnRole },
71 { blink::WebAXRoleColumnHeader, @"AXCell" }, 71 { ui::AX_ROLE_COLUMN_HEADER, @"AXCell" },
72 { blink::WebAXRoleDefinition, NSAccessibilityGroupRole }, 72 { ui::AX_ROLE_COMBO_BOX, NSAccessibilityComboBoxRole },
73 { blink::WebAXRoleDescriptionListDetail, NSAccessibilityGroupRole }, 73 { ui::AX_ROLE_COMPLEMENTARY, NSAccessibilityGroupRole },
74 { blink::WebAXRoleDescriptionListTerm, NSAccessibilityGroupRole }, 74 { ui::AX_ROLE_CONTENT_INFO, NSAccessibilityGroupRole },
75 { blink::WebAXRoleDialog, NSAccessibilityGroupRole }, 75 { ui::AX_ROLE_DEFINITION, NSAccessibilityGroupRole },
76 { blink::WebAXRoleDirectory, NSAccessibilityListRole }, 76 { ui::AX_ROLE_DESCRIPTION_LIST_DETAIL, NSAccessibilityGroupRole },
77 { blink::WebAXRoleDisclosureTriangle, 77 { ui::AX_ROLE_DESCRIPTION_LIST_TERM, NSAccessibilityGroupRole },
78 NSAccessibilityDisclosureTriangleRole }, 78 { ui::AX_ROLE_DIALOG, NSAccessibilityGroupRole },
79 { blink::WebAXRoleDiv, NSAccessibilityGroupRole }, 79 { ui::AX_ROLE_DIRECTORY, NSAccessibilityListRole },
80 { blink::WebAXRoleDocument, NSAccessibilityGroupRole }, 80 { ui::AX_ROLE_DISCLOSURE_TRIANGLE, NSAccessibilityDisclosureTriangleRole },
81 { blink::WebAXRoleDrawer, NSAccessibilityDrawerRole }, 81 { ui::AX_ROLE_DIV, NSAccessibilityGroupRole },
82 { blink::WebAXRoleEditableText, NSAccessibilityTextFieldRole }, 82 { ui::AX_ROLE_DOCUMENT, NSAccessibilityGroupRole },
83 { blink::WebAXRoleFooter, NSAccessibilityGroupRole }, 83 { ui::AX_ROLE_DRAWER, NSAccessibilityDrawerRole },
84 { blink::WebAXRoleForm, NSAccessibilityGroupRole }, 84 { ui::AX_ROLE_EDITABLE_TEXT, NSAccessibilityTextFieldRole },
85 { blink::WebAXRoleGrid, NSAccessibilityGridRole }, 85 { ui::AX_ROLE_FOOTER, NSAccessibilityGroupRole },
86 { blink::WebAXRoleGroup, NSAccessibilityGroupRole }, 86 { ui::AX_ROLE_FORM, NSAccessibilityGroupRole },
87 { blink::WebAXRoleGrowArea, NSAccessibilityGrowAreaRole }, 87 { ui::AX_ROLE_GRID, NSAccessibilityGridRole },
88 { blink::WebAXRoleHeading, @"AXHeading" }, 88 { ui::AX_ROLE_GROUP, NSAccessibilityGroupRole },
89 { blink::WebAXRoleHelpTag, NSAccessibilityHelpTagRole }, 89 { ui::AX_ROLE_GROW_AREA, NSAccessibilityGrowAreaRole },
90 { blink::WebAXRoleHorizontalRule, NSAccessibilityGroupRole }, 90 { ui::AX_ROLE_HEADING, @"AXHeading" },
91 { blink::WebAXRoleIgnored, NSAccessibilityUnknownRole }, 91 { ui::AX_ROLE_HELP_TAG, NSAccessibilityHelpTagRole },
92 { blink::WebAXRoleImage, NSAccessibilityImageRole }, 92 { ui::AX_ROLE_HORIZONTAL_RULE, NSAccessibilityGroupRole },
93 { blink::WebAXRoleImageMap, NSAccessibilityGroupRole }, 93 { ui::AX_ROLE_IGNORED, NSAccessibilityUnknownRole },
94 { blink::WebAXRoleImageMapLink, NSAccessibilityLinkRole }, 94 { ui::AX_ROLE_IMAGE, NSAccessibilityImageRole },
95 { blink::WebAXRoleIncrementor, NSAccessibilityIncrementorRole }, 95 { ui::AX_ROLE_IMAGE_MAP, NSAccessibilityGroupRole },
96 { blink::WebAXRoleLabel, NSAccessibilityGroupRole }, 96 { ui::AX_ROLE_IMAGE_MAP_LINK, NSAccessibilityLinkRole },
97 { blink::WebAXRoleApplication, NSAccessibilityGroupRole }, 97 { ui::AX_ROLE_INCREMENTOR, NSAccessibilityIncrementorRole },
98 { blink::WebAXRoleBanner, NSAccessibilityGroupRole }, 98 { ui::AX_ROLE_LABEL, NSAccessibilityGroupRole },
99 { blink::WebAXRoleComplementary, NSAccessibilityGroupRole }, 99 { ui::AX_ROLE_LINK, NSAccessibilityLinkRole },
100 { blink::WebAXRoleContentInfo, NSAccessibilityGroupRole }, 100 { ui::AX_ROLE_LIST, NSAccessibilityListRole },
101 { blink::WebAXRoleMain, NSAccessibilityGroupRole }, 101 { ui::AX_ROLE_LIST_BOX, NSAccessibilityListRole },
102 { blink::WebAXRoleNavigation, NSAccessibilityGroupRole }, 102 { ui::AX_ROLE_LIST_BOX_OPTION, NSAccessibilityStaticTextRole },
103 { blink::WebAXRoleSearch, NSAccessibilityGroupRole }, 103 { ui::AX_ROLE_LIST_ITEM, NSAccessibilityGroupRole },
104 { blink::WebAXRoleLink, NSAccessibilityLinkRole }, 104 { ui::AX_ROLE_LIST_MARKER, @"AXListMarker" },
105 { blink::WebAXRoleList, NSAccessibilityListRole }, 105 { ui::AX_ROLE_LOG, NSAccessibilityGroupRole },
106 { blink::WebAXRoleListItem, NSAccessibilityGroupRole }, 106 { ui::AX_ROLE_MAIN, NSAccessibilityGroupRole },
107 { blink::WebAXRoleListMarker, @"AXListMarker" }, 107 { ui::AX_ROLE_MARQUEE, NSAccessibilityGroupRole },
108 { blink::WebAXRoleListBox, NSAccessibilityListRole }, 108 { ui::AX_ROLE_MATH, NSAccessibilityGroupRole },
109 { blink::WebAXRoleListBoxOption, NSAccessibilityStaticTextRole }, 109 { ui::AX_ROLE_MATTE, NSAccessibilityMatteRole },
110 { blink::WebAXRoleLog, NSAccessibilityGroupRole }, 110 { ui::AX_ROLE_MENU, NSAccessibilityMenuRole },
111 { blink::WebAXRoleMarquee, NSAccessibilityGroupRole }, 111 { ui::AX_ROLE_MENU_BAR, NSAccessibilityMenuBarRole },
112 { blink::WebAXRoleMath, NSAccessibilityGroupRole }, 112 { ui::AX_ROLE_MENU_BUTTON, NSAccessibilityButtonRole },
113 { blink::WebAXRoleMatte, NSAccessibilityMatteRole }, 113 { ui::AX_ROLE_MENU_ITEM, NSAccessibilityMenuItemRole },
114 { blink::WebAXRoleMenu, NSAccessibilityMenuRole }, 114 { ui::AX_ROLE_MENU_LIST_OPTION, NSAccessibilityMenuItemRole },
115 { blink::WebAXRoleMenuBar, NSAccessibilityMenuBarRole }, 115 { ui::AX_ROLE_MENU_LIST_POPUP, NSAccessibilityUnknownRole },
116 { blink::WebAXRoleMenuItem, NSAccessibilityMenuItemRole }, 116 { ui::AX_ROLE_NAVIGATION, NSAccessibilityGroupRole },
117 { blink::WebAXRoleMenuButton, NSAccessibilityButtonRole }, 117 { ui::AX_ROLE_NOTE, NSAccessibilityGroupRole },
118 { blink::WebAXRoleMenuListOption, NSAccessibilityMenuItemRole }, 118 { ui::AX_ROLE_OUTLINE, NSAccessibilityOutlineRole },
119 { blink::WebAXRoleMenuListPopup, NSAccessibilityUnknownRole }, 119 { ui::AX_ROLE_PARAGRAPH, NSAccessibilityGroupRole },
120 { blink::WebAXRoleNote, NSAccessibilityGroupRole }, 120 { ui::AX_ROLE_POP_UP_BUTTON, NSAccessibilityPopUpButtonRole },
121 { blink::WebAXRoleOutline, NSAccessibilityOutlineRole }, 121 { ui::AX_ROLE_PRESENTATIONAL, NSAccessibilityGroupRole },
122 { blink::WebAXRoleParagraph, NSAccessibilityGroupRole }, 122 { ui::AX_ROLE_PROGRESS_INDICATOR, NSAccessibilityProgressIndicatorRole },
123 { blink::WebAXRolePopUpButton, NSAccessibilityPopUpButtonRole }, 123 { ui::AX_ROLE_RADIO_BUTTON, NSAccessibilityRadioButtonRole },
124 { blink::WebAXRolePresentational, NSAccessibilityGroupRole }, 124 { ui::AX_ROLE_RADIO_GROUP, NSAccessibilityRadioGroupRole },
125 { blink::WebAXRoleProgressIndicator, 125 { ui::AX_ROLE_REGION, NSAccessibilityGroupRole },
126 NSAccessibilityProgressIndicatorRole }, 126 { ui::AX_ROLE_ROOT_WEB_AREA, @"AXWebArea" },
127 { blink::WebAXRoleRadioButton, NSAccessibilityRadioButtonRole }, 127 { ui::AX_ROLE_ROW, NSAccessibilityRowRole },
128 { blink::WebAXRoleRadioGroup, NSAccessibilityRadioGroupRole }, 128 { ui::AX_ROLE_ROW_HEADER, @"AXCell" },
129 { blink::WebAXRoleRegion, NSAccessibilityGroupRole }, 129 { ui::AX_ROLE_RULER, NSAccessibilityRulerRole },
130 { blink::WebAXRoleRootWebArea, @"AXWebArea" }, 130 { ui::AX_ROLE_RULER_MARKER, NSAccessibilityRulerMarkerRole },
131 { blink::WebAXRoleRow, NSAccessibilityRowRole }, 131 { ui::AX_ROLE_SCROLL_BAR, NSAccessibilityScrollBarRole },
132 { blink::WebAXRoleRowHeader, @"AXCell" }, 132 { ui::AX_ROLE_SEARCH, NSAccessibilityGroupRole },
133 { blink::WebAXRoleRuler, NSAccessibilityRulerRole }, 133 { ui::AX_ROLE_SHEET, NSAccessibilitySheetRole },
134 { blink::WebAXRoleRulerMarker, NSAccessibilityRulerMarkerRole }, 134 { ui::AX_ROLE_SLIDER, NSAccessibilitySliderRole },
135 { ui::AX_ROLE_SLIDER_THUMB, NSAccessibilityValueIndicatorRole },
136 { ui::AX_ROLE_SPIN_BUTTON, NSAccessibilitySliderRole },
137 { ui::AX_ROLE_SPLITTER, NSAccessibilitySplitterRole },
138 { ui::AX_ROLE_SPLIT_GROUP, NSAccessibilitySplitGroupRole },
139 { ui::AX_ROLE_STATIC_TEXT, NSAccessibilityStaticTextRole },
140 { ui::AX_ROLE_STATUS, NSAccessibilityGroupRole },
141 { ui::AX_ROLE_SVG_ROOT, NSAccessibilityGroupRole },
142 { ui::AX_ROLE_SYSTEM_WIDE, NSAccessibilityUnknownRole },
143 { ui::AX_ROLE_TAB, NSAccessibilityRadioButtonRole },
144 { ui::AX_ROLE_TABLE, NSAccessibilityTableRole },
145 { ui::AX_ROLE_TABLE_HEADER_CONTAINER, NSAccessibilityGroupRole },
146 { ui::AX_ROLE_TAB_LIST, NSAccessibilityTabGroupRole },
147 { ui::AX_ROLE_TAB_PANEL, NSAccessibilityGroupRole },
148 { ui::AX_ROLE_TEXT_AREA, NSAccessibilityTextAreaRole },
149 { ui::AX_ROLE_TEXT_FIELD, NSAccessibilityTextFieldRole },
150 { ui::AX_ROLE_TIMER, NSAccessibilityGroupRole },
151 { ui::AX_ROLE_TOGGLE_BUTTON, NSAccessibilityButtonRole },
152 { ui::AX_ROLE_TOOLBAR, NSAccessibilityToolbarRole },
153 { ui::AX_ROLE_TOOLTIP, NSAccessibilityGroupRole },
154 { ui::AX_ROLE_TREE, NSAccessibilityOutlineRole },
155 { ui::AX_ROLE_TREE_GRID, NSAccessibilityTableRole },
156 { ui::AX_ROLE_TREE_ITEM, NSAccessibilityRowRole },
157 { ui::AX_ROLE_VALUE_INDICATOR, NSAccessibilityValueIndicatorRole },
158 { ui::AX_ROLE_WEB_AREA, @"AXWebArea" },
159 { ui::AX_ROLE_WINDOW, NSAccessibilityWindowRole },
160
135 // TODO(dtseng): we don't correctly support the attributes for these roles. 161 // TODO(dtseng): we don't correctly support the attributes for these roles.
136 // { blink::WebAXRoleScrollArea, NSAccessibilityScrollAreaRole }, 162 // { ui::AX_ROLE_SCROLL_AREA, NSAccessibilityScrollAreaRole },
137 { blink::WebAXRoleScrollBar, NSAccessibilityScrollBarRole },
138 { blink::WebAXRoleSheet, NSAccessibilitySheetRole },
139 { blink::WebAXRoleSlider, NSAccessibilitySliderRole },
140 { blink::WebAXRoleSliderThumb, NSAccessibilityValueIndicatorRole },
141 { blink::WebAXRoleSpinButton, NSAccessibilitySliderRole },
142 { blink::WebAXRoleSplitter, NSAccessibilitySplitterRole },
143 { blink::WebAXRoleSplitGroup, NSAccessibilitySplitGroupRole },
144 { blink::WebAXRoleStaticText, NSAccessibilityStaticTextRole },
145 { blink::WebAXRoleStatus, NSAccessibilityGroupRole },
146 { blink::WebAXRoleSVGRoot, NSAccessibilityGroupRole },
147 { blink::WebAXRoleSystemWide, NSAccessibilityUnknownRole },
148 { blink::WebAXRoleTab, NSAccessibilityRadioButtonRole },
149 { blink::WebAXRoleTabList, NSAccessibilityTabGroupRole },
150 { blink::WebAXRoleTabPanel, NSAccessibilityGroupRole },
151 { blink::WebAXRoleTable, NSAccessibilityTableRole },
152 { blink::WebAXRoleTableHeaderContainer, NSAccessibilityGroupRole },
153 { blink::WebAXRoleTextArea, NSAccessibilityTextAreaRole },
154 { blink::WebAXRoleTextField, NSAccessibilityTextFieldRole },
155 { blink::WebAXRoleTimer, NSAccessibilityGroupRole },
156 { blink::WebAXRoleToggleButton, NSAccessibilityButtonRole },
157 { blink::WebAXRoleToolbar, NSAccessibilityToolbarRole },
158 { blink::WebAXRoleUserInterfaceTooltip, NSAccessibilityGroupRole },
159 { blink::WebAXRoleTree, NSAccessibilityOutlineRole },
160 { blink::WebAXRoleTreeGrid, NSAccessibilityTableRole },
161 { blink::WebAXRoleTreeItem, NSAccessibilityRowRole },
162 { blink::WebAXRoleValueIndicator, NSAccessibilityValueIndicatorRole },
163 { blink::WebAXRoleLink, NSAccessibilityLinkRole },
164 { blink::WebAXRoleWebArea, @"AXWebArea" },
165 { blink::WebAXRoleWindow, NSAccessibilityWindowRole },
166 }; 163 };
167 164
168 RoleMap role_map; 165 RoleMap role_map;
169 for (size_t i = 0; i < arraysize(roles); ++i) 166 for (size_t i = 0; i < arraysize(roles); ++i)
170 role_map[roles[i].webKitValue] = roles[i].nativeValue; 167 role_map[roles[i].webKitValue] = roles[i].nativeValue;
171 return role_map; 168 return role_map;
172 } 169 }
173 170
174 // A mapping of webkit roles to native roles. 171 // A mapping of webkit roles to native roles.
175 NSString* NativeRoleFromAccessibilityNodeDataRole( 172 NSString* NativeRoleFromAXRole(
176 const blink::WebAXRole& role) { 173 const ui::AXRole& role) {
177 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_role, 174 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_role,
178 (BuildRoleMap())); 175 (BuildRoleMap()));
179 RoleMap::iterator it = web_accessibility_to_native_role.find(role); 176 RoleMap::iterator it = web_accessibility_to_native_role.find(role);
180 if (it != web_accessibility_to_native_role.end()) 177 if (it != web_accessibility_to_native_role.end())
181 return it->second; 178 return it->second;
182 else 179 else
183 return NSAccessibilityUnknownRole; 180 return NSAccessibilityUnknownRole;
184 } 181 }
185 182
186 RoleMap BuildSubroleMap() { 183 RoleMap BuildSubroleMap() {
187 const MapEntry subroles[] = { 184 const MapEntry subroles[] = {
188 { blink::WebAXRoleAlert, @"AXApplicationAlert" }, 185 { ui::AX_ROLE_ALERT, @"AXApplicationAlert" },
189 { blink::WebAXRoleAlertDialog, @"AXApplicationAlertDialog" }, 186 { ui::AX_ROLE_ALERT_DIALOG, @"AXApplicationAlertDialog" },
190 { blink::WebAXRoleArticle, @"AXDocumentArticle" }, 187 { ui::AX_ROLE_ARTICLE, @"AXDocumentArticle" },
191 { blink::WebAXRoleDefinition, @"AXDefinition" }, 188 { ui::AX_ROLE_DEFINITION, @"AXDefinition" },
192 { blink::WebAXRoleDescriptionListDetail, @"AXDescription" }, 189 { ui::AX_ROLE_DESCRIPTION_LIST_DETAIL, @"AXDescription" },
193 { blink::WebAXRoleDescriptionListTerm, @"AXTerm" }, 190 { ui::AX_ROLE_DESCRIPTION_LIST_TERM, @"AXTerm" },
194 { blink::WebAXRoleDialog, @"AXApplicationDialog" }, 191 { ui::AX_ROLE_DIALOG, @"AXApplicationDialog" },
195 { blink::WebAXRoleDocument, @"AXDocument" }, 192 { ui::AX_ROLE_DOCUMENT, @"AXDocument" },
196 { blink::WebAXRoleFooter, @"AXLandmarkContentInfo" }, 193 { ui::AX_ROLE_FOOTER, @"AXLandmarkContentInfo" },
197 { blink::WebAXRoleApplication, @"AXLandmarkApplication" }, 194 { ui::AX_ROLE_APPLICATION, @"AXLandmarkApplication" },
198 { blink::WebAXRoleBanner, @"AXLandmarkBanner" }, 195 { ui::AX_ROLE_BANNER, @"AXLandmarkBanner" },
199 { blink::WebAXRoleComplementary, @"AXLandmarkComplementary" }, 196 { ui::AX_ROLE_COMPLEMENTARY, @"AXLandmarkComplementary" },
200 { blink::WebAXRoleContentInfo, @"AXLandmarkContentInfo" }, 197 { ui::AX_ROLE_CONTENT_INFO, @"AXLandmarkContentInfo" },
201 { blink::WebAXRoleMain, @"AXLandmarkMain" }, 198 { ui::AX_ROLE_MAIN, @"AXLandmarkMain" },
202 { blink::WebAXRoleNavigation, @"AXLandmarkNavigation" }, 199 { ui::AX_ROLE_NAVIGATION, @"AXLandmarkNavigation" },
203 { blink::WebAXRoleSearch, @"AXLandmarkSearch" }, 200 { ui::AX_ROLE_SEARCH, @"AXLandmarkSearch" },
204 { blink::WebAXRoleLog, @"AXApplicationLog" }, 201 { ui::AX_ROLE_LOG, @"AXApplicationLog" },
205 { blink::WebAXRoleMarquee, @"AXApplicationMarquee" }, 202 { ui::AX_ROLE_MARQUEE, @"AXApplicationMarquee" },
206 { blink::WebAXRoleMath, @"AXDocumentMath" }, 203 { ui::AX_ROLE_MATH, @"AXDocumentMath" },
207 { blink::WebAXRoleNote, @"AXDocumentNote" }, 204 { ui::AX_ROLE_NOTE, @"AXDocumentNote" },
208 { blink::WebAXRoleRegion, @"AXDocumentRegion" }, 205 { ui::AX_ROLE_REGION, @"AXDocumentRegion" },
209 { blink::WebAXRoleStatus, @"AXApplicationStatus" }, 206 { ui::AX_ROLE_STATUS, @"AXApplicationStatus" },
210 { blink::WebAXRoleTabPanel, @"AXTabPanel" }, 207 { ui::AX_ROLE_TAB_PANEL, @"AXTabPanel" },
211 { blink::WebAXRoleTimer, @"AXApplicationTimer" }, 208 { ui::AX_ROLE_TIMER, @"AXApplicationTimer" },
212 { blink::WebAXRoleUserInterfaceTooltip, @"AXUserInterfaceTooltip" }, 209 { ui::AX_ROLE_TOOLTIP, @"AXUserInterfaceTooltip" },
213 { blink::WebAXRoleTreeItem, NSAccessibilityOutlineRowSubrole }, 210 { ui::AX_ROLE_TREE_ITEM, NSAccessibilityOutlineRowSubrole },
214 }; 211 };
215 212
216 RoleMap subrole_map; 213 RoleMap subrole_map;
217 for (size_t i = 0; i < arraysize(subroles); ++i) 214 for (size_t i = 0; i < arraysize(subroles); ++i)
218 subrole_map[subroles[i].webKitValue] = subroles[i].nativeValue; 215 subrole_map[subroles[i].webKitValue] = subroles[i].nativeValue;
219 return subrole_map; 216 return subrole_map;
220 } 217 }
221 218
222 // A mapping of webkit roles to native subroles. 219 // A mapping of webkit roles to native subroles.
223 NSString* NativeSubroleFromAccessibilityNodeDataRole( 220 NSString* NativeSubroleFromAXRole(
224 const blink::WebAXRole& role) { 221 const ui::AXRole& role) {
225 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_subrole, 222 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_subrole,
226 (BuildSubroleMap())); 223 (BuildSubroleMap()));
227 RoleMap::iterator it = web_accessibility_to_native_subrole.find(role); 224 RoleMap::iterator it = web_accessibility_to_native_subrole.find(role);
228 if (it != web_accessibility_to_native_subrole.end()) 225 if (it != web_accessibility_to_native_subrole.end())
229 return it->second; 226 return it->second;
230 else 227 else
231 return nil; 228 return nil;
232 } 229 }
233 230
234 // A mapping from an accessibility attribute to its method name. 231 // A mapping from an accessibility attribute to its method name.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 314
318 - (void)detach { 315 - (void)detach {
319 if (browserAccessibility_) { 316 if (browserAccessibility_) {
320 NSAccessibilityUnregisterUniqueIdForUIElement(self); 317 NSAccessibilityUnregisterUniqueIdForUIElement(self);
321 browserAccessibility_ = NULL; 318 browserAccessibility_ = NULL;
322 } 319 }
323 } 320 }
324 321
325 - (NSString*)accessKey { 322 - (NSString*)accessKey {
326 return NSStringForStringAttribute( 323 return NSStringForStringAttribute(
327 browserAccessibility_, AccessibilityNodeData::ATTR_ACCESS_KEY); 324 browserAccessibility_, ui::AX_ATTR_ACCESS_KEY);
328 } 325 }
329 326
330 - (NSNumber*)ariaAtomic { 327 - (NSNumber*)ariaAtomic {
331 bool boolValue = browserAccessibility_->GetBoolAttribute( 328 bool boolValue = browserAccessibility_->GetBoolAttribute(
332 AccessibilityNodeData::ATTR_LIVE_ATOMIC); 329 ui::AX_ATTR_LIVE_ATOMIC);
333 return [NSNumber numberWithBool:boolValue]; 330 return [NSNumber numberWithBool:boolValue];
334 } 331 }
335 332
336 - (NSNumber*)ariaBusy { 333 - (NSNumber*)ariaBusy {
337 bool boolValue = browserAccessibility_->GetBoolAttribute( 334 bool boolValue = browserAccessibility_->GetBoolAttribute(
338 AccessibilityNodeData::ATTR_LIVE_BUSY); 335 ui::AX_ATTR_LIVE_BUSY);
339 return [NSNumber numberWithBool:boolValue]; 336 return [NSNumber numberWithBool:boolValue];
340 } 337 }
341 338
342 - (NSString*)ariaLive { 339 - (NSString*)ariaLive {
343 return NSStringForStringAttribute( 340 return NSStringForStringAttribute(
344 browserAccessibility_, AccessibilityNodeData::ATTR_LIVE_STATUS); 341 browserAccessibility_, ui::AX_ATTR_LIVE_STATUS);
345 } 342 }
346 343
347 - (NSString*)ariaRelevant { 344 - (NSString*)ariaRelevant {
348 return NSStringForStringAttribute( 345 return NSStringForStringAttribute(
349 browserAccessibility_, AccessibilityNodeData::ATTR_LIVE_RELEVANT); 346 browserAccessibility_, ui::AX_ATTR_LIVE_RELEVANT);
350 } 347 }
351 348
352 // Returns an array of BrowserAccessibilityCocoa objects, representing the 349 // Returns an array of BrowserAccessibilityCocoa objects, representing the
353 // accessibility children of this object. 350 // accessibility children of this object.
354 - (NSArray*)children { 351 - (NSArray*)children {
355 if (!children_) { 352 if (!children_) {
356 uint32 childCount = browserAccessibility_->PlatformChildCount(); 353 uint32 childCount = browserAccessibility_->PlatformChildCount();
357 children_.reset([[NSMutableArray alloc] initWithCapacity:childCount]); 354 children_.reset([[NSMutableArray alloc] initWithCapacity:childCount]);
358 for (uint32 index = 0; index < childCount; ++index) { 355 for (uint32 index = 0; index < childCount; ++index) {
359 BrowserAccessibilityCocoa* child = 356 BrowserAccessibilityCocoa* child =
360 browserAccessibility_->PlatformGetChild(index)-> 357 browserAccessibility_->PlatformGetChild(index)->
361 ToBrowserAccessibilityCocoa(); 358 ToBrowserAccessibilityCocoa();
362 if ([child isIgnored]) 359 if ([child isIgnored])
363 [children_ addObjectsFromArray:[child children]]; 360 [children_ addObjectsFromArray:[child children]];
364 else 361 else
365 [children_ addObject:child]; 362 [children_ addObject:child];
366 } 363 }
367 364
368 // Also, add indirect children (if any). 365 // Also, add indirect children (if any).
369 const std::vector<int32>& indirectChildIds = 366 const std::vector<int32>& indirectChildIds =
370 browserAccessibility_->GetIntListAttribute( 367 browserAccessibility_->GetIntListAttribute(
371 AccessibilityNodeData::ATTR_INDIRECT_CHILD_IDS); 368 ui::AX_ATTR_INDIRECT_CHILD_IDS);
372 for (uint32 i = 0; i < indirectChildIds.size(); ++i) { 369 for (uint32 i = 0; i < indirectChildIds.size(); ++i) {
373 int32 child_id = indirectChildIds[i]; 370 int32 child_id = indirectChildIds[i];
374 BrowserAccessibility* child = 371 BrowserAccessibility* child =
375 browserAccessibility_->manager()->GetFromRendererID(child_id); 372 browserAccessibility_->manager()->GetFromRendererID(child_id);
376 373
377 // This only became necessary as a result of crbug.com/93095. It should be 374 // This only became necessary as a result of crbug.com/93095. It should be
378 // a DCHECK in the future. 375 // a DCHECK in the future.
379 if (child) { 376 if (child) {
380 BrowserAccessibilityCocoa* child_cocoa = 377 BrowserAccessibilityCocoa* child_cocoa =
381 child->ToBrowserAccessibilityCocoa(); 378 child->ToBrowserAccessibilityCocoa();
382 [children_ addObject:child_cocoa]; 379 [children_ addObject:child_cocoa];
383 } 380 }
384 } 381 }
385 } 382 }
386 return children_; 383 return children_;
387 } 384 }
388 385
389 - (void)childrenChanged { 386 - (void)childrenChanged {
390 if (![self isIgnored]) { 387 if (![self isIgnored]) {
391 children_.reset(); 388 children_.reset();
392 } else { 389 } else {
393 [browserAccessibility_->parent()->ToBrowserAccessibilityCocoa() 390 [browserAccessibility_->parent()->ToBrowserAccessibilityCocoa()
394 childrenChanged]; 391 childrenChanged];
395 } 392 }
396 } 393 }
397 394
398 - (NSArray*)columnHeaders { 395 - (NSArray*)columnHeaders {
399 if ([self internalRole] != blink::WebAXRoleTable && 396 if ([self internalRole] != ui::AX_ROLE_TABLE &&
400 [self internalRole] != blink::WebAXRoleGrid) { 397 [self internalRole] != ui::AX_ROLE_GRID) {
401 return nil; 398 return nil;
402 } 399 }
403 400
404 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; 401 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease];
405 const std::vector<int32>& uniqueCellIds = 402 const std::vector<int32>& uniqueCellIds =
406 browserAccessibility_->GetIntListAttribute( 403 browserAccessibility_->GetIntListAttribute(
407 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 404 ui::AX_ATTR_UNIQUE_CELL_IDS);
408 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { 405 for (size_t i = 0; i < uniqueCellIds.size(); ++i) {
409 int id = uniqueCellIds[i]; 406 int id = uniqueCellIds[i];
410 BrowserAccessibility* cell = 407 BrowserAccessibility* cell =
411 browserAccessibility_->manager()->GetFromRendererID(id); 408 browserAccessibility_->manager()->GetFromRendererID(id);
412 if (cell && cell->role() == blink::WebAXRoleColumnHeader) 409 if (cell && cell->role() == ui::AX_ROLE_COLUMN_HEADER)
413 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; 410 [ret addObject:cell->ToBrowserAccessibilityCocoa()];
414 } 411 }
415 return ret; 412 return ret;
416 } 413 }
417 414
418 - (NSValue*)columnIndexRange { 415 - (NSValue*)columnIndexRange {
419 if ([self internalRole] != blink::WebAXRoleCell) 416 if ([self internalRole] != ui::AX_ROLE_CELL)
420 return nil; 417 return nil;
421 418
422 int column = -1; 419 int column = -1;
423 int colspan = -1; 420 int colspan = -1;
424 browserAccessibility_->GetIntAttribute( 421 browserAccessibility_->GetIntAttribute(
425 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column); 422 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &column);
426 browserAccessibility_->GetIntAttribute( 423 browserAccessibility_->GetIntAttribute(
427 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan); 424 ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &colspan);
428 if (column >= 0 && colspan >= 1) 425 if (column >= 0 && colspan >= 1)
429 return [NSValue valueWithRange:NSMakeRange(column, colspan)]; 426 return [NSValue valueWithRange:NSMakeRange(column, colspan)];
430 return nil; 427 return nil;
431 } 428 }
432 429
433 - (NSArray*)columns { 430 - (NSArray*)columns {
434 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; 431 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease];
435 for (BrowserAccessibilityCocoa* child in [self children]) { 432 for (BrowserAccessibilityCocoa* child in [self children]) {
436 if ([[child role] isEqualToString:NSAccessibilityColumnRole]) 433 if ([[child role] isEqualToString:NSAccessibilityColumnRole])
437 [ret addObject:child]; 434 [ret addObject:child];
438 } 435 }
439 return ret; 436 return ret;
440 } 437 }
441 438
442 - (NSString*)description { 439 - (NSString*)description {
443 std::string description; 440 std::string description;
444 if (browserAccessibility_->GetStringAttribute( 441 if (browserAccessibility_->GetStringAttribute(
445 AccessibilityNodeData::ATTR_DESCRIPTION, &description)) { 442 ui::AX_ATTR_DESCRIPTION, &description)) {
446 return base::SysUTF8ToNSString(description); 443 return base::SysUTF8ToNSString(description);
447 } 444 }
448 445
449 // If the role is anything other than an image, or if there's 446 // If the role is anything other than an image, or if there's
450 // a title or title UI element, just return an empty string. 447 // a title or title UI element, just return an empty string.
451 if (![[self role] isEqualToString:NSAccessibilityImageRole]) 448 if (![[self role] isEqualToString:NSAccessibilityImageRole])
452 return @""; 449 return @"";
453 if (browserAccessibility_->HasStringAttribute( 450 if (browserAccessibility_->HasStringAttribute(
454 AccessibilityNodeData::ATTR_NAME)) { 451 ui::AX_ATTR_NAME)) {
455 return @""; 452 return @"";
456 } 453 }
457 if ([self titleUIElement]) 454 if ([self titleUIElement])
458 return @""; 455 return @"";
459 456
460 // The remaining case is an image where there's no other title. 457 // The remaining case is an image where there's no other title.
461 // Return the base part of the filename as the description. 458 // Return the base part of the filename as the description.
462 std::string url; 459 std::string url;
463 if (browserAccessibility_->GetStringAttribute( 460 if (browserAccessibility_->GetStringAttribute(
464 AccessibilityNodeData::ATTR_URL, &url)) { 461 ui::AX_ATTR_URL, &url)) {
465 // Given a url like http://foo.com/bar/baz.png, just return the 462 // Given a url like http://foo.com/bar/baz.png, just return the
466 // base name, e.g., "baz.png". 463 // base name, e.g., "baz.png".
467 size_t leftIndex = url.rfind('/'); 464 size_t leftIndex = url.rfind('/');
468 std::string basename = 465 std::string basename =
469 leftIndex != std::string::npos ? url.substr(leftIndex) : url; 466 leftIndex != std::string::npos ? url.substr(leftIndex) : url;
470 return base::SysUTF8ToNSString(basename); 467 return base::SysUTF8ToNSString(basename);
471 } 468 }
472 469
473 return @""; 470 return @"";
474 } 471 }
475 472
476 - (NSNumber*)disclosing { 473 - (NSNumber*)disclosing {
477 if ([self internalRole] == blink::WebAXRoleTreeItem) { 474 if ([self internalRole] == ui::AX_ROLE_TREE_ITEM) {
478 return [NSNumber numberWithBool: 475 return [NSNumber numberWithBool:
479 GetState(browserAccessibility_, blink::WebAXStateExpanded)]; 476 GetState(browserAccessibility_, ui::AX_STATE_EXPANDED)];
480 } else { 477 } else {
481 return nil; 478 return nil;
482 } 479 }
483 } 480 }
484 481
485 - (id)disclosedByRow { 482 - (id)disclosedByRow {
486 // The row that contains this row. 483 // The row that contains this row.
487 // It should be the same as the first parent that is a treeitem. 484 // It should be the same as the first parent that is a treeitem.
488 return nil; 485 return nil;
489 } 486 }
490 487
491 - (NSNumber*)disclosureLevel { 488 - (NSNumber*)disclosureLevel {
492 blink::WebAXRole role = [self internalRole]; 489 ui::AXRole role = [self internalRole];
493 if (role == blink::WebAXRoleRow || 490 if (role == ui::AX_ROLE_ROW ||
494 role == blink::WebAXRoleTreeItem) { 491 role == ui::AX_ROLE_TREE_ITEM) {
495 int level = browserAccessibility_->GetIntAttribute( 492 int level = browserAccessibility_->GetIntAttribute(
496 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL); 493 ui::AX_ATTR_HIERARCHICAL_LEVEL);
497 // Mac disclosureLevel is 0-based, but web levels are 1-based. 494 // Mac disclosureLevel is 0-based, but web levels are 1-based.
498 if (level > 0) 495 if (level > 0)
499 level--; 496 level--;
500 return [NSNumber numberWithInt:level]; 497 return [NSNumber numberWithInt:level];
501 } else { 498 } else {
502 return nil; 499 return nil;
503 } 500 }
504 } 501 }
505 502
506 - (id)disclosedRows { 503 - (id)disclosedRows {
507 // The rows that are considered inside this row. 504 // The rows that are considered inside this row.
508 return nil; 505 return nil;
509 } 506 }
510 507
511 - (NSNumber*)enabled { 508 - (NSNumber*)enabled {
512 return [NSNumber numberWithBool: 509 return [NSNumber numberWithBool:
513 GetState(browserAccessibility_, blink::WebAXStateEnabled)]; 510 GetState(browserAccessibility_, ui::AX_STATE_ENABLED)];
514 } 511 }
515 512
516 - (NSNumber*)focused { 513 - (NSNumber*)focused {
517 BrowserAccessibilityManager* manager = browserAccessibility_->manager(); 514 BrowserAccessibilityManager* manager = browserAccessibility_->manager();
518 NSNumber* ret = [NSNumber numberWithBool: 515 NSNumber* ret = [NSNumber numberWithBool:
519 manager->GetFocus(NULL) == browserAccessibility_]; 516 manager->GetFocus(NULL) == browserAccessibility_];
520 return ret; 517 return ret;
521 } 518 }
522 519
523 - (id)header { 520 - (id)header {
524 int headerElementId = -1; 521 int headerElementId = -1;
525 if ([self internalRole] == blink::WebAXRoleTable || 522 if ([self internalRole] == ui::AX_ROLE_TABLE ||
526 [self internalRole] == blink::WebAXRoleGrid) { 523 [self internalRole] == ui::AX_ROLE_GRID) {
527 browserAccessibility_->GetIntAttribute( 524 browserAccessibility_->GetIntAttribute(
528 AccessibilityNodeData::ATTR_TABLE_HEADER_ID, &headerElementId); 525 ui::AX_ATTR_TABLE_HEADER_ID, &headerElementId);
529 } else if ([self internalRole] == blink::WebAXRoleColumn) { 526 } else if ([self internalRole] == ui::AX_ROLE_COLUMN) {
530 browserAccessibility_->GetIntAttribute( 527 browserAccessibility_->GetIntAttribute(
531 AccessibilityNodeData::ATTR_TABLE_COLUMN_HEADER_ID, &headerElementId); 528 ui::AX_ATTR_TABLE_COLUMN_HEADER_ID, &headerElementId);
532 } else if ([self internalRole] == blink::WebAXRoleRow) { 529 } else if ([self internalRole] == ui::AX_ROLE_ROW) {
533 browserAccessibility_->GetIntAttribute( 530 browserAccessibility_->GetIntAttribute(
534 AccessibilityNodeData::ATTR_TABLE_ROW_HEADER_ID, &headerElementId); 531 ui::AX_ATTR_TABLE_ROW_HEADER_ID, &headerElementId);
535 } 532 }
536 533
537 if (headerElementId > 0) { 534 if (headerElementId > 0) {
538 BrowserAccessibility* headerObject = 535 BrowserAccessibility* headerObject =
539 browserAccessibility_->manager()->GetFromRendererID(headerElementId); 536 browserAccessibility_->manager()->GetFromRendererID(headerElementId);
540 if (headerObject) 537 if (headerObject)
541 return headerObject->ToBrowserAccessibilityCocoa(); 538 return headerObject->ToBrowserAccessibilityCocoa();
542 } 539 }
543 return nil; 540 return nil;
544 } 541 }
545 542
546 - (NSString*)help { 543 - (NSString*)help {
547 return NSStringForStringAttribute( 544 return NSStringForStringAttribute(
548 browserAccessibility_, AccessibilityNodeData::ATTR_HELP); 545 browserAccessibility_, ui::AX_ATTR_HELP);
549 } 546 }
550 547
551 - (NSNumber*)index { 548 - (NSNumber*)index {
552 if ([self internalRole] == blink::WebAXRoleColumn) { 549 if ([self internalRole] == ui::AX_ROLE_COLUMN) {
553 int columnIndex = browserAccessibility_->GetIntAttribute( 550 int columnIndex = browserAccessibility_->GetIntAttribute(
554 AccessibilityNodeData::ATTR_TABLE_COLUMN_INDEX); 551 ui::AX_ATTR_TABLE_COLUMN_INDEX);
555 return [NSNumber numberWithInt:columnIndex]; 552 return [NSNumber numberWithInt:columnIndex];
556 } else if ([self internalRole] == blink::WebAXRoleRow) { 553 } else if ([self internalRole] == ui::AX_ROLE_ROW) {
557 int rowIndex = browserAccessibility_->GetIntAttribute( 554 int rowIndex = browserAccessibility_->GetIntAttribute(
558 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX); 555 ui::AX_ATTR_TABLE_ROW_INDEX);
559 return [NSNumber numberWithInt:rowIndex]; 556 return [NSNumber numberWithInt:rowIndex];
560 } 557 }
561 558
562 return nil; 559 return nil;
563 } 560 }
564 561
565 // Returns whether or not this node should be ignored in the 562 // Returns whether or not this node should be ignored in the
566 // accessibility tree. 563 // accessibility tree.
567 - (BOOL)isIgnored { 564 - (BOOL)isIgnored {
568 return [[self role] isEqualToString:NSAccessibilityUnknownRole]; 565 return [[self role] isEqualToString:NSAccessibilityUnknownRole];
(...skipping 10 matching lines...) Expand all
579 } 576 }
580 return invalid; 577 return invalid;
581 } 578 }
582 579
583 - (NSNumber*)loaded { 580 - (NSNumber*)loaded {
584 return [NSNumber numberWithBool:YES]; 581 return [NSNumber numberWithBool:YES];
585 } 582 }
586 583
587 - (NSNumber*)loadingProgress { 584 - (NSNumber*)loadingProgress {
588 float floatValue = browserAccessibility_->GetFloatAttribute( 585 float floatValue = browserAccessibility_->GetFloatAttribute(
589 AccessibilityNodeData::ATTR_DOC_LOADING_PROGRESS); 586 ui::AX_ATTR_DOC_LOADING_PROGRESS);
590 return [NSNumber numberWithFloat:floatValue]; 587 return [NSNumber numberWithFloat:floatValue];
591 } 588 }
592 589
593 - (NSNumber*)maxValue { 590 - (NSNumber*)maxValue {
594 float floatValue = browserAccessibility_->GetFloatAttribute( 591 float floatValue = browserAccessibility_->GetFloatAttribute(
595 AccessibilityNodeData::ATTR_MAX_VALUE_FOR_RANGE); 592 ui::AX_ATTR_MAX_VALUE_FOR_RANGE);
596 return [NSNumber numberWithFloat:floatValue]; 593 return [NSNumber numberWithFloat:floatValue];
597 } 594 }
598 595
599 - (NSNumber*)minValue { 596 - (NSNumber*)minValue {
600 float floatValue = browserAccessibility_->GetFloatAttribute( 597 float floatValue = browserAccessibility_->GetFloatAttribute(
601 AccessibilityNodeData::ATTR_MIN_VALUE_FOR_RANGE); 598 ui::AX_ATTR_MIN_VALUE_FOR_RANGE);
602 return [NSNumber numberWithFloat:floatValue]; 599 return [NSNumber numberWithFloat:floatValue];
603 } 600 }
604 601
605 - (NSString*)orientation { 602 - (NSString*)orientation {
606 // We present a spin button as a vertical slider, with a role description 603 // We present a spin button as a vertical slider, with a role description
607 // of "spin button". 604 // of "spin button".
608 if ([self internalRole] == blink::WebAXRoleSpinButton) 605 if ([self internalRole] == ui::AX_ROLE_SPIN_BUTTON)
609 return NSAccessibilityVerticalOrientationValue; 606 return NSAccessibilityVerticalOrientationValue;
610 607
611 if (GetState(browserAccessibility_, blink::WebAXStateVertical)) 608 if (GetState(browserAccessibility_, ui::AX_STATE_VERTICAL))
612 return NSAccessibilityVerticalOrientationValue; 609 return NSAccessibilityVerticalOrientationValue;
613 else 610 else
614 return NSAccessibilityHorizontalOrientationValue; 611 return NSAccessibilityHorizontalOrientationValue;
615 } 612 }
616 613
617 - (NSNumber*)numberOfCharacters { 614 - (NSNumber*)numberOfCharacters {
618 return [NSNumber numberWithInt:browserAccessibility_->value().length()]; 615 return [NSNumber numberWithInt:browserAccessibility_->value().length()];
619 } 616 }
620 617
621 // The origin of this accessibility object in the page's document. 618 // The origin of this accessibility object in the page's document.
(...skipping 21 matching lines...) Expand all
643 - (NSValue*)position { 640 - (NSValue*)position {
644 NSPoint origin = [self origin]; 641 NSPoint origin = [self origin];
645 NSSize size = [[self size] sizeValue]; 642 NSSize size = [[self size] sizeValue];
646 NSPoint pointInScreen = 643 NSPoint pointInScreen =
647 [delegate_ accessibilityPointInScreen:origin size:size]; 644 [delegate_ accessibilityPointInScreen:origin size:size];
648 return [NSValue valueWithPoint:pointInScreen]; 645 return [NSValue valueWithPoint:pointInScreen];
649 } 646 }
650 647
651 - (NSNumber*)required { 648 - (NSNumber*)required {
652 return [NSNumber numberWithBool: 649 return [NSNumber numberWithBool:
653 GetState(browserAccessibility_, blink::WebAXStateRequired)]; 650 GetState(browserAccessibility_, ui::AX_STATE_REQUIRED)];
654 } 651 }
655 652
656 // Returns an enum indicating the role from browserAccessibility_. 653 // Returns an enum indicating the role from browserAccessibility_.
657 - (blink::WebAXRole)internalRole { 654 - (ui::AXRole)internalRole {
658 return static_cast<blink::WebAXRole>(browserAccessibility_->role()); 655 return static_cast<ui::AXRole>(browserAccessibility_->role());
659 } 656 }
660 657
661 // Returns a string indicating the NSAccessibility role of this object. 658 // Returns a string indicating the NSAccessibility role of this object.
662 - (NSString*)role { 659 - (NSString*)role {
663 blink::WebAXRole role = [self internalRole]; 660 ui::AXRole role = [self internalRole];
664 if (role == blink::WebAXRoleCanvas && 661 if (role == ui::AX_ROLE_CANVAS &&
665 browserAccessibility_->GetBoolAttribute( 662 browserAccessibility_->GetBoolAttribute(
666 AccessibilityNodeData::ATTR_CANVAS_HAS_FALLBACK)) { 663 ui::AX_ATTR_CANVAS_HAS_FALLBACK)) {
667 return NSAccessibilityGroupRole; 664 return NSAccessibilityGroupRole;
668 } 665 }
669 return NativeRoleFromAccessibilityNodeDataRole(role); 666 return NativeRoleFromAXRole(role);
670 } 667 }
671 668
672 // Returns a string indicating the role description of this object. 669 // Returns a string indicating the role description of this object.
673 - (NSString*)roleDescription { 670 - (NSString*)roleDescription {
674 NSString* role = [self role]; 671 NSString* role = [self role];
675 672
676 ContentClient* content_client = content::GetContentClient(); 673 ContentClient* content_client = content::GetContentClient();
677 674
678 // The following descriptions are specific to webkit. 675 // The following descriptions are specific to webkit.
679 if ([role isEqualToString:@"AXWebArea"]) { 676 if ([role isEqualToString:@"AXWebArea"]) {
680 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 677 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
681 IDS_AX_ROLE_WEB_AREA)); 678 IDS_AX_ROLE_WEB_AREA));
682 } 679 }
683 680
684 if ([role isEqualToString:@"NSAccessibilityLinkRole"]) { 681 if ([role isEqualToString:@"NSAccessibilityLinkRole"]) {
685 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 682 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
686 IDS_AX_ROLE_LINK)); 683 IDS_AX_ROLE_LINK));
687 } 684 }
688 685
689 if ([role isEqualToString:@"AXHeading"]) { 686 if ([role isEqualToString:@"AXHeading"]) {
690 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 687 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
691 IDS_AX_ROLE_HEADING)); 688 IDS_AX_ROLE_HEADING));
692 } 689 }
693 690
694 if ([role isEqualToString:NSAccessibilityGroupRole] || 691 if ([role isEqualToString:NSAccessibilityGroupRole] ||
695 [role isEqualToString:NSAccessibilityRadioButtonRole]) { 692 [role isEqualToString:NSAccessibilityRadioButtonRole]) {
696 std::string role; 693 std::string role;
697 if (browserAccessibility_->GetHtmlAttribute("role", &role)) { 694 if (browserAccessibility_->GetHtmlAttribute("role", &role)) {
698 blink::WebAXRole internalRole = [self internalRole]; 695 ui::AXRole internalRole = [self internalRole];
699 if ((internalRole != blink::WebAXRoleGroup && 696 if ((internalRole != ui::AX_ROLE_GROUP &&
700 internalRole != blink::WebAXRoleListItem) || 697 internalRole != ui::AX_ROLE_LIST_ITEM) ||
701 internalRole == blink::WebAXRoleTab) { 698 internalRole == ui::AX_ROLE_TAB) {
702 // TODO(dtseng): This is not localized; see crbug/84814. 699 // TODO(dtseng): This is not localized; see crbug/84814.
703 return base::SysUTF8ToNSString(role); 700 return base::SysUTF8ToNSString(role);
704 } 701 }
705 } 702 }
706 } 703 }
707 704
708 switch([self internalRole]) { 705 switch([self internalRole]) {
709 case blink::WebAXRoleFooter: 706 case ui::AX_ROLE_FOOTER:
710 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 707 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
711 IDS_AX_ROLE_FOOTER)); 708 IDS_AX_ROLE_FOOTER));
712 case blink::WebAXRoleSpinButton: 709 case ui::AX_ROLE_SPIN_BUTTON:
713 // This control is similar to what VoiceOver calls a "stepper". 710 // This control is similar to what VoiceOver calls a "stepper".
714 return base::SysUTF16ToNSString(content_client->GetLocalizedString( 711 return base::SysUTF16ToNSString(content_client->GetLocalizedString(
715 IDS_AX_ROLE_STEPPER)); 712 IDS_AX_ROLE_STEPPER));
716 default: 713 default:
717 break; 714 break;
718 } 715 }
719 716
720 return NSAccessibilityRoleDescription(role, nil); 717 return NSAccessibilityRoleDescription(role, nil);
721 } 718 }
722 719
723 - (NSArray*)rowHeaders { 720 - (NSArray*)rowHeaders {
724 if ([self internalRole] != blink::WebAXRoleTable && 721 if ([self internalRole] != ui::AX_ROLE_TABLE &&
725 [self internalRole] != blink::WebAXRoleGrid) { 722 [self internalRole] != ui::AX_ROLE_GRID) {
726 return nil; 723 return nil;
727 } 724 }
728 725
729 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; 726 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease];
730 const std::vector<int32>& uniqueCellIds = 727 const std::vector<int32>& uniqueCellIds =
731 browserAccessibility_->GetIntListAttribute( 728 browserAccessibility_->GetIntListAttribute(
732 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 729 ui::AX_ATTR_UNIQUE_CELL_IDS);
733 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { 730 for (size_t i = 0; i < uniqueCellIds.size(); ++i) {
734 int id = uniqueCellIds[i]; 731 int id = uniqueCellIds[i];
735 BrowserAccessibility* cell = 732 BrowserAccessibility* cell =
736 browserAccessibility_->manager()->GetFromRendererID(id); 733 browserAccessibility_->manager()->GetFromRendererID(id);
737 if (cell && cell->role() == blink::WebAXRoleRowHeader) 734 if (cell && cell->role() == ui::AX_ROLE_ROW_HEADER)
738 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; 735 [ret addObject:cell->ToBrowserAccessibilityCocoa()];
739 } 736 }
740 return ret; 737 return ret;
741 } 738 }
742 739
743 - (NSValue*)rowIndexRange { 740 - (NSValue*)rowIndexRange {
744 if ([self internalRole] != blink::WebAXRoleCell) 741 if ([self internalRole] != ui::AX_ROLE_CELL)
745 return nil; 742 return nil;
746 743
747 int row = -1; 744 int row = -1;
748 int rowspan = -1; 745 int rowspan = -1;
749 browserAccessibility_->GetIntAttribute( 746 browserAccessibility_->GetIntAttribute(
750 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row); 747 ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row);
751 browserAccessibility_->GetIntAttribute( 748 browserAccessibility_->GetIntAttribute(
752 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan); 749 ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &rowspan);
753 if (row >= 0 && rowspan >= 1) 750 if (row >= 0 && rowspan >= 1)
754 return [NSValue valueWithRange:NSMakeRange(row, rowspan)]; 751 return [NSValue valueWithRange:NSMakeRange(row, rowspan)];
755 return nil; 752 return nil;
756 } 753 }
757 754
758 - (NSArray*)rows { 755 - (NSArray*)rows {
759 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; 756 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease];
760 757
761 if ([self internalRole] == blink::WebAXRoleTable|| 758 if ([self internalRole] == ui::AX_ROLE_TABLE||
762 [self internalRole] == blink::WebAXRoleGrid) { 759 [self internalRole] == ui::AX_ROLE_GRID) {
763 for (BrowserAccessibilityCocoa* child in [self children]) { 760 for (BrowserAccessibilityCocoa* child in [self children]) {
764 if ([[child role] isEqualToString:NSAccessibilityRowRole]) 761 if ([[child role] isEqualToString:NSAccessibilityRowRole])
765 [ret addObject:child]; 762 [ret addObject:child];
766 } 763 }
767 } else if ([self internalRole] == blink::WebAXRoleColumn) { 764 } else if ([self internalRole] == ui::AX_ROLE_COLUMN) {
768 const std::vector<int32>& indirectChildIds = 765 const std::vector<int32>& indirectChildIds =
769 browserAccessibility_->GetIntListAttribute( 766 browserAccessibility_->GetIntListAttribute(
770 AccessibilityNodeData::ATTR_INDIRECT_CHILD_IDS); 767 ui::AX_ATTR_INDIRECT_CHILD_IDS);
771 for (uint32 i = 0; i < indirectChildIds.size(); ++i) { 768 for (uint32 i = 0; i < indirectChildIds.size(); ++i) {
772 int id = indirectChildIds[i]; 769 int id = indirectChildIds[i];
773 BrowserAccessibility* rowElement = 770 BrowserAccessibility* rowElement =
774 browserAccessibility_->manager()->GetFromRendererID(id); 771 browserAccessibility_->manager()->GetFromRendererID(id);
775 if (rowElement) 772 if (rowElement)
776 [ret addObject:rowElement->ToBrowserAccessibilityCocoa()]; 773 [ret addObject:rowElement->ToBrowserAccessibilityCocoa()];
777 } 774 }
778 } 775 }
779 776
780 return ret; 777 return ret;
781 } 778 }
782 779
783 // Returns the size of this object. 780 // Returns the size of this object.
784 - (NSValue*)size { 781 - (NSValue*)size {
785 gfx::Rect bounds = browserAccessibility_->GetLocalBoundsRect(); 782 gfx::Rect bounds = browserAccessibility_->GetLocalBoundsRect();
786 return [NSValue valueWithSize:NSMakeSize(bounds.width(), bounds.height())]; 783 return [NSValue valueWithSize:NSMakeSize(bounds.width(), bounds.height())];
787 } 784 }
788 785
789 // Returns a subrole based upon the role. 786 // Returns a subrole based upon the role.
790 - (NSString*) subrole { 787 - (NSString*) subrole {
791 blink::WebAXRole browserAccessibilityRole = [self internalRole]; 788 ui::AXRole browserAccessibilityRole = [self internalRole];
792 if (browserAccessibilityRole == blink::WebAXRoleTextField && 789 if (browserAccessibilityRole == ui::AX_ROLE_TEXT_FIELD &&
793 GetState(browserAccessibility_, blink::WebAXStateProtected)) { 790 GetState(browserAccessibility_, ui::AX_STATE_PROTECTED)) {
794 return @"AXSecureTextField"; 791 return @"AXSecureTextField";
795 } 792 }
796 793
797 NSString* htmlTag = NSStringForStringAttribute( 794 NSString* htmlTag = NSStringForStringAttribute(
798 browserAccessibility_, AccessibilityNodeData::ATTR_HTML_TAG); 795 browserAccessibility_, ui::AX_ATTR_HTML_TAG);
799 796
800 if (browserAccessibilityRole == blink::WebAXRoleList) { 797 if (browserAccessibilityRole == ui::AX_ROLE_LIST) {
801 if ([htmlTag isEqualToString:@"ul"] || 798 if ([htmlTag isEqualToString:@"ul"] ||
802 [htmlTag isEqualToString:@"ol"]) { 799 [htmlTag isEqualToString:@"ol"]) {
803 return @"AXContentList"; 800 return @"AXContentList";
804 } else if ([htmlTag isEqualToString:@"dl"]) { 801 } else if ([htmlTag isEqualToString:@"dl"]) {
805 return @"AXDescriptionList"; 802 return @"AXDescriptionList";
806 } 803 }
807 } 804 }
808 805
809 return NativeSubroleFromAccessibilityNodeDataRole(browserAccessibilityRole); 806 return NativeSubroleFromAXRole(browserAccessibilityRole);
810 } 807 }
811 808
812 // Returns all tabs in this subtree. 809 // Returns all tabs in this subtree.
813 - (NSArray*)tabs { 810 - (NSArray*)tabs {
814 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease]; 811 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease];
815 812
816 if ([self internalRole] == blink::WebAXRoleTab) 813 if ([self internalRole] == ui::AX_ROLE_TAB)
817 [tabSubtree addObject:self]; 814 [tabSubtree addObject:self];
818 815
819 for (uint i=0; i < [[self children] count]; ++i) { 816 for (uint i=0; i < [[self children] count]; ++i) {
820 NSArray* tabChildren = [[[self children] objectAtIndex:i] tabs]; 817 NSArray* tabChildren = [[[self children] objectAtIndex:i] tabs];
821 if ([tabChildren count] > 0) 818 if ([tabChildren count] > 0)
822 [tabSubtree addObjectsFromArray:tabChildren]; 819 [tabSubtree addObjectsFromArray:tabChildren];
823 } 820 }
824 821
825 return tabSubtree; 822 return tabSubtree;
826 } 823 }
827 824
828 - (NSString*)title { 825 - (NSString*)title {
829 return NSStringForStringAttribute( 826 return NSStringForStringAttribute(
830 browserAccessibility_, AccessibilityNodeData::ATTR_NAME); 827 browserAccessibility_, ui::AX_ATTR_NAME);
831 } 828 }
832 829
833 - (id)titleUIElement { 830 - (id)titleUIElement {
834 int titleElementId; 831 int titleElementId;
835 if (browserAccessibility_->GetIntAttribute( 832 if (browserAccessibility_->GetIntAttribute(
836 AccessibilityNodeData::ATTR_TITLE_UI_ELEMENT, &titleElementId)) { 833 ui::AX_ATTR_TITLE_UI_ELEMENT, &titleElementId)) {
837 BrowserAccessibility* titleElement = 834 BrowserAccessibility* titleElement =
838 browserAccessibility_->manager()->GetFromRendererID(titleElementId); 835 browserAccessibility_->manager()->GetFromRendererID(titleElementId);
839 if (titleElement) 836 if (titleElement)
840 return titleElement->ToBrowserAccessibilityCocoa(); 837 return titleElement->ToBrowserAccessibilityCocoa();
841 } 838 }
842 return nil; 839 return nil;
843 } 840 }
844 841
845 - (NSString*)url { 842 - (NSString*)url {
846 StringAttribute urlAttribute = 843 StringAttribute urlAttribute =
847 [[self role] isEqualToString:@"AXWebArea"] ? 844 [[self role] isEqualToString:@"AXWebArea"] ?
848 AccessibilityNodeData::ATTR_DOC_URL : 845 ui::AX_ATTR_DOC_URL :
849 AccessibilityNodeData::ATTR_URL; 846 ui::AX_ATTR_URL;
850 return NSStringForStringAttribute(browserAccessibility_, urlAttribute); 847 return NSStringForStringAttribute(browserAccessibility_, urlAttribute);
851 } 848 }
852 849
853 - (id)value { 850 - (id)value {
854 // WebCore uses an attachmentView to get the below behavior. 851 // WebCore uses an attachmentView to get the below behavior.
855 // We do not have any native views backing this object, so need 852 // We do not have any native views backing this object, so need
856 // to approximate Cocoa ax behavior best as we can. 853 // to approximate Cocoa ax behavior best as we can.
857 NSString* role = [self role]; 854 NSString* role = [self role];
858 if ([role isEqualToString:@"AXHeading"]) { 855 if ([role isEqualToString:@"AXHeading"]) {
859 int level = 0; 856 int level = 0;
860 if (browserAccessibility_->GetIntAttribute( 857 if (browserAccessibility_->GetIntAttribute(
861 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL, &level)) { 858 ui::AX_ATTR_HIERARCHICAL_LEVEL, &level)) {
862 return [NSNumber numberWithInt:level]; 859 return [NSNumber numberWithInt:level];
863 } 860 }
864 } else if ([role isEqualToString:NSAccessibilityButtonRole]) { 861 } else if ([role isEqualToString:NSAccessibilityButtonRole]) {
865 // AXValue does not make sense for pure buttons. 862 // AXValue does not make sense for pure buttons.
866 return @""; 863 return @"";
867 } else if ([role isEqualToString:NSAccessibilityCheckBoxRole] || 864 } else if ([role isEqualToString:NSAccessibilityCheckBoxRole] ||
868 [role isEqualToString:NSAccessibilityRadioButtonRole]) { 865 [role isEqualToString:NSAccessibilityRadioButtonRole]) {
869 int value = 0; 866 int value = 0;
870 value = GetState( 867 value = GetState(
871 browserAccessibility_, blink::WebAXStateChecked) ? 1 : 0; 868 browserAccessibility_, ui::AX_STATE_CHECKED) ? 1 : 0;
872 value = GetState( 869 value = GetState(
873 browserAccessibility_, blink::WebAXStateSelected) ? 870 browserAccessibility_, ui::AX_STATE_SELECTED) ?
874 1 : 871 1 :
875 value; 872 value;
876 873
877 if (browserAccessibility_->GetBoolAttribute( 874 if (browserAccessibility_->GetBoolAttribute(
878 AccessibilityNodeData::ATTR_BUTTON_MIXED)) { 875 ui::AX_ATTR_BUTTON_MIXED)) {
879 value = 2; 876 value = 2;
880 } 877 }
881 return [NSNumber numberWithInt:value]; 878 return [NSNumber numberWithInt:value];
882 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] || 879 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] ||
883 [role isEqualToString:NSAccessibilitySliderRole] || 880 [role isEqualToString:NSAccessibilitySliderRole] ||
884 [role isEqualToString:NSAccessibilityScrollBarRole]) { 881 [role isEqualToString:NSAccessibilityScrollBarRole]) {
885 float floatValue; 882 float floatValue;
886 if (browserAccessibility_->GetFloatAttribute( 883 if (browserAccessibility_->GetFloatAttribute(
887 AccessibilityNodeData::ATTR_VALUE_FOR_RANGE, &floatValue)) { 884 ui::AX_ATTR_VALUE_FOR_RANGE, &floatValue)) {
888 return [NSNumber numberWithFloat:floatValue]; 885 return [NSNumber numberWithFloat:floatValue];
889 } 886 }
890 } else if ([role isEqualToString:NSAccessibilityColorWellRole]) { 887 } else if ([role isEqualToString:NSAccessibilityColorWellRole]) {
891 int r = browserAccessibility_->GetIntAttribute( 888 int r = browserAccessibility_->GetIntAttribute(
892 AccessibilityNodeData::ATTR_COLOR_VALUE_RED); 889 ui::AX_ATTR_COLOR_VALUE_RED);
893 int g = browserAccessibility_->GetIntAttribute( 890 int g = browserAccessibility_->GetIntAttribute(
894 AccessibilityNodeData::ATTR_COLOR_VALUE_GREEN); 891 ui::AX_ATTR_COLOR_VALUE_GREEN);
895 int b = browserAccessibility_->GetIntAttribute( 892 int b = browserAccessibility_->GetIntAttribute(
896 AccessibilityNodeData::ATTR_COLOR_VALUE_BLUE); 893 ui::AX_ATTR_COLOR_VALUE_BLUE);
897 // This string matches the one returned by a native Mac color well. 894 // This string matches the one returned by a native Mac color well.
898 return [NSString stringWithFormat:@"rgb %7.5f %7.5f %7.5f 1", 895 return [NSString stringWithFormat:@"rgb %7.5f %7.5f %7.5f 1",
899 r / 255., g / 255., b / 255.]; 896 r / 255., g / 255., b / 255.];
900 } 897 }
901 898
902 return NSStringForStringAttribute( 899 return NSStringForStringAttribute(
903 browserAccessibility_, AccessibilityNodeData::ATTR_VALUE); 900 browserAccessibility_, ui::AX_ATTR_VALUE);
904 } 901 }
905 902
906 - (NSString*)valueDescription { 903 - (NSString*)valueDescription {
907 return NSStringForStringAttribute( 904 return NSStringForStringAttribute(
908 browserAccessibility_, AccessibilityNodeData::ATTR_VALUE); 905 browserAccessibility_, ui::AX_ATTR_VALUE);
909 } 906 }
910 907
911 - (NSValue*)visibleCharacterRange { 908 - (NSValue*)visibleCharacterRange {
912 return [NSValue valueWithRange: 909 return [NSValue valueWithRange:
913 NSMakeRange(0, browserAccessibility_->value().length())]; 910 NSMakeRange(0, browserAccessibility_->value().length())];
914 } 911 }
915 912
916 - (NSArray*)visibleCells { 913 - (NSArray*)visibleCells {
917 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; 914 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease];
918 const std::vector<int32>& uniqueCellIds = 915 const std::vector<int32>& uniqueCellIds =
919 browserAccessibility_->GetIntListAttribute( 916 browserAccessibility_->GetIntListAttribute(
920 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); 917 ui::AX_ATTR_UNIQUE_CELL_IDS);
921 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { 918 for (size_t i = 0; i < uniqueCellIds.size(); ++i) {
922 int id = uniqueCellIds[i]; 919 int id = uniqueCellIds[i];
923 BrowserAccessibility* cell = 920 BrowserAccessibility* cell =
924 browserAccessibility_->manager()->GetFromRendererID(id); 921 browserAccessibility_->manager()->GetFromRendererID(id);
925 if (cell) 922 if (cell)
926 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; 923 [ret addObject:cell->ToBrowserAccessibilityCocoa()];
927 } 924 }
928 return ret; 925 return ret;
929 } 926 }
930 927
931 - (NSArray*)visibleColumns { 928 - (NSArray*)visibleColumns {
932 return [self columns]; 929 return [self columns];
933 } 930 }
934 931
935 - (NSArray*)visibleRows { 932 - (NSArray*)visibleRows {
936 return [self rows]; 933 return [self rows];
937 } 934 }
938 935
939 - (NSNumber*)visited { 936 - (NSNumber*)visited {
940 return [NSNumber numberWithBool: 937 return [NSNumber numberWithBool:
941 GetState(browserAccessibility_, blink::WebAXStateVisited)]; 938 GetState(browserAccessibility_, ui::AX_STATE_VISITED)];
942 } 939 }
943 940
944 - (id)window { 941 - (id)window {
945 return [delegate_ window]; 942 return [delegate_ window];
946 } 943 }
947 944
948 - (NSString*)methodNameForAttribute:(NSString*)attribute { 945 - (NSString*)methodNameForAttribute:(NSString*)attribute {
949 return [attributeToMethodNameMap objectForKey:attribute]; 946 return [attributeToMethodNameMap objectForKey:attribute];
950 } 947 }
951 948
952 // Returns the accessibility value for the given attribute. If the value isn't 949 // Returns the accessibility value for the given attribute. If the value isn't
953 // supported this will return nil. 950 // supported this will return nil.
954 - (id)accessibilityAttributeValue:(NSString*)attribute { 951 - (id)accessibilityAttributeValue:(NSString*)attribute {
955 if (!browserAccessibility_) 952 if (!browserAccessibility_)
956 return nil; 953 return nil;
957 954
958 SEL selector = 955 SEL selector =
959 NSSelectorFromString([self methodNameForAttribute:attribute]); 956 NSSelectorFromString([self methodNameForAttribute:attribute]);
960 if (selector) 957 if (selector)
961 return [self performSelector:selector]; 958 return [self performSelector:selector];
962 959
963 // TODO(dtseng): refactor remaining attributes. 960 // TODO(dtseng): refactor remaining attributes.
964 int selStart, selEnd; 961 int selStart, selEnd;
965 if (browserAccessibility_->GetIntAttribute( 962 if (browserAccessibility_->GetIntAttribute(
966 AccessibilityNodeData::ATTR_TEXT_SEL_START, &selStart) && 963 ui::AX_ATTR_TEXT_SEL_START, &selStart) &&
967 browserAccessibility_-> 964 browserAccessibility_->
968 GetIntAttribute(AccessibilityNodeData::ATTR_TEXT_SEL_END, &selEnd)) { 965 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, &selEnd)) {
969 if (selStart > selEnd) 966 if (selStart > selEnd)
970 std::swap(selStart, selEnd); 967 std::swap(selStart, selEnd);
971 int selLength = selEnd - selStart; 968 int selLength = selEnd - selStart;
972 if ([attribute isEqualToString: 969 if ([attribute isEqualToString:
973 NSAccessibilityInsertionPointLineNumberAttribute]) { 970 NSAccessibilityInsertionPointLineNumberAttribute]) {
974 const std::vector<int32>& line_breaks = 971 const std::vector<int32>& line_breaks =
975 browserAccessibility_->GetIntListAttribute( 972 browserAccessibility_->GetIntListAttribute(
976 AccessibilityNodeData::ATTR_LINE_BREAKS); 973 ui::AX_ATTR_LINE_BREAKS);
977 for (int i = 0; i < static_cast<int>(line_breaks.size()); ++i) { 974 for (int i = 0; i < static_cast<int>(line_breaks.size()); ++i) {
978 if (line_breaks[i] > selStart) 975 if (line_breaks[i] > selStart)
979 return [NSNumber numberWithInt:i]; 976 return [NSNumber numberWithInt:i];
980 } 977 }
981 return [NSNumber numberWithInt:static_cast<int>(line_breaks.size())]; 978 return [NSNumber numberWithInt:static_cast<int>(line_breaks.size())];
982 } 979 }
983 if ([attribute isEqualToString:NSAccessibilitySelectedTextAttribute]) { 980 if ([attribute isEqualToString:NSAccessibilitySelectedTextAttribute]) {
984 std::string value = browserAccessibility_->GetStringAttribute( 981 std::string value = browserAccessibility_->GetStringAttribute(
985 AccessibilityNodeData::ATTR_VALUE); 982 ui::AX_ATTR_VALUE);
986 return base::SysUTF8ToNSString(value.substr(selStart, selLength)); 983 return base::SysUTF8ToNSString(value.substr(selStart, selLength));
987 } 984 }
988 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute]) { 985 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute]) {
989 return [NSValue valueWithRange:NSMakeRange(selStart, selLength)]; 986 return [NSValue valueWithRange:NSMakeRange(selStart, selLength)];
990 } 987 }
991 } 988 }
992 return nil; 989 return nil;
993 } 990 }
994 991
995 // Returns the accessibility value for the given attribute and parameter. If the 992 // Returns the accessibility value for the given attribute and parameter. If the
996 // value isn't supported this will return nil. 993 // value isn't supported this will return nil.
997 - (id)accessibilityAttributeValue:(NSString*)attribute 994 - (id)accessibilityAttributeValue:(NSString*)attribute
998 forParameter:(id)parameter { 995 forParameter:(id)parameter {
999 if (!browserAccessibility_) 996 if (!browserAccessibility_)
1000 return nil; 997 return nil;
1001 998
1002 const std::vector<int32>& line_breaks = 999 const std::vector<int32>& line_breaks =
1003 browserAccessibility_->GetIntListAttribute( 1000 browserAccessibility_->GetIntListAttribute(
1004 AccessibilityNodeData::ATTR_LINE_BREAKS); 1001 ui::AX_ATTR_LINE_BREAKS);
1005 int len = static_cast<int>(browserAccessibility_->value().size()); 1002 int len = static_cast<int>(browserAccessibility_->value().size());
1006 1003
1007 if ([attribute isEqualToString: 1004 if ([attribute isEqualToString:
1008 NSAccessibilityStringForRangeParameterizedAttribute]) { 1005 NSAccessibilityStringForRangeParameterizedAttribute]) {
1009 NSRange range = [(NSValue*)parameter rangeValue]; 1006 NSRange range = [(NSValue*)parameter rangeValue];
1010 std::string value = browserAccessibility_->GetStringAttribute( 1007 std::string value = browserAccessibility_->GetStringAttribute(
1011 AccessibilityNodeData::ATTR_VALUE); 1008 ui::AX_ATTR_VALUE);
1012 return base::SysUTF8ToNSString(value.substr(range.location, range.length)); 1009 return base::SysUTF8ToNSString(value.substr(range.location, range.length));
1013 } 1010 }
1014 1011
1015 if ([attribute isEqualToString: 1012 if ([attribute isEqualToString:
1016 NSAccessibilityLineForIndexParameterizedAttribute]) { 1013 NSAccessibilityLineForIndexParameterizedAttribute]) {
1017 int index = [(NSNumber*)parameter intValue]; 1014 int index = [(NSNumber*)parameter intValue];
1018 for (int i = 0; i < static_cast<int>(line_breaks.size()); ++i) { 1015 for (int i = 0; i < static_cast<int>(line_breaks.size()); ++i) {
1019 if (line_breaks[i] > index) 1016 if (line_breaks[i] > index)
1020 return [NSNumber numberWithInt:i]; 1017 return [NSNumber numberWithInt:i];
1021 } 1018 }
1022 return [NSNumber numberWithInt:static_cast<int>(line_breaks.size())]; 1019 return [NSNumber numberWithInt:static_cast<int>(line_breaks.size())];
1023 } 1020 }
1024 1021
1025 if ([attribute isEqualToString: 1022 if ([attribute isEqualToString:
1026 NSAccessibilityRangeForLineParameterizedAttribute]) { 1023 NSAccessibilityRangeForLineParameterizedAttribute]) {
1027 int line_index = [(NSNumber*)parameter intValue]; 1024 int line_index = [(NSNumber*)parameter intValue];
1028 int line_count = static_cast<int>(line_breaks.size()) + 1; 1025 int line_count = static_cast<int>(line_breaks.size()) + 1;
1029 if (line_index < 0 || line_index >= line_count) 1026 if (line_index < 0 || line_index >= line_count)
1030 return nil; 1027 return nil;
1031 int start = line_index > 0 ? line_breaks[line_index - 1] : 0; 1028 int start = line_index > 0 ? line_breaks[line_index - 1] : 0;
1032 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;
1033 return [NSValue valueWithRange: 1030 return [NSValue valueWithRange:
1034 NSMakeRange(start, end - start)]; 1031 NSMakeRange(start, end - start)];
1035 } 1032 }
1036 1033
1037 if ([attribute isEqualToString: 1034 if ([attribute isEqualToString:
1038 NSAccessibilityCellForColumnAndRowParameterizedAttribute]) { 1035 NSAccessibilityCellForColumnAndRowParameterizedAttribute]) {
1039 if ([self internalRole] != blink::WebAXRoleTable && 1036 if ([self internalRole] != ui::AX_ROLE_TABLE &&
1040 [self internalRole] != blink::WebAXRoleGrid) { 1037 [self internalRole] != ui::AX_ROLE_GRID) {
1041 return nil; 1038 return nil;
1042 } 1039 }
1043 if (![parameter isKindOfClass:[NSArray self]]) 1040 if (![parameter isKindOfClass:[NSArray self]])
1044 return nil; 1041 return nil;
1045 NSArray* array = parameter; 1042 NSArray* array = parameter;
1046 int column = [[array objectAtIndex:0] intValue]; 1043 int column = [[array objectAtIndex:0] intValue];
1047 int row = [[array objectAtIndex:1] intValue]; 1044 int row = [[array objectAtIndex:1] intValue];
1048 int num_columns = browserAccessibility_->GetIntAttribute( 1045 int num_columns = browserAccessibility_->GetIntAttribute(
1049 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT); 1046 ui::AX_ATTR_TABLE_COLUMN_COUNT);
1050 int num_rows = browserAccessibility_->GetIntAttribute( 1047 int num_rows = browserAccessibility_->GetIntAttribute(
1051 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT); 1048 ui::AX_ATTR_TABLE_ROW_COUNT);
1052 if (column < 0 || column >= num_columns || 1049 if (column < 0 || column >= num_columns ||
1053 row < 0 || row >= num_rows) { 1050 row < 0 || row >= num_rows) {
1054 return nil; 1051 return nil;
1055 } 1052 }
1056 for (size_t i = 0; 1053 for (size_t i = 0;
1057 i < browserAccessibility_->PlatformChildCount(); 1054 i < browserAccessibility_->PlatformChildCount();
1058 ++i) { 1055 ++i) {
1059 BrowserAccessibility* child = browserAccessibility_->PlatformGetChild(i); 1056 BrowserAccessibility* child = browserAccessibility_->PlatformGetChild(i);
1060 if (child->role() != blink::WebAXRoleRow) 1057 if (child->role() != ui::AX_ROLE_ROW)
1061 continue; 1058 continue;
1062 int rowIndex; 1059 int rowIndex;
1063 if (!child->GetIntAttribute( 1060 if (!child->GetIntAttribute(
1064 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX, &rowIndex)) { 1061 ui::AX_ATTR_TABLE_ROW_INDEX, &rowIndex)) {
1065 continue; 1062 continue;
1066 } 1063 }
1067 if (rowIndex < row) 1064 if (rowIndex < row)
1068 continue; 1065 continue;
1069 if (rowIndex > row) 1066 if (rowIndex > row)
1070 break; 1067 break;
1071 for (size_t j = 0; 1068 for (size_t j = 0;
1072 j < child->PlatformChildCount(); 1069 j < child->PlatformChildCount();
1073 ++j) { 1070 ++j) {
1074 BrowserAccessibility* cell = child->PlatformGetChild(j); 1071 BrowserAccessibility* cell = child->PlatformGetChild(j);
1075 if (cell->role() != blink::WebAXRoleCell) 1072 if (cell->role() != ui::AX_ROLE_CELL)
1076 continue; 1073 continue;
1077 int colIndex; 1074 int colIndex;
1078 if (!cell->GetIntAttribute( 1075 if (!cell->GetIntAttribute(
1079 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, 1076 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX,
1080 &colIndex)) { 1077 &colIndex)) {
1081 continue; 1078 continue;
1082 } 1079 }
1083 if (colIndex == column) 1080 if (colIndex == column)
1084 return cell->ToBrowserAccessibilityCocoa(); 1081 return cell->ToBrowserAccessibilityCocoa();
1085 if (colIndex > column) 1082 if (colIndex > column)
1086 break; 1083 break;
1087 } 1084 }
1088 } 1085 }
1089 return nil; 1086 return nil;
1090 } 1087 }
1091 1088
1092 if ([attribute isEqualToString: 1089 if ([attribute isEqualToString:
1093 NSAccessibilityBoundsForRangeParameterizedAttribute]) { 1090 NSAccessibilityBoundsForRangeParameterizedAttribute]) {
1094 if ([self internalRole] != blink::WebAXRoleStaticText) 1091 if ([self internalRole] != ui::AX_ROLE_STATIC_TEXT)
1095 return nil; 1092 return nil;
1096 NSRange range = [(NSValue*)parameter rangeValue]; 1093 NSRange range = [(NSValue*)parameter rangeValue];
1097 gfx::Rect rect = browserAccessibility_->GetGlobalBoundsForRange( 1094 gfx::Rect rect = browserAccessibility_->GetGlobalBoundsForRange(
1098 range.location, range.length); 1095 range.location, range.length);
1099 NSPoint origin = NSMakePoint(rect.x(), rect.y()); 1096 NSPoint origin = NSMakePoint(rect.x(), rect.y());
1100 NSSize size = NSMakeSize(rect.width(), rect.height()); 1097 NSSize size = NSMakeSize(rect.width(), rect.height());
1101 NSPoint pointInScreen = 1098 NSPoint pointInScreen =
1102 [delegate_ accessibilityPointInScreen:origin size:size]; 1099 [delegate_ accessibilityPointInScreen:origin size:size];
1103 NSRect nsrect = NSMakeRect( 1100 NSRect nsrect = NSMakeRect(
1104 pointInScreen.x, pointInScreen.y, rect.width(), rect.height()); 1101 pointInScreen.x, pointInScreen.y, rect.width(), rect.height());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1137 NSAccessibilityRangeForLineParameterizedAttribute, 1134 NSAccessibilityRangeForLineParameterizedAttribute,
1138 NSAccessibilityStringForRangeParameterizedAttribute, 1135 NSAccessibilityStringForRangeParameterizedAttribute,
1139 NSAccessibilityRangeForPositionParameterizedAttribute, 1136 NSAccessibilityRangeForPositionParameterizedAttribute,
1140 NSAccessibilityRangeForIndexParameterizedAttribute, 1137 NSAccessibilityRangeForIndexParameterizedAttribute,
1141 NSAccessibilityBoundsForRangeParameterizedAttribute, 1138 NSAccessibilityBoundsForRangeParameterizedAttribute,
1142 NSAccessibilityRTFForRangeParameterizedAttribute, 1139 NSAccessibilityRTFForRangeParameterizedAttribute,
1143 NSAccessibilityAttributedStringForRangeParameterizedAttribute, 1140 NSAccessibilityAttributedStringForRangeParameterizedAttribute,
1144 NSAccessibilityStyleRangeForIndexParameterizedAttribute, 1141 NSAccessibilityStyleRangeForIndexParameterizedAttribute,
1145 nil]; 1142 nil];
1146 } 1143 }
1147 if ([self internalRole] == blink::WebAXRoleStaticText) { 1144 if ([self internalRole] == ui::AX_ROLE_STATIC_TEXT) {
1148 return [NSArray arrayWithObjects: 1145 return [NSArray arrayWithObjects:
1149 NSAccessibilityBoundsForRangeParameterizedAttribute, 1146 NSAccessibilityBoundsForRangeParameterizedAttribute,
1150 nil]; 1147 nil];
1151 } 1148 }
1152 return nil; 1149 return nil;
1153 } 1150 }
1154 1151
1155 // Returns an array of action names that this object will respond to. 1152 // Returns an array of action names that this object will respond to.
1156 - (NSArray*)accessibilityActionNames { 1153 - (NSArray*)accessibilityActionNames {
1157 if (!browserAccessibility_) 1154 if (!browserAccessibility_)
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1310 } else { 1307 } else {
1311 [ret addObjectsFromArray:[NSArray arrayWithObjects: 1308 [ret addObjectsFromArray:[NSArray arrayWithObjects:
1312 NSAccessibilityIndexAttribute, 1309 NSAccessibilityIndexAttribute,
1313 nil]]; 1310 nil]];
1314 } 1311 }
1315 } 1312 }
1316 } 1313 }
1317 1314
1318 // Live regions. 1315 // Live regions.
1319 if (browserAccessibility_->HasStringAttribute( 1316 if (browserAccessibility_->HasStringAttribute(
1320 AccessibilityNodeData::ATTR_LIVE_STATUS)) { 1317 ui::AX_ATTR_LIVE_STATUS)) {
1321 [ret addObjectsFromArray:[NSArray arrayWithObjects: 1318 [ret addObjectsFromArray:[NSArray arrayWithObjects:
1322 @"AXARIALive", 1319 @"AXARIALive",
1323 @"AXARIARelevant", 1320 @"AXARIARelevant",
1324 nil]]; 1321 nil]];
1325 } 1322 }
1326 if (browserAccessibility_->HasStringAttribute( 1323 if (browserAccessibility_->HasStringAttribute(
1327 AccessibilityNodeData::ATTR_CONTAINER_LIVE_STATUS)) { 1324 ui::AX_ATTR_CONTAINER_LIVE_STATUS)) {
1328 [ret addObjectsFromArray:[NSArray arrayWithObjects: 1325 [ret addObjectsFromArray:[NSArray arrayWithObjects:
1329 @"AXARIAAtomic", 1326 @"AXARIAAtomic",
1330 @"AXARIABusy", 1327 @"AXARIABusy",
1331 nil]]; 1328 nil]];
1332 } 1329 }
1333 1330
1334 // Title UI Element. 1331 // Title UI Element.
1335 if (browserAccessibility_->HasIntAttribute( 1332 if (browserAccessibility_->HasIntAttribute(
1336 AccessibilityNodeData::ATTR_TITLE_UI_ELEMENT)) { 1333 ui::AX_ATTR_TITLE_UI_ELEMENT)) {
1337 [ret addObjectsFromArray:[NSArray arrayWithObjects: 1334 [ret addObjectsFromArray:[NSArray arrayWithObjects:
1338 NSAccessibilityTitleUIElementAttribute, 1335 NSAccessibilityTitleUIElementAttribute,
1339 nil]]; 1336 nil]];
1340 } 1337 }
1341 1338
1342 return ret; 1339 return ret;
1343 } 1340 }
1344 1341
1345 // Returns the index of the child in this objects array of children. 1342 // Returns the index of the child in this objects array of children.
1346 - (NSUInteger)accessibilityGetIndexOf:(id)child { 1343 - (NSUInteger)accessibilityGetIndexOf:(id)child {
(...skipping 10 matching lines...) Expand all
1357 } 1354 }
1358 1355
1359 // Returns whether or not the specified attribute can be set by the 1356 // Returns whether or not the specified attribute can be set by the
1360 // accessibility API via |accessibilitySetValue:forAttribute:|. 1357 // accessibility API via |accessibilitySetValue:forAttribute:|.
1361 - (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute { 1358 - (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute {
1362 if (!browserAccessibility_) 1359 if (!browserAccessibility_)
1363 return nil; 1360 return nil;
1364 1361
1365 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) 1362 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute])
1366 return GetState(browserAccessibility_, 1363 return GetState(browserAccessibility_,
1367 blink::WebAXStateFocusable); 1364 ui::AX_STATE_FOCUSABLE);
1368 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { 1365 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
1369 return browserAccessibility_->GetBoolAttribute( 1366 return browserAccessibility_->GetBoolAttribute(
1370 AccessibilityNodeData::ATTR_CAN_SET_VALUE); 1367 ui::AX_ATTR_CAN_SET_VALUE);
1371 } 1368 }
1372 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] && 1369 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] &&
1373 ([[self role] isEqualToString:NSAccessibilityTextFieldRole] || 1370 ([[self role] isEqualToString:NSAccessibilityTextFieldRole] ||
1374 [[self role] isEqualToString:NSAccessibilityTextAreaRole])) 1371 [[self role] isEqualToString:NSAccessibilityTextAreaRole]))
1375 return YES; 1372 return YES;
1376 1373
1377 return NO; 1374 return NO;
1378 } 1375 }
1379 1376
1380 // Returns whether or not this object should be ignored in the accessibilty 1377 // Returns whether or not this object should be ignored in the accessibilty
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1475 return [super hash]; 1472 return [super hash];
1476 return browserAccessibility_->renderer_id(); 1473 return browserAccessibility_->renderer_id();
1477 } 1474 }
1478 1475
1479 - (BOOL)accessibilityShouldUseUniqueId { 1476 - (BOOL)accessibilityShouldUseUniqueId {
1480 return YES; 1477 return YES;
1481 } 1478 }
1482 1479
1483 @end 1480 @end
1484 1481
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698