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 WebKit::WebAXRole webKitValue; | 43 blink::WebAXRole webKitValue; |
44 NSString* nativeValue; | 44 NSString* nativeValue; |
45 }; | 45 }; |
46 | 46 |
47 typedef std::map<WebKit::WebAXRole, NSString*> RoleMap; | 47 typedef std::map<blink::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, WebKit::WebAXState state) { | 51 bool GetState(BrowserAccessibility* accessibility, blink::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 { WebKit::WebAXRoleAlert, NSAccessibilityGroupRole }, | 57 { blink::WebAXRoleAlert, NSAccessibilityGroupRole }, |
58 { WebKit::WebAXRoleAlertDialog, NSAccessibilityGroupRole }, | 58 { blink::WebAXRoleAlertDialog, NSAccessibilityGroupRole }, |
59 { WebKit::WebAXRoleAnnotation, NSAccessibilityUnknownRole }, | 59 { blink::WebAXRoleAnnotation, NSAccessibilityUnknownRole }, |
60 { WebKit::WebAXRoleApplication, NSAccessibilityGroupRole }, | 60 { blink::WebAXRoleApplication, NSAccessibilityGroupRole }, |
61 { WebKit::WebAXRoleArticle, NSAccessibilityGroupRole }, | 61 { blink::WebAXRoleArticle, NSAccessibilityGroupRole }, |
62 { WebKit::WebAXRoleBrowser, NSAccessibilityBrowserRole }, | 62 { blink::WebAXRoleBrowser, NSAccessibilityBrowserRole }, |
63 { WebKit::WebAXRoleBusyIndicator, NSAccessibilityBusyIndicatorRole }, | 63 { blink::WebAXRoleBusyIndicator, NSAccessibilityBusyIndicatorRole }, |
64 { WebKit::WebAXRoleButton, NSAccessibilityButtonRole }, | 64 { blink::WebAXRoleButton, NSAccessibilityButtonRole }, |
65 { WebKit::WebAXRoleCanvas, NSAccessibilityImageRole }, | 65 { blink::WebAXRoleCanvas, NSAccessibilityImageRole }, |
66 { WebKit::WebAXRoleCell, @"AXCell" }, | 66 { blink::WebAXRoleCell, @"AXCell" }, |
67 { WebKit::WebAXRoleCheckBox, NSAccessibilityCheckBoxRole }, | 67 { blink::WebAXRoleCheckBox, NSAccessibilityCheckBoxRole }, |
68 { WebKit::WebAXRoleColorWell, NSAccessibilityColorWellRole }, | 68 { blink::WebAXRoleColorWell, NSAccessibilityColorWellRole }, |
69 { WebKit::WebAXRoleComboBox, NSAccessibilityComboBoxRole }, | 69 { blink::WebAXRoleComboBox, NSAccessibilityComboBoxRole }, |
70 { WebKit::WebAXRoleColumn, NSAccessibilityColumnRole }, | 70 { blink::WebAXRoleColumn, NSAccessibilityColumnRole }, |
71 { WebKit::WebAXRoleColumnHeader, @"AXCell" }, | 71 { blink::WebAXRoleColumnHeader, @"AXCell" }, |
72 { WebKit::WebAXRoleDefinition, NSAccessibilityGroupRole }, | 72 { blink::WebAXRoleDefinition, NSAccessibilityGroupRole }, |
73 { WebKit::WebAXRoleDescriptionListDetail, NSAccessibilityGroupRole }, | 73 { blink::WebAXRoleDescriptionListDetail, NSAccessibilityGroupRole }, |
74 { WebKit::WebAXRoleDescriptionListTerm, NSAccessibilityGroupRole }, | 74 { blink::WebAXRoleDescriptionListTerm, NSAccessibilityGroupRole }, |
75 { WebKit::WebAXRoleDialog, NSAccessibilityGroupRole }, | 75 { blink::WebAXRoleDialog, NSAccessibilityGroupRole }, |
76 { WebKit::WebAXRoleDirectory, NSAccessibilityListRole }, | 76 { blink::WebAXRoleDirectory, NSAccessibilityListRole }, |
77 { WebKit::WebAXRoleDisclosureTriangle, | 77 { blink::WebAXRoleDisclosureTriangle, |
78 NSAccessibilityDisclosureTriangleRole }, | 78 NSAccessibilityDisclosureTriangleRole }, |
79 { WebKit::WebAXRoleDiv, NSAccessibilityGroupRole }, | 79 { blink::WebAXRoleDiv, NSAccessibilityGroupRole }, |
80 { WebKit::WebAXRoleDocument, NSAccessibilityGroupRole }, | 80 { blink::WebAXRoleDocument, NSAccessibilityGroupRole }, |
81 { WebKit::WebAXRoleDrawer, NSAccessibilityDrawerRole }, | 81 { blink::WebAXRoleDrawer, NSAccessibilityDrawerRole }, |
82 { WebKit::WebAXRoleEditableText, NSAccessibilityTextFieldRole }, | 82 { blink::WebAXRoleEditableText, NSAccessibilityTextFieldRole }, |
83 { WebKit::WebAXRoleFooter, NSAccessibilityGroupRole }, | 83 { blink::WebAXRoleFooter, NSAccessibilityGroupRole }, |
84 { WebKit::WebAXRoleForm, NSAccessibilityGroupRole }, | 84 { blink::WebAXRoleForm, NSAccessibilityGroupRole }, |
85 { WebKit::WebAXRoleGrid, NSAccessibilityGridRole }, | 85 { blink::WebAXRoleGrid, NSAccessibilityGridRole }, |
86 { WebKit::WebAXRoleGroup, NSAccessibilityGroupRole }, | 86 { blink::WebAXRoleGroup, NSAccessibilityGroupRole }, |
87 { WebKit::WebAXRoleGrowArea, NSAccessibilityGrowAreaRole }, | 87 { blink::WebAXRoleGrowArea, NSAccessibilityGrowAreaRole }, |
88 { WebKit::WebAXRoleHeading, @"AXHeading" }, | 88 { blink::WebAXRoleHeading, @"AXHeading" }, |
89 { WebKit::WebAXRoleHelpTag, NSAccessibilityHelpTagRole }, | 89 { blink::WebAXRoleHelpTag, NSAccessibilityHelpTagRole }, |
90 { WebKit::WebAXRoleHorizontalRule, NSAccessibilityGroupRole }, | 90 { blink::WebAXRoleHorizontalRule, NSAccessibilityGroupRole }, |
91 { WebKit::WebAXRoleIgnored, NSAccessibilityUnknownRole }, | 91 { blink::WebAXRoleIgnored, NSAccessibilityUnknownRole }, |
92 { WebKit::WebAXRoleImage, NSAccessibilityImageRole }, | 92 { blink::WebAXRoleImage, NSAccessibilityImageRole }, |
93 { WebKit::WebAXRoleImageMap, NSAccessibilityGroupRole }, | 93 { blink::WebAXRoleImageMap, NSAccessibilityGroupRole }, |
94 { WebKit::WebAXRoleImageMapLink, NSAccessibilityLinkRole }, | 94 { blink::WebAXRoleImageMapLink, NSAccessibilityLinkRole }, |
95 { WebKit::WebAXRoleIncrementor, NSAccessibilityIncrementorRole }, | 95 { blink::WebAXRoleIncrementor, NSAccessibilityIncrementorRole }, |
96 { WebKit::WebAXRoleLabel, NSAccessibilityGroupRole }, | 96 { blink::WebAXRoleLabel, NSAccessibilityGroupRole }, |
97 { WebKit::WebAXRoleApplication, NSAccessibilityGroupRole }, | 97 { blink::WebAXRoleApplication, NSAccessibilityGroupRole }, |
98 { WebKit::WebAXRoleBanner, NSAccessibilityGroupRole }, | 98 { blink::WebAXRoleBanner, NSAccessibilityGroupRole }, |
99 { WebKit::WebAXRoleComplementary, NSAccessibilityGroupRole }, | 99 { blink::WebAXRoleComplementary, NSAccessibilityGroupRole }, |
100 { WebKit::WebAXRoleContentInfo, NSAccessibilityGroupRole }, | 100 { blink::WebAXRoleContentInfo, NSAccessibilityGroupRole }, |
101 { WebKit::WebAXRoleMain, NSAccessibilityGroupRole }, | 101 { blink::WebAXRoleMain, NSAccessibilityGroupRole }, |
102 { WebKit::WebAXRoleNavigation, NSAccessibilityGroupRole }, | 102 { blink::WebAXRoleNavigation, NSAccessibilityGroupRole }, |
103 { WebKit::WebAXRoleSearch, NSAccessibilityGroupRole }, | 103 { blink::WebAXRoleSearch, NSAccessibilityGroupRole }, |
104 { WebKit::WebAXRoleLink, NSAccessibilityLinkRole }, | 104 { blink::WebAXRoleLink, NSAccessibilityLinkRole }, |
105 { WebKit::WebAXRoleList, NSAccessibilityListRole }, | 105 { blink::WebAXRoleList, NSAccessibilityListRole }, |
106 { WebKit::WebAXRoleListItem, NSAccessibilityGroupRole }, | 106 { blink::WebAXRoleListItem, NSAccessibilityGroupRole }, |
107 { WebKit::WebAXRoleListMarker, @"AXListMarker" }, | 107 { blink::WebAXRoleListMarker, @"AXListMarker" }, |
108 { WebKit::WebAXRoleListBox, NSAccessibilityListRole }, | 108 { blink::WebAXRoleListBox, NSAccessibilityListRole }, |
109 { WebKit::WebAXRoleListBoxOption, NSAccessibilityStaticTextRole }, | 109 { blink::WebAXRoleListBoxOption, NSAccessibilityStaticTextRole }, |
110 { WebKit::WebAXRoleLog, NSAccessibilityGroupRole }, | 110 { blink::WebAXRoleLog, NSAccessibilityGroupRole }, |
111 { WebKit::WebAXRoleMarquee, NSAccessibilityGroupRole }, | 111 { blink::WebAXRoleMarquee, NSAccessibilityGroupRole }, |
112 { WebKit::WebAXRoleMath, NSAccessibilityGroupRole }, | 112 { blink::WebAXRoleMath, NSAccessibilityGroupRole }, |
113 { WebKit::WebAXRoleMatte, NSAccessibilityMatteRole }, | 113 { blink::WebAXRoleMatte, NSAccessibilityMatteRole }, |
114 { WebKit::WebAXRoleMenu, NSAccessibilityMenuRole }, | 114 { blink::WebAXRoleMenu, NSAccessibilityMenuRole }, |
115 { WebKit::WebAXRoleMenuBar, NSAccessibilityMenuBarRole }, | 115 { blink::WebAXRoleMenuBar, NSAccessibilityMenuBarRole }, |
116 { WebKit::WebAXRoleMenuItem, NSAccessibilityMenuItemRole }, | 116 { blink::WebAXRoleMenuItem, NSAccessibilityMenuItemRole }, |
117 { WebKit::WebAXRoleMenuButton, NSAccessibilityButtonRole }, | 117 { blink::WebAXRoleMenuButton, NSAccessibilityButtonRole }, |
118 { WebKit::WebAXRoleMenuListOption, NSAccessibilityMenuItemRole }, | 118 { blink::WebAXRoleMenuListOption, NSAccessibilityMenuItemRole }, |
119 { WebKit::WebAXRoleMenuListPopup, NSAccessibilityUnknownRole }, | 119 { blink::WebAXRoleMenuListPopup, NSAccessibilityUnknownRole }, |
120 { WebKit::WebAXRoleNote, NSAccessibilityGroupRole }, | 120 { blink::WebAXRoleNote, NSAccessibilityGroupRole }, |
121 { WebKit::WebAXRoleOutline, NSAccessibilityOutlineRole }, | 121 { blink::WebAXRoleOutline, NSAccessibilityOutlineRole }, |
122 { WebKit::WebAXRoleParagraph, NSAccessibilityGroupRole }, | 122 { blink::WebAXRoleParagraph, NSAccessibilityGroupRole }, |
123 { WebKit::WebAXRolePopUpButton, NSAccessibilityPopUpButtonRole }, | 123 { blink::WebAXRolePopUpButton, NSAccessibilityPopUpButtonRole }, |
124 { WebKit::WebAXRolePresentational, NSAccessibilityGroupRole }, | 124 { blink::WebAXRolePresentational, NSAccessibilityGroupRole }, |
125 { WebKit::WebAXRoleProgressIndicator, | 125 { blink::WebAXRoleProgressIndicator, |
126 NSAccessibilityProgressIndicatorRole }, | 126 NSAccessibilityProgressIndicatorRole }, |
127 { WebKit::WebAXRoleRadioButton, NSAccessibilityRadioButtonRole }, | 127 { blink::WebAXRoleRadioButton, NSAccessibilityRadioButtonRole }, |
128 { WebKit::WebAXRoleRadioGroup, NSAccessibilityRadioGroupRole }, | 128 { blink::WebAXRoleRadioGroup, NSAccessibilityRadioGroupRole }, |
129 { WebKit::WebAXRoleRegion, NSAccessibilityGroupRole }, | 129 { blink::WebAXRoleRegion, NSAccessibilityGroupRole }, |
130 { WebKit::WebAXRoleRootWebArea, @"AXWebArea" }, | 130 { blink::WebAXRoleRootWebArea, @"AXWebArea" }, |
131 { WebKit::WebAXRoleRow, NSAccessibilityRowRole }, | 131 { blink::WebAXRoleRow, NSAccessibilityRowRole }, |
132 { WebKit::WebAXRoleRowHeader, @"AXCell" }, | 132 { blink::WebAXRoleRowHeader, @"AXCell" }, |
133 { WebKit::WebAXRoleRuler, NSAccessibilityRulerRole }, | 133 { blink::WebAXRoleRuler, NSAccessibilityRulerRole }, |
134 { WebKit::WebAXRoleRulerMarker, NSAccessibilityRulerMarkerRole }, | 134 { blink::WebAXRoleRulerMarker, NSAccessibilityRulerMarkerRole }, |
135 // 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. |
136 // { WebKit::WebAXRoleScrollArea, NSAccessibilityScrollAreaRole }, | 136 // { blink::WebAXRoleScrollArea, NSAccessibilityScrollAreaRole }, |
137 { WebKit::WebAXRoleScrollBar, NSAccessibilityScrollBarRole }, | 137 { blink::WebAXRoleScrollBar, NSAccessibilityScrollBarRole }, |
138 { WebKit::WebAXRoleSheet, NSAccessibilitySheetRole }, | 138 { blink::WebAXRoleSheet, NSAccessibilitySheetRole }, |
139 { WebKit::WebAXRoleSlider, NSAccessibilitySliderRole }, | 139 { blink::WebAXRoleSlider, NSAccessibilitySliderRole }, |
140 { WebKit::WebAXRoleSliderThumb, NSAccessibilityValueIndicatorRole }, | 140 { blink::WebAXRoleSliderThumb, NSAccessibilityValueIndicatorRole }, |
141 { WebKit::WebAXRoleSpinButton, NSAccessibilitySliderRole }, | 141 { blink::WebAXRoleSpinButton, NSAccessibilitySliderRole }, |
142 { WebKit::WebAXRoleSplitter, NSAccessibilitySplitterRole }, | 142 { blink::WebAXRoleSplitter, NSAccessibilitySplitterRole }, |
143 { WebKit::WebAXRoleSplitGroup, NSAccessibilitySplitGroupRole }, | 143 { blink::WebAXRoleSplitGroup, NSAccessibilitySplitGroupRole }, |
144 { WebKit::WebAXRoleStaticText, NSAccessibilityStaticTextRole }, | 144 { blink::WebAXRoleStaticText, NSAccessibilityStaticTextRole }, |
145 { WebKit::WebAXRoleStatus, NSAccessibilityGroupRole }, | 145 { blink::WebAXRoleStatus, NSAccessibilityGroupRole }, |
146 { WebKit::WebAXRoleSVGRoot, NSAccessibilityGroupRole }, | 146 { blink::WebAXRoleSVGRoot, NSAccessibilityGroupRole }, |
147 { WebKit::WebAXRoleSystemWide, NSAccessibilityUnknownRole }, | 147 { blink::WebAXRoleSystemWide, NSAccessibilityUnknownRole }, |
148 { WebKit::WebAXRoleTab, NSAccessibilityRadioButtonRole }, | 148 { blink::WebAXRoleTab, NSAccessibilityRadioButtonRole }, |
149 { WebKit::WebAXRoleTabList, NSAccessibilityTabGroupRole }, | 149 { blink::WebAXRoleTabList, NSAccessibilityTabGroupRole }, |
150 { WebKit::WebAXRoleTabPanel, NSAccessibilityGroupRole }, | 150 { blink::WebAXRoleTabPanel, NSAccessibilityGroupRole }, |
151 { WebKit::WebAXRoleTable, NSAccessibilityTableRole }, | 151 { blink::WebAXRoleTable, NSAccessibilityTableRole }, |
152 { WebKit::WebAXRoleTableHeaderContainer, NSAccessibilityGroupRole }, | 152 { blink::WebAXRoleTableHeaderContainer, NSAccessibilityGroupRole }, |
153 { WebKit::WebAXRoleTextArea, NSAccessibilityTextAreaRole }, | 153 { blink::WebAXRoleTextArea, NSAccessibilityTextAreaRole }, |
154 { WebKit::WebAXRoleTextField, NSAccessibilityTextFieldRole }, | 154 { blink::WebAXRoleTextField, NSAccessibilityTextFieldRole }, |
155 { WebKit::WebAXRoleTimer, NSAccessibilityGroupRole }, | 155 { blink::WebAXRoleTimer, NSAccessibilityGroupRole }, |
156 { WebKit::WebAXRoleToggleButton, NSAccessibilityButtonRole }, | 156 { blink::WebAXRoleToggleButton, NSAccessibilityButtonRole }, |
157 { WebKit::WebAXRoleToolbar, NSAccessibilityToolbarRole }, | 157 { blink::WebAXRoleToolbar, NSAccessibilityToolbarRole }, |
158 { WebKit::WebAXRoleUserInterfaceTooltip, NSAccessibilityGroupRole }, | 158 { blink::WebAXRoleUserInterfaceTooltip, NSAccessibilityGroupRole }, |
159 { WebKit::WebAXRoleTree, NSAccessibilityOutlineRole }, | 159 { blink::WebAXRoleTree, NSAccessibilityOutlineRole }, |
160 { WebKit::WebAXRoleTreeGrid, NSAccessibilityTableRole }, | 160 { blink::WebAXRoleTreeGrid, NSAccessibilityTableRole }, |
161 { WebKit::WebAXRoleTreeItem, NSAccessibilityRowRole }, | 161 { blink::WebAXRoleTreeItem, NSAccessibilityRowRole }, |
162 { WebKit::WebAXRoleValueIndicator, NSAccessibilityValueIndicatorRole }, | 162 { blink::WebAXRoleValueIndicator, NSAccessibilityValueIndicatorRole }, |
163 { WebKit::WebAXRoleLink, NSAccessibilityLinkRole }, | 163 { blink::WebAXRoleLink, NSAccessibilityLinkRole }, |
164 { WebKit::WebAXRoleWebArea, @"AXWebArea" }, | 164 { blink::WebAXRoleWebArea, @"AXWebArea" }, |
165 { WebKit::WebAXRoleWindow, NSAccessibilityWindowRole }, | 165 { blink::WebAXRoleWindow, NSAccessibilityWindowRole }, |
166 }; | 166 }; |
167 | 167 |
168 RoleMap role_map; | 168 RoleMap role_map; |
169 for (size_t i = 0; i < arraysize(roles); ++i) | 169 for (size_t i = 0; i < arraysize(roles); ++i) |
170 role_map[roles[i].webKitValue] = roles[i].nativeValue; | 170 role_map[roles[i].webKitValue] = roles[i].nativeValue; |
171 return role_map; | 171 return role_map; |
172 } | 172 } |
173 | 173 |
174 // A mapping of webkit roles to native roles. | 174 // A mapping of webkit roles to native roles. |
175 NSString* NativeRoleFromAccessibilityNodeDataRole( | 175 NSString* NativeRoleFromAccessibilityNodeDataRole( |
176 const WebKit::WebAXRole& role) { | 176 const blink::WebAXRole& role) { |
177 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_role, | 177 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_role, |
178 (BuildRoleMap())); | 178 (BuildRoleMap())); |
179 RoleMap::iterator it = web_accessibility_to_native_role.find(role); | 179 RoleMap::iterator it = web_accessibility_to_native_role.find(role); |
180 if (it != web_accessibility_to_native_role.end()) | 180 if (it != web_accessibility_to_native_role.end()) |
181 return it->second; | 181 return it->second; |
182 else | 182 else |
183 return NSAccessibilityUnknownRole; | 183 return NSAccessibilityUnknownRole; |
184 } | 184 } |
185 | 185 |
186 RoleMap BuildSubroleMap() { | 186 RoleMap BuildSubroleMap() { |
187 const MapEntry subroles[] = { | 187 const MapEntry subroles[] = { |
188 { WebKit::WebAXRoleAlert, @"AXApplicationAlert" }, | 188 { blink::WebAXRoleAlert, @"AXApplicationAlert" }, |
189 { WebKit::WebAXRoleAlertDialog, @"AXApplicationAlertDialog" }, | 189 { blink::WebAXRoleAlertDialog, @"AXApplicationAlertDialog" }, |
190 { WebKit::WebAXRoleArticle, @"AXDocumentArticle" }, | 190 { blink::WebAXRoleArticle, @"AXDocumentArticle" }, |
191 { WebKit::WebAXRoleDefinition, @"AXDefinition" }, | 191 { blink::WebAXRoleDefinition, @"AXDefinition" }, |
192 { WebKit::WebAXRoleDescriptionListDetail, @"AXDescription" }, | 192 { blink::WebAXRoleDescriptionListDetail, @"AXDescription" }, |
193 { WebKit::WebAXRoleDescriptionListTerm, @"AXTerm" }, | 193 { blink::WebAXRoleDescriptionListTerm, @"AXTerm" }, |
194 { WebKit::WebAXRoleDialog, @"AXApplicationDialog" }, | 194 { blink::WebAXRoleDialog, @"AXApplicationDialog" }, |
195 { WebKit::WebAXRoleDocument, @"AXDocument" }, | 195 { blink::WebAXRoleDocument, @"AXDocument" }, |
196 { WebKit::WebAXRoleFooter, @"AXLandmarkContentInfo" }, | 196 { blink::WebAXRoleFooter, @"AXLandmarkContentInfo" }, |
197 { WebKit::WebAXRoleApplication, @"AXLandmarkApplication" }, | 197 { blink::WebAXRoleApplication, @"AXLandmarkApplication" }, |
198 { WebKit::WebAXRoleBanner, @"AXLandmarkBanner" }, | 198 { blink::WebAXRoleBanner, @"AXLandmarkBanner" }, |
199 { WebKit::WebAXRoleComplementary, @"AXLandmarkComplementary" }, | 199 { blink::WebAXRoleComplementary, @"AXLandmarkComplementary" }, |
200 { WebKit::WebAXRoleContentInfo, @"AXLandmarkContentInfo" }, | 200 { blink::WebAXRoleContentInfo, @"AXLandmarkContentInfo" }, |
201 { WebKit::WebAXRoleMain, @"AXLandmarkMain" }, | 201 { blink::WebAXRoleMain, @"AXLandmarkMain" }, |
202 { WebKit::WebAXRoleNavigation, @"AXLandmarkNavigation" }, | 202 { blink::WebAXRoleNavigation, @"AXLandmarkNavigation" }, |
203 { WebKit::WebAXRoleSearch, @"AXLandmarkSearch" }, | 203 { blink::WebAXRoleSearch, @"AXLandmarkSearch" }, |
204 { WebKit::WebAXRoleLog, @"AXApplicationLog" }, | 204 { blink::WebAXRoleLog, @"AXApplicationLog" }, |
205 { WebKit::WebAXRoleMarquee, @"AXApplicationMarquee" }, | 205 { blink::WebAXRoleMarquee, @"AXApplicationMarquee" }, |
206 { WebKit::WebAXRoleMath, @"AXDocumentMath" }, | 206 { blink::WebAXRoleMath, @"AXDocumentMath" }, |
207 { WebKit::WebAXRoleNote, @"AXDocumentNote" }, | 207 { blink::WebAXRoleNote, @"AXDocumentNote" }, |
208 { WebKit::WebAXRoleRegion, @"AXDocumentRegion" }, | 208 { blink::WebAXRoleRegion, @"AXDocumentRegion" }, |
209 { WebKit::WebAXRoleStatus, @"AXApplicationStatus" }, | 209 { blink::WebAXRoleStatus, @"AXApplicationStatus" }, |
210 { WebKit::WebAXRoleTabPanel, @"AXTabPanel" }, | 210 { blink::WebAXRoleTabPanel, @"AXTabPanel" }, |
211 { WebKit::WebAXRoleTimer, @"AXApplicationTimer" }, | 211 { blink::WebAXRoleTimer, @"AXApplicationTimer" }, |
212 { WebKit::WebAXRoleUserInterfaceTooltip, @"AXUserInterfaceTooltip" }, | 212 { blink::WebAXRoleUserInterfaceTooltip, @"AXUserInterfaceTooltip" }, |
213 { WebKit::WebAXRoleTreeItem, NSAccessibilityOutlineRowSubrole }, | 213 { blink::WebAXRoleTreeItem, NSAccessibilityOutlineRowSubrole }, |
214 }; | 214 }; |
215 | 215 |
216 RoleMap subrole_map; | 216 RoleMap subrole_map; |
217 for (size_t i = 0; i < arraysize(subroles); ++i) | 217 for (size_t i = 0; i < arraysize(subroles); ++i) |
218 subrole_map[subroles[i].webKitValue] = subroles[i].nativeValue; | 218 subrole_map[subroles[i].webKitValue] = subroles[i].nativeValue; |
219 return subrole_map; | 219 return subrole_map; |
220 } | 220 } |
221 | 221 |
222 // A mapping of webkit roles to native subroles. | 222 // A mapping of webkit roles to native subroles. |
223 NSString* NativeSubroleFromAccessibilityNodeDataRole( | 223 NSString* NativeSubroleFromAccessibilityNodeDataRole( |
224 const WebKit::WebAXRole& role) { | 224 const blink::WebAXRole& role) { |
225 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_subrole, | 225 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_subrole, |
226 (BuildSubroleMap())); | 226 (BuildSubroleMap())); |
227 RoleMap::iterator it = web_accessibility_to_native_subrole.find(role); | 227 RoleMap::iterator it = web_accessibility_to_native_subrole.find(role); |
228 if (it != web_accessibility_to_native_subrole.end()) | 228 if (it != web_accessibility_to_native_subrole.end()) |
229 return it->second; | 229 return it->second; |
230 else | 230 else |
231 return nil; | 231 return nil; |
232 } | 232 } |
233 | 233 |
234 // A mapping from an accessibility attribute to its method name. | 234 // A mapping from an accessibility attribute to its method name. |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 - (void)childrenChanged { | 389 - (void)childrenChanged { |
390 if (![self isIgnored]) { | 390 if (![self isIgnored]) { |
391 children_.reset(); | 391 children_.reset(); |
392 } else { | 392 } else { |
393 [browserAccessibility_->parent()->ToBrowserAccessibilityCocoa() | 393 [browserAccessibility_->parent()->ToBrowserAccessibilityCocoa() |
394 childrenChanged]; | 394 childrenChanged]; |
395 } | 395 } |
396 } | 396 } |
397 | 397 |
398 - (NSArray*)columnHeaders { | 398 - (NSArray*)columnHeaders { |
399 if ([self internalRole] != WebKit::WebAXRoleTable && | 399 if ([self internalRole] != blink::WebAXRoleTable && |
400 [self internalRole] != WebKit::WebAXRoleGrid) { | 400 [self internalRole] != blink::WebAXRoleGrid) { |
401 return nil; | 401 return nil; |
402 } | 402 } |
403 | 403 |
404 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; | 404 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; |
405 const std::vector<int32>& uniqueCellIds = | 405 const std::vector<int32>& uniqueCellIds = |
406 browserAccessibility_->GetIntListAttribute( | 406 browserAccessibility_->GetIntListAttribute( |
407 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); | 407 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); |
408 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { | 408 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { |
409 int id = uniqueCellIds[i]; | 409 int id = uniqueCellIds[i]; |
410 BrowserAccessibility* cell = | 410 BrowserAccessibility* cell = |
411 browserAccessibility_->manager()->GetFromRendererID(id); | 411 browserAccessibility_->manager()->GetFromRendererID(id); |
412 if (cell && cell->role() == WebKit::WebAXRoleColumnHeader) | 412 if (cell && cell->role() == blink::WebAXRoleColumnHeader) |
413 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; | 413 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; |
414 } | 414 } |
415 return ret; | 415 return ret; |
416 } | 416 } |
417 | 417 |
418 - (NSValue*)columnIndexRange { | 418 - (NSValue*)columnIndexRange { |
419 if ([self internalRole] != WebKit::WebAXRoleCell) | 419 if ([self internalRole] != blink::WebAXRoleCell) |
420 return nil; | 420 return nil; |
421 | 421 |
422 int column = -1; | 422 int column = -1; |
423 int colspan = -1; | 423 int colspan = -1; |
424 browserAccessibility_->GetIntAttribute( | 424 browserAccessibility_->GetIntAttribute( |
425 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column); | 425 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column); |
426 browserAccessibility_->GetIntAttribute( | 426 browserAccessibility_->GetIntAttribute( |
427 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan); | 427 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan); |
428 if (column >= 0 && colspan >= 1) | 428 if (column >= 0 && colspan >= 1) |
429 return [NSValue valueWithRange:NSMakeRange(column, colspan)]; | 429 return [NSValue valueWithRange:NSMakeRange(column, colspan)]; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 size_t leftIndex = url.rfind('/'); | 467 size_t leftIndex = url.rfind('/'); |
468 std::string basename = | 468 std::string basename = |
469 leftIndex != std::string::npos ? url.substr(leftIndex) : url; | 469 leftIndex != std::string::npos ? url.substr(leftIndex) : url; |
470 return base::SysUTF8ToNSString(basename); | 470 return base::SysUTF8ToNSString(basename); |
471 } | 471 } |
472 | 472 |
473 return @""; | 473 return @""; |
474 } | 474 } |
475 | 475 |
476 - (NSNumber*)disclosing { | 476 - (NSNumber*)disclosing { |
477 if ([self internalRole] == WebKit::WebAXRoleTreeItem) { | 477 if ([self internalRole] == blink::WebAXRoleTreeItem) { |
478 return [NSNumber numberWithBool: | 478 return [NSNumber numberWithBool: |
479 GetState(browserAccessibility_, WebKit::WebAXStateExpanded)]; | 479 GetState(browserAccessibility_, blink::WebAXStateExpanded)]; |
480 } else { | 480 } else { |
481 return nil; | 481 return nil; |
482 } | 482 } |
483 } | 483 } |
484 | 484 |
485 - (id)disclosedByRow { | 485 - (id)disclosedByRow { |
486 // The row that contains this row. | 486 // The row that contains this row. |
487 // It should be the same as the first parent that is a treeitem. | 487 // It should be the same as the first parent that is a treeitem. |
488 return nil; | 488 return nil; |
489 } | 489 } |
490 | 490 |
491 - (NSNumber*)disclosureLevel { | 491 - (NSNumber*)disclosureLevel { |
492 WebKit::WebAXRole role = [self internalRole]; | 492 blink::WebAXRole role = [self internalRole]; |
493 if (role == WebKit::WebAXRoleRow || | 493 if (role == blink::WebAXRoleRow || |
494 role == WebKit::WebAXRoleTreeItem) { | 494 role == blink::WebAXRoleTreeItem) { |
495 int level = browserAccessibility_->GetIntAttribute( | 495 int level = browserAccessibility_->GetIntAttribute( |
496 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL); | 496 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL); |
497 // Mac disclosureLevel is 0-based, but web levels are 1-based. | 497 // Mac disclosureLevel is 0-based, but web levels are 1-based. |
498 if (level > 0) | 498 if (level > 0) |
499 level--; | 499 level--; |
500 return [NSNumber numberWithInt:level]; | 500 return [NSNumber numberWithInt:level]; |
501 } else { | 501 } else { |
502 return nil; | 502 return nil; |
503 } | 503 } |
504 } | 504 } |
505 | 505 |
506 - (id)disclosedRows { | 506 - (id)disclosedRows { |
507 // The rows that are considered inside this row. | 507 // The rows that are considered inside this row. |
508 return nil; | 508 return nil; |
509 } | 509 } |
510 | 510 |
511 - (NSNumber*)enabled { | 511 - (NSNumber*)enabled { |
512 return [NSNumber numberWithBool: | 512 return [NSNumber numberWithBool: |
513 GetState(browserAccessibility_, WebKit::WebAXStateEnabled)]; | 513 GetState(browserAccessibility_, blink::WebAXStateEnabled)]; |
514 } | 514 } |
515 | 515 |
516 - (NSNumber*)focused { | 516 - (NSNumber*)focused { |
517 BrowserAccessibilityManager* manager = browserAccessibility_->manager(); | 517 BrowserAccessibilityManager* manager = browserAccessibility_->manager(); |
518 NSNumber* ret = [NSNumber numberWithBool: | 518 NSNumber* ret = [NSNumber numberWithBool: |
519 manager->GetFocus(NULL) == browserAccessibility_]; | 519 manager->GetFocus(NULL) == browserAccessibility_]; |
520 return ret; | 520 return ret; |
521 } | 521 } |
522 | 522 |
523 - (id)header { | 523 - (id)header { |
524 int headerElementId = -1; | 524 int headerElementId = -1; |
525 if ([self internalRole] == WebKit::WebAXRoleTable || | 525 if ([self internalRole] == blink::WebAXRoleTable || |
526 [self internalRole] == WebKit::WebAXRoleGrid) { | 526 [self internalRole] == blink::WebAXRoleGrid) { |
527 browserAccessibility_->GetIntAttribute( | 527 browserAccessibility_->GetIntAttribute( |
528 AccessibilityNodeData::ATTR_TABLE_HEADER_ID, &headerElementId); | 528 AccessibilityNodeData::ATTR_TABLE_HEADER_ID, &headerElementId); |
529 } else if ([self internalRole] == WebKit::WebAXRoleColumn) { | 529 } else if ([self internalRole] == blink::WebAXRoleColumn) { |
530 browserAccessibility_->GetIntAttribute( | 530 browserAccessibility_->GetIntAttribute( |
531 AccessibilityNodeData::ATTR_TABLE_COLUMN_HEADER_ID, &headerElementId); | 531 AccessibilityNodeData::ATTR_TABLE_COLUMN_HEADER_ID, &headerElementId); |
532 } else if ([self internalRole] == WebKit::WebAXRoleRow) { | 532 } else if ([self internalRole] == blink::WebAXRoleRow) { |
533 browserAccessibility_->GetIntAttribute( | 533 browserAccessibility_->GetIntAttribute( |
534 AccessibilityNodeData::ATTR_TABLE_ROW_HEADER_ID, &headerElementId); | 534 AccessibilityNodeData::ATTR_TABLE_ROW_HEADER_ID, &headerElementId); |
535 } | 535 } |
536 | 536 |
537 if (headerElementId > 0) { | 537 if (headerElementId > 0) { |
538 BrowserAccessibility* headerObject = | 538 BrowserAccessibility* headerObject = |
539 browserAccessibility_->manager()->GetFromRendererID(headerElementId); | 539 browserAccessibility_->manager()->GetFromRendererID(headerElementId); |
540 if (headerObject) | 540 if (headerObject) |
541 return headerObject->ToBrowserAccessibilityCocoa(); | 541 return headerObject->ToBrowserAccessibilityCocoa(); |
542 } | 542 } |
543 return nil; | 543 return nil; |
544 } | 544 } |
545 | 545 |
546 - (NSString*)help { | 546 - (NSString*)help { |
547 return NSStringForStringAttribute( | 547 return NSStringForStringAttribute( |
548 browserAccessibility_, AccessibilityNodeData::ATTR_HELP); | 548 browserAccessibility_, AccessibilityNodeData::ATTR_HELP); |
549 } | 549 } |
550 | 550 |
551 - (NSNumber*)index { | 551 - (NSNumber*)index { |
552 if ([self internalRole] == WebKit::WebAXRoleColumn) { | 552 if ([self internalRole] == blink::WebAXRoleColumn) { |
553 int columnIndex = browserAccessibility_->GetIntAttribute( | 553 int columnIndex = browserAccessibility_->GetIntAttribute( |
554 AccessibilityNodeData::ATTR_TABLE_COLUMN_INDEX); | 554 AccessibilityNodeData::ATTR_TABLE_COLUMN_INDEX); |
555 return [NSNumber numberWithInt:columnIndex]; | 555 return [NSNumber numberWithInt:columnIndex]; |
556 } else if ([self internalRole] == WebKit::WebAXRoleRow) { | 556 } else if ([self internalRole] == blink::WebAXRoleRow) { |
557 int rowIndex = browserAccessibility_->GetIntAttribute( | 557 int rowIndex = browserAccessibility_->GetIntAttribute( |
558 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX); | 558 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX); |
559 return [NSNumber numberWithInt:rowIndex]; | 559 return [NSNumber numberWithInt:rowIndex]; |
560 } | 560 } |
561 | 561 |
562 return nil; | 562 return nil; |
563 } | 563 } |
564 | 564 |
565 // Returns whether or not this node should be ignored in the | 565 // Returns whether or not this node should be ignored in the |
566 // accessibility tree. | 566 // accessibility tree. |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 | 598 |
599 - (NSNumber*)minValue { | 599 - (NSNumber*)minValue { |
600 float floatValue = browserAccessibility_->GetFloatAttribute( | 600 float floatValue = browserAccessibility_->GetFloatAttribute( |
601 AccessibilityNodeData::ATTR_MIN_VALUE_FOR_RANGE); | 601 AccessibilityNodeData::ATTR_MIN_VALUE_FOR_RANGE); |
602 return [NSNumber numberWithFloat:floatValue]; | 602 return [NSNumber numberWithFloat:floatValue]; |
603 } | 603 } |
604 | 604 |
605 - (NSString*)orientation { | 605 - (NSString*)orientation { |
606 // We present a spin button as a vertical slider, with a role description | 606 // We present a spin button as a vertical slider, with a role description |
607 // of "spin button". | 607 // of "spin button". |
608 if ([self internalRole] == WebKit::WebAXRoleSpinButton) | 608 if ([self internalRole] == blink::WebAXRoleSpinButton) |
609 return NSAccessibilityVerticalOrientationValue; | 609 return NSAccessibilityVerticalOrientationValue; |
610 | 610 |
611 if (GetState(browserAccessibility_, WebKit::WebAXStateVertical)) | 611 if (GetState(browserAccessibility_, blink::WebAXStateVertical)) |
612 return NSAccessibilityVerticalOrientationValue; | 612 return NSAccessibilityVerticalOrientationValue; |
613 else | 613 else |
614 return NSAccessibilityHorizontalOrientationValue; | 614 return NSAccessibilityHorizontalOrientationValue; |
615 } | 615 } |
616 | 616 |
617 - (NSNumber*)numberOfCharacters { | 617 - (NSNumber*)numberOfCharacters { |
618 return [NSNumber numberWithInt:browserAccessibility_->value().length()]; | 618 return [NSNumber numberWithInt:browserAccessibility_->value().length()]; |
619 } | 619 } |
620 | 620 |
621 // The origin of this accessibility object in the page's document. | 621 // The origin of this accessibility object in the page's document. |
(...skipping 17 matching lines...) Expand all Loading... |
639 return manager->parent_view(); | 639 return manager->parent_view(); |
640 } | 640 } |
641 } | 641 } |
642 | 642 |
643 - (NSValue*)position { | 643 - (NSValue*)position { |
644 return [NSValue valueWithPoint:[delegate_ accessibilityPointInScreen:self]]; | 644 return [NSValue valueWithPoint:[delegate_ accessibilityPointInScreen:self]]; |
645 } | 645 } |
646 | 646 |
647 - (NSNumber*)required { | 647 - (NSNumber*)required { |
648 return [NSNumber numberWithBool: | 648 return [NSNumber numberWithBool: |
649 GetState(browserAccessibility_, WebKit::WebAXStateRequired)]; | 649 GetState(browserAccessibility_, blink::WebAXStateRequired)]; |
650 } | 650 } |
651 | 651 |
652 // Returns an enum indicating the role from browserAccessibility_. | 652 // Returns an enum indicating the role from browserAccessibility_. |
653 - (WebKit::WebAXRole)internalRole { | 653 - (blink::WebAXRole)internalRole { |
654 return static_cast<WebKit::WebAXRole>(browserAccessibility_->role()); | 654 return static_cast<blink::WebAXRole>(browserAccessibility_->role()); |
655 } | 655 } |
656 | 656 |
657 // Returns a string indicating the NSAccessibility role of this object. | 657 // Returns a string indicating the NSAccessibility role of this object. |
658 - (NSString*)role { | 658 - (NSString*)role { |
659 WebKit::WebAXRole role = [self internalRole]; | 659 blink::WebAXRole role = [self internalRole]; |
660 if (role == WebKit::WebAXRoleCanvas && | 660 if (role == blink::WebAXRoleCanvas && |
661 browserAccessibility_->GetBoolAttribute( | 661 browserAccessibility_->GetBoolAttribute( |
662 AccessibilityNodeData::ATTR_CANVAS_HAS_FALLBACK)) { | 662 AccessibilityNodeData::ATTR_CANVAS_HAS_FALLBACK)) { |
663 return NSAccessibilityGroupRole; | 663 return NSAccessibilityGroupRole; |
664 } | 664 } |
665 return NativeRoleFromAccessibilityNodeDataRole(role); | 665 return NativeRoleFromAccessibilityNodeDataRole(role); |
666 } | 666 } |
667 | 667 |
668 // Returns a string indicating the role description of this object. | 668 // Returns a string indicating the role description of this object. |
669 - (NSString*)roleDescription { | 669 - (NSString*)roleDescription { |
670 NSString* role = [self role]; | 670 NSString* role = [self role]; |
(...skipping 13 matching lines...) Expand all Loading... |
684 | 684 |
685 if ([role isEqualToString:@"AXHeading"]) { | 685 if ([role isEqualToString:@"AXHeading"]) { |
686 return base::SysUTF16ToNSString(content_client->GetLocalizedString( | 686 return base::SysUTF16ToNSString(content_client->GetLocalizedString( |
687 IDS_AX_ROLE_HEADING)); | 687 IDS_AX_ROLE_HEADING)); |
688 } | 688 } |
689 | 689 |
690 if ([role isEqualToString:NSAccessibilityGroupRole] || | 690 if ([role isEqualToString:NSAccessibilityGroupRole] || |
691 [role isEqualToString:NSAccessibilityRadioButtonRole]) { | 691 [role isEqualToString:NSAccessibilityRadioButtonRole]) { |
692 std::string role; | 692 std::string role; |
693 if (browserAccessibility_->GetHtmlAttribute("role", &role)) { | 693 if (browserAccessibility_->GetHtmlAttribute("role", &role)) { |
694 WebKit::WebAXRole internalRole = [self internalRole]; | 694 blink::WebAXRole internalRole = [self internalRole]; |
695 if ((internalRole != WebKit::WebAXRoleGroup && | 695 if ((internalRole != blink::WebAXRoleGroup && |
696 internalRole != WebKit::WebAXRoleListItem) || | 696 internalRole != blink::WebAXRoleListItem) || |
697 internalRole == WebKit::WebAXRoleTab) { | 697 internalRole == blink::WebAXRoleTab) { |
698 // TODO(dtseng): This is not localized; see crbug/84814. | 698 // TODO(dtseng): This is not localized; see crbug/84814. |
699 return base::SysUTF8ToNSString(role); | 699 return base::SysUTF8ToNSString(role); |
700 } | 700 } |
701 } | 701 } |
702 } | 702 } |
703 | 703 |
704 switch([self internalRole]) { | 704 switch([self internalRole]) { |
705 case WebKit::WebAXRoleFooter: | 705 case blink::WebAXRoleFooter: |
706 return base::SysUTF16ToNSString(content_client->GetLocalizedString( | 706 return base::SysUTF16ToNSString(content_client->GetLocalizedString( |
707 IDS_AX_ROLE_FOOTER)); | 707 IDS_AX_ROLE_FOOTER)); |
708 case WebKit::WebAXRoleSpinButton: | 708 case blink::WebAXRoleSpinButton: |
709 // This control is similar to what VoiceOver calls a "stepper". | 709 // This control is similar to what VoiceOver calls a "stepper". |
710 return base::SysUTF16ToNSString(content_client->GetLocalizedString( | 710 return base::SysUTF16ToNSString(content_client->GetLocalizedString( |
711 IDS_AX_ROLE_STEPPER)); | 711 IDS_AX_ROLE_STEPPER)); |
712 default: | 712 default: |
713 break; | 713 break; |
714 } | 714 } |
715 | 715 |
716 return NSAccessibilityRoleDescription(role, nil); | 716 return NSAccessibilityRoleDescription(role, nil); |
717 } | 717 } |
718 | 718 |
719 - (NSArray*)rowHeaders { | 719 - (NSArray*)rowHeaders { |
720 if ([self internalRole] != WebKit::WebAXRoleTable && | 720 if ([self internalRole] != blink::WebAXRoleTable && |
721 [self internalRole] != WebKit::WebAXRoleGrid) { | 721 [self internalRole] != blink::WebAXRoleGrid) { |
722 return nil; | 722 return nil; |
723 } | 723 } |
724 | 724 |
725 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; | 725 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; |
726 const std::vector<int32>& uniqueCellIds = | 726 const std::vector<int32>& uniqueCellIds = |
727 browserAccessibility_->GetIntListAttribute( | 727 browserAccessibility_->GetIntListAttribute( |
728 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); | 728 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); |
729 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { | 729 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { |
730 int id = uniqueCellIds[i]; | 730 int id = uniqueCellIds[i]; |
731 BrowserAccessibility* cell = | 731 BrowserAccessibility* cell = |
732 browserAccessibility_->manager()->GetFromRendererID(id); | 732 browserAccessibility_->manager()->GetFromRendererID(id); |
733 if (cell && cell->role() == WebKit::WebAXRoleRowHeader) | 733 if (cell && cell->role() == blink::WebAXRoleRowHeader) |
734 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; | 734 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; |
735 } | 735 } |
736 return ret; | 736 return ret; |
737 } | 737 } |
738 | 738 |
739 - (NSValue*)rowIndexRange { | 739 - (NSValue*)rowIndexRange { |
740 if ([self internalRole] != WebKit::WebAXRoleCell) | 740 if ([self internalRole] != blink::WebAXRoleCell) |
741 return nil; | 741 return nil; |
742 | 742 |
743 int row = -1; | 743 int row = -1; |
744 int rowspan = -1; | 744 int rowspan = -1; |
745 browserAccessibility_->GetIntAttribute( | 745 browserAccessibility_->GetIntAttribute( |
746 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row); | 746 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row); |
747 browserAccessibility_->GetIntAttribute( | 747 browserAccessibility_->GetIntAttribute( |
748 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan); | 748 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan); |
749 if (row >= 0 && rowspan >= 1) | 749 if (row >= 0 && rowspan >= 1) |
750 return [NSValue valueWithRange:NSMakeRange(row, rowspan)]; | 750 return [NSValue valueWithRange:NSMakeRange(row, rowspan)]; |
751 return nil; | 751 return nil; |
752 } | 752 } |
753 | 753 |
754 - (NSArray*)rows { | 754 - (NSArray*)rows { |
755 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; | 755 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; |
756 | 756 |
757 if ([self internalRole] == WebKit::WebAXRoleTable|| | 757 if ([self internalRole] == blink::WebAXRoleTable|| |
758 [self internalRole] == WebKit::WebAXRoleGrid) { | 758 [self internalRole] == blink::WebAXRoleGrid) { |
759 for (BrowserAccessibilityCocoa* child in [self children]) { | 759 for (BrowserAccessibilityCocoa* child in [self children]) { |
760 if ([[child role] isEqualToString:NSAccessibilityRowRole]) | 760 if ([[child role] isEqualToString:NSAccessibilityRowRole]) |
761 [ret addObject:child]; | 761 [ret addObject:child]; |
762 } | 762 } |
763 } else if ([self internalRole] == WebKit::WebAXRoleColumn) { | 763 } else if ([self internalRole] == blink::WebAXRoleColumn) { |
764 const std::vector<int32>& indirectChildIds = | 764 const std::vector<int32>& indirectChildIds = |
765 browserAccessibility_->GetIntListAttribute( | 765 browserAccessibility_->GetIntListAttribute( |
766 AccessibilityNodeData::ATTR_INDIRECT_CHILD_IDS); | 766 AccessibilityNodeData::ATTR_INDIRECT_CHILD_IDS); |
767 for (uint32 i = 0; i < indirectChildIds.size(); ++i) { | 767 for (uint32 i = 0; i < indirectChildIds.size(); ++i) { |
768 int id = indirectChildIds[i]; | 768 int id = indirectChildIds[i]; |
769 BrowserAccessibility* rowElement = | 769 BrowserAccessibility* rowElement = |
770 browserAccessibility_->manager()->GetFromRendererID(id); | 770 browserAccessibility_->manager()->GetFromRendererID(id); |
771 if (rowElement) | 771 if (rowElement) |
772 [ret addObject:rowElement->ToBrowserAccessibilityCocoa()]; | 772 [ret addObject:rowElement->ToBrowserAccessibilityCocoa()]; |
773 } | 773 } |
774 } | 774 } |
775 | 775 |
776 return ret; | 776 return ret; |
777 } | 777 } |
778 | 778 |
779 // Returns the size of this object. | 779 // Returns the size of this object. |
780 - (NSValue*)size { | 780 - (NSValue*)size { |
781 gfx::Rect bounds = browserAccessibility_->GetLocalBoundsRect(); | 781 gfx::Rect bounds = browserAccessibility_->GetLocalBoundsRect(); |
782 return [NSValue valueWithSize:NSMakeSize(bounds.width(), bounds.height())]; | 782 return [NSValue valueWithSize:NSMakeSize(bounds.width(), bounds.height())]; |
783 } | 783 } |
784 | 784 |
785 // Returns a subrole based upon the role. | 785 // Returns a subrole based upon the role. |
786 - (NSString*) subrole { | 786 - (NSString*) subrole { |
787 WebKit::WebAXRole browserAccessibilityRole = [self internalRole]; | 787 blink::WebAXRole browserAccessibilityRole = [self internalRole]; |
788 if (browserAccessibilityRole == WebKit::WebAXRoleTextField && | 788 if (browserAccessibilityRole == blink::WebAXRoleTextField && |
789 GetState(browserAccessibility_, WebKit::WebAXStateProtected)) { | 789 GetState(browserAccessibility_, blink::WebAXStateProtected)) { |
790 return @"AXSecureTextField"; | 790 return @"AXSecureTextField"; |
791 } | 791 } |
792 | 792 |
793 NSString* htmlTag = NSStringForStringAttribute( | 793 NSString* htmlTag = NSStringForStringAttribute( |
794 browserAccessibility_, AccessibilityNodeData::ATTR_HTML_TAG); | 794 browserAccessibility_, AccessibilityNodeData::ATTR_HTML_TAG); |
795 | 795 |
796 if (browserAccessibilityRole == WebKit::WebAXRoleList) { | 796 if (browserAccessibilityRole == blink::WebAXRoleList) { |
797 if ([htmlTag isEqualToString:@"ul"] || | 797 if ([htmlTag isEqualToString:@"ul"] || |
798 [htmlTag isEqualToString:@"ol"]) { | 798 [htmlTag isEqualToString:@"ol"]) { |
799 return @"AXContentList"; | 799 return @"AXContentList"; |
800 } else if ([htmlTag isEqualToString:@"dl"]) { | 800 } else if ([htmlTag isEqualToString:@"dl"]) { |
801 return @"AXDescriptionList"; | 801 return @"AXDescriptionList"; |
802 } | 802 } |
803 } | 803 } |
804 | 804 |
805 return NativeSubroleFromAccessibilityNodeDataRole(browserAccessibilityRole); | 805 return NativeSubroleFromAccessibilityNodeDataRole(browserAccessibilityRole); |
806 } | 806 } |
807 | 807 |
808 // Returns all tabs in this subtree. | 808 // Returns all tabs in this subtree. |
809 - (NSArray*)tabs { | 809 - (NSArray*)tabs { |
810 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease]; | 810 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease]; |
811 | 811 |
812 if ([self internalRole] == WebKit::WebAXRoleTab) | 812 if ([self internalRole] == blink::WebAXRoleTab) |
813 [tabSubtree addObject:self]; | 813 [tabSubtree addObject:self]; |
814 | 814 |
815 for (uint i=0; i < [[self children] count]; ++i) { | 815 for (uint i=0; i < [[self children] count]; ++i) { |
816 NSArray* tabChildren = [[[self children] objectAtIndex:i] tabs]; | 816 NSArray* tabChildren = [[[self children] objectAtIndex:i] tabs]; |
817 if ([tabChildren count] > 0) | 817 if ([tabChildren count] > 0) |
818 [tabSubtree addObjectsFromArray:tabChildren]; | 818 [tabSubtree addObjectsFromArray:tabChildren]; |
819 } | 819 } |
820 | 820 |
821 return tabSubtree; | 821 return tabSubtree; |
822 } | 822 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
857 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL, &level)) { | 857 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL, &level)) { |
858 return [NSNumber numberWithInt:level]; | 858 return [NSNumber numberWithInt:level]; |
859 } | 859 } |
860 } else if ([role isEqualToString:NSAccessibilityButtonRole]) { | 860 } else if ([role isEqualToString:NSAccessibilityButtonRole]) { |
861 // AXValue does not make sense for pure buttons. | 861 // AXValue does not make sense for pure buttons. |
862 return @""; | 862 return @""; |
863 } else if ([role isEqualToString:NSAccessibilityCheckBoxRole] || | 863 } else if ([role isEqualToString:NSAccessibilityCheckBoxRole] || |
864 [role isEqualToString:NSAccessibilityRadioButtonRole]) { | 864 [role isEqualToString:NSAccessibilityRadioButtonRole]) { |
865 int value = 0; | 865 int value = 0; |
866 value = GetState( | 866 value = GetState( |
867 browserAccessibility_, WebKit::WebAXStateChecked) ? 1 : 0; | 867 browserAccessibility_, blink::WebAXStateChecked) ? 1 : 0; |
868 value = GetState( | 868 value = GetState( |
869 browserAccessibility_, WebKit::WebAXStateSelected) ? | 869 browserAccessibility_, blink::WebAXStateSelected) ? |
870 1 : | 870 1 : |
871 value; | 871 value; |
872 | 872 |
873 if (browserAccessibility_->GetBoolAttribute( | 873 if (browserAccessibility_->GetBoolAttribute( |
874 AccessibilityNodeData::ATTR_BUTTON_MIXED)) { | 874 AccessibilityNodeData::ATTR_BUTTON_MIXED)) { |
875 value = 2; | 875 value = 2; |
876 } | 876 } |
877 return [NSNumber numberWithInt:value]; | 877 return [NSNumber numberWithInt:value]; |
878 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] || | 878 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] || |
879 [role isEqualToString:NSAccessibilitySliderRole] || | 879 [role isEqualToString:NSAccessibilitySliderRole] || |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
927 - (NSArray*)visibleColumns { | 927 - (NSArray*)visibleColumns { |
928 return [self columns]; | 928 return [self columns]; |
929 } | 929 } |
930 | 930 |
931 - (NSArray*)visibleRows { | 931 - (NSArray*)visibleRows { |
932 return [self rows]; | 932 return [self rows]; |
933 } | 933 } |
934 | 934 |
935 - (NSNumber*)visited { | 935 - (NSNumber*)visited { |
936 return [NSNumber numberWithBool: | 936 return [NSNumber numberWithBool: |
937 GetState(browserAccessibility_, WebKit::WebAXStateVisited)]; | 937 GetState(browserAccessibility_, blink::WebAXStateVisited)]; |
938 } | 938 } |
939 | 939 |
940 - (id)window { | 940 - (id)window { |
941 return [delegate_ window]; | 941 return [delegate_ window]; |
942 } | 942 } |
943 | 943 |
944 - (NSString*)methodNameForAttribute:(NSString*)attribute { | 944 - (NSString*)methodNameForAttribute:(NSString*)attribute { |
945 return [attributeToMethodNameMap objectForKey:attribute]; | 945 return [attributeToMethodNameMap objectForKey:attribute]; |
946 } | 946 } |
947 | 947 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1025 if (line_index < 0 || line_index >= line_count) | 1025 if (line_index < 0 || line_index >= line_count) |
1026 return nil; | 1026 return nil; |
1027 int start = line_index > 0 ? line_breaks[line_index - 1] : 0; | 1027 int start = line_index > 0 ? line_breaks[line_index - 1] : 0; |
1028 int end = line_index < line_count - 1 ? line_breaks[line_index] : len; | 1028 int end = line_index < line_count - 1 ? line_breaks[line_index] : len; |
1029 return [NSValue valueWithRange: | 1029 return [NSValue valueWithRange: |
1030 NSMakeRange(start, end - start)]; | 1030 NSMakeRange(start, end - start)]; |
1031 } | 1031 } |
1032 | 1032 |
1033 if ([attribute isEqualToString: | 1033 if ([attribute isEqualToString: |
1034 NSAccessibilityCellForColumnAndRowParameterizedAttribute]) { | 1034 NSAccessibilityCellForColumnAndRowParameterizedAttribute]) { |
1035 if ([self internalRole] != WebKit::WebAXRoleTable && | 1035 if ([self internalRole] != blink::WebAXRoleTable && |
1036 [self internalRole] != WebKit::WebAXRoleGrid) { | 1036 [self internalRole] != blink::WebAXRoleGrid) { |
1037 return nil; | 1037 return nil; |
1038 } | 1038 } |
1039 if (![parameter isKindOfClass:[NSArray self]]) | 1039 if (![parameter isKindOfClass:[NSArray self]]) |
1040 return nil; | 1040 return nil; |
1041 NSArray* array = parameter; | 1041 NSArray* array = parameter; |
1042 int column = [[array objectAtIndex:0] intValue]; | 1042 int column = [[array objectAtIndex:0] intValue]; |
1043 int row = [[array objectAtIndex:1] intValue]; | 1043 int row = [[array objectAtIndex:1] intValue]; |
1044 int num_columns = browserAccessibility_->GetIntAttribute( | 1044 int num_columns = browserAccessibility_->GetIntAttribute( |
1045 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT); | 1045 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT); |
1046 int num_rows = browserAccessibility_->GetIntAttribute( | 1046 int num_rows = browserAccessibility_->GetIntAttribute( |
1047 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT); | 1047 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT); |
1048 if (column < 0 || column >= num_columns || | 1048 if (column < 0 || column >= num_columns || |
1049 row < 0 || row >= num_rows) { | 1049 row < 0 || row >= num_rows) { |
1050 return nil; | 1050 return nil; |
1051 } | 1051 } |
1052 for (size_t i = 0; | 1052 for (size_t i = 0; |
1053 i < browserAccessibility_->PlatformChildCount(); | 1053 i < browserAccessibility_->PlatformChildCount(); |
1054 ++i) { | 1054 ++i) { |
1055 BrowserAccessibility* child = browserAccessibility_->PlatformGetChild(i); | 1055 BrowserAccessibility* child = browserAccessibility_->PlatformGetChild(i); |
1056 if (child->role() != WebKit::WebAXRoleRow) | 1056 if (child->role() != blink::WebAXRoleRow) |
1057 continue; | 1057 continue; |
1058 int rowIndex; | 1058 int rowIndex; |
1059 if (!child->GetIntAttribute( | 1059 if (!child->GetIntAttribute( |
1060 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX, &rowIndex)) { | 1060 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX, &rowIndex)) { |
1061 continue; | 1061 continue; |
1062 } | 1062 } |
1063 if (rowIndex < row) | 1063 if (rowIndex < row) |
1064 continue; | 1064 continue; |
1065 if (rowIndex > row) | 1065 if (rowIndex > row) |
1066 break; | 1066 break; |
1067 for (size_t j = 0; | 1067 for (size_t j = 0; |
1068 j < child->PlatformChildCount(); | 1068 j < child->PlatformChildCount(); |
1069 ++j) { | 1069 ++j) { |
1070 BrowserAccessibility* cell = child->PlatformGetChild(j); | 1070 BrowserAccessibility* cell = child->PlatformGetChild(j); |
1071 if (cell->role() != WebKit::WebAXRoleCell) | 1071 if (cell->role() != blink::WebAXRoleCell) |
1072 continue; | 1072 continue; |
1073 int colIndex; | 1073 int colIndex; |
1074 if (!cell->GetIntAttribute( | 1074 if (!cell->GetIntAttribute( |
1075 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, | 1075 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, |
1076 &colIndex)) { | 1076 &colIndex)) { |
1077 continue; | 1077 continue; |
1078 } | 1078 } |
1079 if (colIndex == column) | 1079 if (colIndex == column) |
1080 return cell->ToBrowserAccessibilityCocoa(); | 1080 return cell->ToBrowserAccessibilityCocoa(); |
1081 if (colIndex > column) | 1081 if (colIndex > column) |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1334 } | 1334 } |
1335 | 1335 |
1336 // Returns whether or not the specified attribute can be set by the | 1336 // Returns whether or not the specified attribute can be set by the |
1337 // accessibility API via |accessibilitySetValue:forAttribute:|. | 1337 // accessibility API via |accessibilitySetValue:forAttribute:|. |
1338 - (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute { | 1338 - (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute { |
1339 if (!browserAccessibility_) | 1339 if (!browserAccessibility_) |
1340 return nil; | 1340 return nil; |
1341 | 1341 |
1342 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) | 1342 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) |
1343 return GetState(browserAccessibility_, | 1343 return GetState(browserAccessibility_, |
1344 WebKit::WebAXStateFocusable); | 1344 blink::WebAXStateFocusable); |
1345 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { | 1345 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { |
1346 return browserAccessibility_->GetBoolAttribute( | 1346 return browserAccessibility_->GetBoolAttribute( |
1347 AccessibilityNodeData::ATTR_CAN_SET_VALUE); | 1347 AccessibilityNodeData::ATTR_CAN_SET_VALUE); |
1348 } | 1348 } |
1349 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] && | 1349 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] && |
1350 ([[self role] isEqualToString:NSAccessibilityTextFieldRole] || | 1350 ([[self role] isEqualToString:NSAccessibilityTextFieldRole] || |
1351 [[self role] isEqualToString:NSAccessibilityTextAreaRole])) | 1351 [[self role] isEqualToString:NSAccessibilityTextAreaRole])) |
1352 return YES; | 1352 return YES; |
1353 | 1353 |
1354 return NO; | 1354 return NO; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1450 return [super hash]; | 1450 return [super hash]; |
1451 return browserAccessibility_->renderer_id(); | 1451 return browserAccessibility_->renderer_id(); |
1452 } | 1452 } |
1453 | 1453 |
1454 - (BOOL)accessibilityShouldUseUniqueId { | 1454 - (BOOL)accessibilityShouldUseUniqueId { |
1455 return YES; | 1455 return YES; |
1456 } | 1456 } |
1457 | 1457 |
1458 @end | 1458 @end |
1459 | 1459 |
OLD | NEW |