OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 28 matching lines...) Expand all Loading... |
39 | 39 |
40 using namespace WebKit; | 40 using namespace WebKit; |
41 using namespace std; | 41 using namespace std; |
42 | 42 |
43 namespace WebTestRunner { | 43 namespace WebTestRunner { |
44 | 44 |
45 namespace { | 45 namespace { |
46 | 46 |
47 // Map role value to string, matching Safari/Mac platform implementation to | 47 // Map role value to string, matching Safari/Mac platform implementation to |
48 // avoid rebaselining layout tests. | 48 // avoid rebaselining layout tests. |
49 string roleToString(WebAccessibilityRole role) | 49 string roleToString(AXRole role) |
50 { | 50 { |
51 string result = "AXRole: AX"; | 51 string result = "AXRole: AX"; |
52 switch (role) { | 52 switch (role) { |
53 case WebAccessibilityRoleButton: | 53 case AXAlertDialogRole: |
| 54 return result.append("AlertDialog"); |
| 55 case AXAlertRole: |
| 56 return result.append("Alert"); |
| 57 case AXAnnotationRole: |
| 58 return result.append("Annotation"); |
| 59 case AXApplicationRole: |
| 60 return result.append("Application"); |
| 61 case AXArticleRole: |
| 62 return result.append("Article"); |
| 63 case AXBannerRole: |
| 64 return result.append("Banner"); |
| 65 case AXBrowserRole: |
| 66 return result.append("Browser"); |
| 67 case AXBusyIndicatorRole: |
| 68 return result.append("BusyIndicator"); |
| 69 case AXButtonRole: |
54 return result.append("Button"); | 70 return result.append("Button"); |
55 case WebAccessibilityRoleRadioButton: | 71 case AXCanvasRole: |
| 72 return result.append("Canvas"); |
| 73 case AXCellRole: |
| 74 return result.append("Cell"); |
| 75 case AXCheckBoxRole: |
| 76 return result.append("CheckBox"); |
| 77 case AXColorWellRole: |
| 78 return result.append("ColorWell"); |
| 79 case AXColumnHeaderRole: |
| 80 return result.append("ColumnHeader"); |
| 81 case AXColumnRole: |
| 82 return result.append("Column"); |
| 83 case AXComboBoxRole: |
| 84 return result.append("ComboBox"); |
| 85 case AXComplementaryRole: |
| 86 return result.append("Complementary"); |
| 87 case AXContentInfoRole: |
| 88 return result.append("ContentInfo"); |
| 89 case AXDefinitionRole: |
| 90 return result.append("Definition"); |
| 91 case AXDescriptionListDetailRole: |
| 92 return result.append("DescriptionListDetail"); |
| 93 case AXDescriptionListTermRole: |
| 94 return result.append("DescriptionListTerm"); |
| 95 case AXDialogRole: |
| 96 return result.append("Dialog"); |
| 97 case AXDirectoryRole: |
| 98 return result.append("Directory"); |
| 99 case AXDisclosureTriangleRole: |
| 100 return result.append("DisclosureTriangle"); |
| 101 case AXDivRole: |
| 102 return result.append("Div"); |
| 103 case AXDocumentRole: |
| 104 return result.append("Document"); |
| 105 case AXDrawerRole: |
| 106 return result.append("Drawer"); |
| 107 case AXEditableTextRole: |
| 108 return result.append("EditableText"); |
| 109 case AXFooterRole: |
| 110 return result.append("Footer"); |
| 111 case AXFormRole: |
| 112 return result.append("Form"); |
| 113 case AXGridRole: |
| 114 return result.append("Grid"); |
| 115 case AXGroupRole: |
| 116 return result.append("Group"); |
| 117 case AXGrowAreaRole: |
| 118 return result.append("GrowArea"); |
| 119 case AXHeadingRole: |
| 120 return result.append("Heading"); |
| 121 case AXHelpTagRole: |
| 122 return result.append("HelpTag"); |
| 123 case AXHorizontalRuleRole: |
| 124 return result.append("HorizontalRule"); |
| 125 case AXIgnoredRole: |
| 126 return result.append("Ignored"); |
| 127 case AXImageMapLinkRole: |
| 128 return result.append("ImageMapLink"); |
| 129 case AXImageMapRole: |
| 130 return result.append("ImageMap"); |
| 131 case AXImageRole: |
| 132 return result.append("Image"); |
| 133 case AXIncrementorRole: |
| 134 return result.append("Incrementor"); |
| 135 case AXLabelRole: |
| 136 return result.append("Label"); |
| 137 case AXLegendRole: |
| 138 return result.append("Legend"); |
| 139 case AXLinkRole: |
| 140 return result.append("Link"); |
| 141 case AXListBoxOptionRole: |
| 142 return result.append("ListBoxOption"); |
| 143 case AXListBoxRole: |
| 144 return result.append("ListBox"); |
| 145 case AXListItemRole: |
| 146 return result.append("ListItem"); |
| 147 case AXListMarkerRole: |
| 148 return result.append("ListMarker"); |
| 149 case AXListRole: |
| 150 return result.append("List"); |
| 151 case AXLogRole: |
| 152 return result.append("Log"); |
| 153 case AXMainRole: |
| 154 return result.append("Main"); |
| 155 case AXMarqueeRole: |
| 156 return result.append("Marquee"); |
| 157 case AXMathElementRole: |
| 158 return result.append("MathElement"); |
| 159 case AXMathRole: |
| 160 return result.append("Math"); |
| 161 case AXMatteRole: |
| 162 return result.append("Matte"); |
| 163 case AXMenuBarRole: |
| 164 return result.append("MenuBar"); |
| 165 case AXMenuButtonRole: |
| 166 return result.append("MenuButton"); |
| 167 case AXMenuItemRole: |
| 168 return result.append("MenuItem"); |
| 169 case AXMenuListOptionRole: |
| 170 return result.append("MenuListOption"); |
| 171 case AXMenuListPopupRole: |
| 172 return result.append("MenuListPopup"); |
| 173 case AXMenuRole: |
| 174 return result.append("Menu"); |
| 175 case AXNavigationRole: |
| 176 return result.append("Navigation"); |
| 177 case AXNoteRole: |
| 178 return result.append("Note"); |
| 179 case AXOutlineRole: |
| 180 return result.append("Outline"); |
| 181 case AXParagraphRole: |
| 182 return result.append("Paragraph"); |
| 183 case AXPopUpButtonRole: |
| 184 return result.append("PopUpButton"); |
| 185 case AXPresentationalRole: |
| 186 return result.append("Presentational"); |
| 187 case AXProgressIndicatorRole: |
| 188 return result.append("ProgressIndicator"); |
| 189 case AXRadioButtonRole: |
56 return result.append("RadioButton"); | 190 return result.append("RadioButton"); |
57 case WebAccessibilityRoleCheckBox: | 191 case AXRadioGroupRole: |
58 return result.append("CheckBox"); | 192 return result.append("RadioGroup"); |
59 case WebAccessibilityRoleSlider: | 193 case AXRegionRole: |
| 194 return result.append("Region"); |
| 195 case AXRowHeaderRole: |
| 196 return result.append("RowHeader"); |
| 197 case AXRowRole: |
| 198 return result.append("Row"); |
| 199 case AXRulerMarkerRole: |
| 200 return result.append("RulerMarker"); |
| 201 case AXRulerRole: |
| 202 return result.append("Ruler"); |
| 203 case AXSVGRootRole: |
| 204 return result.append("SVGRoot"); |
| 205 case AXScrollAreaRole: |
| 206 return result.append("ScrollArea"); |
| 207 case AXScrollBarRole: |
| 208 return result.append("ScrollBar"); |
| 209 case AXSeamlessWebAreaRole: |
| 210 return result.append("SeamlessWebArea"); |
| 211 case AXSearchRole: |
| 212 return result.append("Search"); |
| 213 case AXSheetRole: |
| 214 return result.append("Sheet"); |
| 215 case AXSliderRole: |
60 return result.append("Slider"); | 216 return result.append("Slider"); |
61 case WebAccessibilityRoleTabGroup: | 217 case AXSliderThumbRole: |
| 218 return result.append("SliderThumb"); |
| 219 case AXSpinButtonPartRole: |
| 220 return result.append("SpinButtonPart"); |
| 221 case AXSpinButtonRole: |
| 222 return result.append("SpinButton"); |
| 223 case AXSplitGroupRole: |
| 224 return result.append("SplitGroup"); |
| 225 case AXSplitterRole: |
| 226 return result.append("Splitter"); |
| 227 case AXStaticTextRole: |
| 228 return result.append("StaticText"); |
| 229 case AXStatusRole: |
| 230 return result.append("Status"); |
| 231 case AXSystemWideRole: |
| 232 return result.append("SystemWide"); |
| 233 case AXTabGroupRole: |
62 return result.append("TabGroup"); | 234 return result.append("TabGroup"); |
63 case WebAccessibilityRoleTextField: | 235 case AXTabListRole: |
| 236 return result.append("TabList"); |
| 237 case AXTabPanelRole: |
| 238 return result.append("TabPanel"); |
| 239 case AXTabRole: |
| 240 return result.append("Tab"); |
| 241 case AXTableHeaderContainerRole: |
| 242 return result.append("TableHeaderContainer"); |
| 243 case AXTableRole: |
| 244 return result.append("Table"); |
| 245 case AXTextAreaRole: |
| 246 return result.append("TextArea"); |
| 247 case AXTextFieldRole: |
64 return result.append("TextField"); | 248 return result.append("TextField"); |
65 case WebAccessibilityRoleStaticText: | 249 case AXTimerRole: |
66 return result.append("StaticText"); | 250 return result.append("Timer"); |
67 case WebAccessibilityRoleTextArea: | 251 case AXToggleButtonRole: |
68 return result.append("TextArea"); | 252 return result.append("ToggleButton"); |
69 case WebAccessibilityRoleScrollArea: | 253 case AXToolbarRole: |
70 return result.append("ScrollArea"); | 254 return result.append("Toolbar"); |
71 case WebAccessibilityRolePopUpButton: | 255 case AXTreeGridRole: |
72 return result.append("PopUpButton"); | 256 return result.append("TreeGrid"); |
73 case WebAccessibilityRoleMenuButton: | 257 case AXTreeItemRole: |
74 return result.append("MenuButton"); | 258 return result.append("TreeItem"); |
75 case WebAccessibilityRoleTable: | 259 case AXTreeRole: |
76 return result.append("Table"); | 260 return result.append("Tree"); |
77 case WebAccessibilityRoleApplication: | 261 case AXUnknownRole: |
78 return result.append("Application"); | 262 return result.append("Unknown"); |
79 case WebAccessibilityRoleGroup: | 263 case AXUserInterfaceTooltipRole: |
80 return result.append("Group"); | 264 return result.append("UserInterfaceTooltip"); |
81 case WebAccessibilityRoleRadioGroup: | 265 case AXValueIndicatorRole: |
82 return result.append("RadioGroup"); | |
83 case WebAccessibilityRoleList: | |
84 return result.append("List"); | |
85 case WebAccessibilityRoleScrollBar: | |
86 return result.append("ScrollBar"); | |
87 case WebAccessibilityRoleValueIndicator: | |
88 return result.append("ValueIndicator"); | 266 return result.append("ValueIndicator"); |
89 case WebAccessibilityRoleImage: | 267 case AXWebAreaRole: |
90 return result.append("Image"); | 268 return result.append("WebArea"); |
91 case WebAccessibilityRoleMenuBar: | 269 case AXWindowRole: |
92 return result.append("MenuBar"); | |
93 case WebAccessibilityRoleMenu: | |
94 return result.append("Menu"); | |
95 case WebAccessibilityRoleMenuItem: | |
96 return result.append("MenuItem"); | |
97 case WebAccessibilityRoleColumn: | |
98 return result.append("Column"); | |
99 case WebAccessibilityRoleRow: | |
100 return result.append("Row"); | |
101 case WebAccessibilityRoleToolbar: | |
102 return result.append("Toolbar"); | |
103 case WebAccessibilityRoleBusyIndicator: | |
104 return result.append("BusyIndicator"); | |
105 case WebAccessibilityRoleProgressIndicator: | |
106 return result.append("ProgressIndicator"); | |
107 case WebAccessibilityRoleWindow: | |
108 return result.append("Window"); | 270 return result.append("Window"); |
109 case WebAccessibilityRoleDrawer: | |
110 return result.append("Drawer"); | |
111 case WebAccessibilityRoleSystemWide: | |
112 return result.append("SystemWide"); | |
113 case WebAccessibilityRoleOutline: | |
114 return result.append("Outline"); | |
115 case WebAccessibilityRoleIncrementor: | |
116 return result.append("Incrementor"); | |
117 case WebAccessibilityRoleBrowser: | |
118 return result.append("Browser"); | |
119 case WebAccessibilityRoleComboBox: | |
120 return result.append("ComboBox"); | |
121 case WebAccessibilityRoleSplitGroup: | |
122 return result.append("SplitGroup"); | |
123 case WebAccessibilityRoleSplitter: | |
124 return result.append("Splitter"); | |
125 case WebAccessibilityRoleColorWell: | |
126 return result.append("ColorWell"); | |
127 case WebAccessibilityRoleGrowArea: | |
128 return result.append("GrowArea"); | |
129 case WebAccessibilityRoleSheet: | |
130 return result.append("Sheet"); | |
131 case WebAccessibilityRoleHelpTag: | |
132 return result.append("HelpTag"); | |
133 case WebAccessibilityRoleMatte: | |
134 return result.append("Matte"); | |
135 case WebAccessibilityRoleRuler: | |
136 return result.append("Ruler"); | |
137 case WebAccessibilityRoleRulerMarker: | |
138 return result.append("RulerMarker"); | |
139 case WebAccessibilityRoleLink: | |
140 return result.append("Link"); | |
141 case WebAccessibilityRoleDisclosureTriangle: | |
142 return result.append("DisclosureTriangle"); | |
143 case WebAccessibilityRoleGrid: | |
144 return result.append("Grid"); | |
145 case WebAccessibilityRoleCell: | |
146 return result.append("Cell"); | |
147 case WebAccessibilityRoleColumnHeader: | |
148 return result.append("ColumnHeader"); | |
149 case WebAccessibilityRoleRowHeader: | |
150 return result.append("RowHeader"); | |
151 case WebAccessibilityRoleWebCoreLink: | |
152 // Maps to Link role. | |
153 return result.append("Link"); | |
154 case WebAccessibilityRoleImageMapLink: | |
155 return result.append("ImageMapLink"); | |
156 case WebAccessibilityRoleImageMap: | |
157 return result.append("ImageMap"); | |
158 case WebAccessibilityRoleListMarker: | |
159 return result.append("ListMarker"); | |
160 case WebAccessibilityRoleWebArea: | |
161 return result.append("WebArea"); | |
162 case WebAccessibilityRoleHeading: | |
163 return result.append("Heading"); | |
164 case WebAccessibilityRoleListBox: | |
165 return result.append("ListBox"); | |
166 case WebAccessibilityRoleListBoxOption: | |
167 return result.append("ListBoxOption"); | |
168 case WebAccessibilityRoleTableHeaderContainer: | |
169 return result.append("TableHeaderContainer"); | |
170 case WebAccessibilityRoleDefinition: | |
171 return result.append("Definition"); | |
172 case WebAccessibilityRoleDescriptionListTerm: | |
173 return result.append("DescriptionListTerm"); | |
174 case WebAccessibilityRoleDescriptionListDetail: | |
175 return result.append("DescriptionListDetail"); | |
176 case WebAccessibilityRoleAnnotation: | |
177 return result.append("Annotation"); | |
178 case WebAccessibilityRoleSliderThumb: | |
179 return result.append("SliderThumb"); | |
180 case WebAccessibilityRoleLandmarkApplication: | |
181 return result.append("LandmarkApplication"); | |
182 case WebAccessibilityRoleLandmarkBanner: | |
183 return result.append("LandmarkBanner"); | |
184 case WebAccessibilityRoleLandmarkComplementary: | |
185 return result.append("LandmarkComplementary"); | |
186 case WebAccessibilityRoleLandmarkContentInfo: | |
187 return result.append("LandmarkContentInfo"); | |
188 case WebAccessibilityRoleLandmarkMain: | |
189 return result.append("LandmarkMain"); | |
190 case WebAccessibilityRoleLandmarkNavigation: | |
191 return result.append("LandmarkNavigation"); | |
192 case WebAccessibilityRoleLandmarkSearch: | |
193 return result.append("LandmarkSearch"); | |
194 case WebAccessibilityRoleApplicationLog: | |
195 return result.append("ApplicationLog"); | |
196 case WebAccessibilityRoleApplicationMarquee: | |
197 return result.append("ApplicationMarquee"); | |
198 case WebAccessibilityRoleApplicationStatus: | |
199 return result.append("ApplicationStatus"); | |
200 case WebAccessibilityRoleApplicationTimer: | |
201 return result.append("ApplicationTimer"); | |
202 case WebAccessibilityRoleDocument: | |
203 return result.append("Document"); | |
204 case WebAccessibilityRoleDocumentArticle: | |
205 return result.append("DocumentArticle"); | |
206 case WebAccessibilityRoleDocumentNote: | |
207 return result.append("DocumentNote"); | |
208 case WebAccessibilityRoleDocumentRegion: | |
209 return result.append("DocumentRegion"); | |
210 case WebAccessibilityRoleUserInterfaceTooltip: | |
211 return result.append("UserInterfaceTooltip"); | |
212 case WebAccessibilityRoleToggleButton: | |
213 return result.append("ToggleButton"); | |
214 case WebAccessibilityRoleCanvas: | |
215 return result.append("Canvas"); | |
216 case WebAccessibilityRoleParagraph: | |
217 return result.append("Paragraph"); | |
218 case WebAccessibilityRoleDiv: | |
219 return result.append("Div"); | |
220 case WebAccessibilityRoleLabel: | |
221 return result.append("Label"); | |
222 case WebAccessibilityRoleForm: | |
223 return result.append("Form"); | |
224 case WebAccessibilityRoleHorizontalRule: | |
225 return result.append("HorizontalRule"); | |
226 case WebAccessibilityRoleLegend: | |
227 return result.append("Legend"); | |
228 case WebAccessibilityRoleApplicationAlert: | |
229 return result.append("Alert"); | |
230 case WebAccessibilityRoleApplicationAlertDialog: | |
231 return result.append("AlertDialog"); | |
232 case WebAccessibilityRoleApplicationDialog: | |
233 return result.append("ApplicationDialog"); | |
234 case WebAccessibilityRoleDirectory: | |
235 return result.append("Directory"); | |
236 case WebAccessibilityRoleDocumentMath: | |
237 return result.append("Math"); | |
238 case WebAccessibilityRoleEditableText: | |
239 return result.append("EditableText"); | |
240 case WebAccessibilityRoleFooter: | |
241 return result.append("Footer"); | |
242 case WebAccessibilityRoleIgnored: | |
243 return result.append("Ignored"); | |
244 case WebAccessibilityRoleListItem: | |
245 return result.append("ListItem"); | |
246 case WebAccessibilityRoleMenuListPopup: | |
247 return result.append("MenuListPopup"); | |
248 case WebAccessibilityRoleMenuListOption: | |
249 return result.append("MenuListOption"); | |
250 case WebAccessibilityRolePresentational: | |
251 return result.append("Presentational"); | |
252 case WebAccessibilityRoleSpinButton: | |
253 return result.append("SpinButton"); | |
254 case WebAccessibilityRoleSpinButtonPart: | |
255 return result.append("SpinButtonPart"); | |
256 case WebAccessibilityRoleTabList: | |
257 return result.append("TabList"); | |
258 case WebAccessibilityRoleTabPanel: | |
259 return result.append("TabPanel"); | |
260 case WebAccessibilityRoleTab: | |
261 return result.append("Tab"); | |
262 case WebAccessibilityRoleTreeRole: | |
263 return result.append("Tree"); | |
264 case WebAccessibilityRoleTreeGrid: | |
265 return result.append("TreeGrid"); | |
266 case WebAccessibilityRoleTreeItemRole: | |
267 return result.append("TreeItem"); | |
268 case WebAccessibilityRoleUnknown: | |
269 default: | 271 default: |
270 return result.append("Unknown"); | 272 return result.append("Unknown"); |
271 } | 273 } |
272 } | 274 } |
273 | 275 |
274 string getDescription(const WebAccessibilityObject& object) | 276 string getDescription(const WebAccessibilityObject& object) |
275 { | 277 { |
276 string description = object.accessibilityDescription().utf8(); | 278 string description = object.accessibilityDescription().utf8(); |
277 return description.insert(0, "AXDescription: "); | 279 return description.insert(0, "AXDescription: "); |
278 } | 280 } |
(...skipping 13 matching lines...) Expand all Loading... |
292 object.colorValue(r, g, b); | 294 object.colorValue(r, g, b); |
293 snprintf(buffer, sizeof(buffer), "rgb %7.5f %7.5f %7.5f 1", r / 255., g
/ 255., b / 255.); | 295 snprintf(buffer, sizeof(buffer), "rgb %7.5f %7.5f %7.5f 1", r / 255., g
/ 255., b / 255.); |
294 value = buffer; | 296 value = buffer; |
295 } else | 297 } else |
296 value = object.stringValue().utf8(); | 298 value = object.stringValue().utf8(); |
297 return value.insert(0, "AXValue: "); | 299 return value.insert(0, "AXValue: "); |
298 } | 300 } |
299 | 301 |
300 string getRole(const WebAccessibilityObject& object) | 302 string getRole(const WebAccessibilityObject& object) |
301 { | 303 { |
302 string roleString = roleToString(object.roleValue()); | 304 string roleString = roleToString(object.role()); |
303 | 305 |
304 // Special-case canvas with fallback content because Chromium wants to | 306 // Special-case canvas with fallback content because Chromium wants to |
305 // treat this as essentially a separate role that it can map differently dep
ending | 307 // treat this as essentially a separate role that it can map differently dep
ending |
306 // on the platform. | 308 // on the platform. |
307 if (object.roleValue() == WebAccessibilityRoleCanvas && object.canvasHasFall
backContent()) | 309 if (object.roleValue() == WebAccessibilityRoleCanvas && object.canvasHasFall
backContent()) |
308 roleString += "WithFallbackContent"; | 310 roleString += "WithFallbackContent"; |
309 | 311 |
310 return roleString; | 312 return roleString; |
311 } | 313 } |
312 | 314 |
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1072 } | 1074 } |
1073 | 1075 |
1074 AccessibilityUIElement* AccessibilityUIElementList::createRoot(const WebAccessib
ilityObject& object) | 1076 AccessibilityUIElement* AccessibilityUIElementList::createRoot(const WebAccessib
ilityObject& object) |
1075 { | 1077 { |
1076 AccessibilityUIElement* element = new RootAccessibilityUIElement(object, thi
s); | 1078 AccessibilityUIElement* element = new RootAccessibilityUIElement(object, thi
s); |
1077 m_elements.push_back(element); | 1079 m_elements.push_back(element); |
1078 return element; | 1080 return element; |
1079 } | 1081 } |
1080 | 1082 |
1081 } | 1083 } |
OLD | NEW |