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