OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ui/accessibility/ax_node_data.h" | 5 #include "ui/accessibility/ax_node_data.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/containers/hash_tables.h" | 9 #include "base/containers/hash_tables.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
69 } | 69 } |
70 | 70 |
71 void AXNodeData::SetValue(std::string value) { | 71 void AXNodeData::SetValue(std::string value) { |
72 string_attributes.push_back(std::make_pair(AX_ATTR_VALUE, value)); | 72 string_attributes.push_back(std::make_pair(AX_ATTR_VALUE, value)); |
73 } | 73 } |
74 | 74 |
75 std::string AXNodeData::ToString() const { | 75 std::string AXNodeData::ToString() const { |
76 std::string result; | 76 std::string result; |
77 | 77 |
78 result += "id=" + IntToString(id); | 78 result += "id=" + IntToString(id); |
79 | 79 result += " " + ui::ToString(role); |
80 switch (role) { | |
81 case ui::AX_ROLE_ALERT: result += " ALERT"; break; | |
82 case ui::AX_ROLE_ALERT_DIALOG: result += " ALERT_DIALOG"; break; | |
83 case ui::AX_ROLE_ANNOTATION: result += " ANNOTATION"; break; | |
84 case ui::AX_ROLE_APPLICATION: result += " APPLICATION"; break; | |
85 case ui::AX_ROLE_ARTICLE: result += " ARTICLE"; break; | |
86 case ui::AX_ROLE_BANNER: result += " BANNER"; break; | |
87 case ui::AX_ROLE_BROWSER: result += " BROWSER"; break; | |
88 case ui::AX_ROLE_BUSY_INDICATOR: result += " BUSY_INDICATOR"; break; | |
89 case ui::AX_ROLE_BUTTON: result += " BUTTON"; break; | |
90 case ui::AX_ROLE_CANVAS: result += " CANVAS"; break; | |
91 case ui::AX_ROLE_CELL: result += " CELL"; break; | |
92 case ui::AX_ROLE_CHECK_BOX: result += " CHECKBOX"; break; | |
93 case ui::AX_ROLE_COLOR_WELL: result += " COLOR_WELL"; break; | |
94 case ui::AX_ROLE_COLUMN: result += " COLUMN"; break; | |
95 case ui::AX_ROLE_COLUMN_HEADER: result += " COLUMN_HEADER"; break; | |
96 case ui::AX_ROLE_COMBO_BOX: result += " COMBO_BOX"; break; | |
97 case ui::AX_ROLE_COMPLEMENTARY: result += " COMPLEMENTARY"; break; | |
98 case ui::AX_ROLE_CONTENT_INFO: result += " CONTENTINFO"; break; | |
99 case ui::AX_ROLE_DEFINITION: result += " DEFINITION"; break; | |
100 case ui::AX_ROLE_DESCRIPTION_LIST_DETAIL: result += " DD"; break; | |
101 case ui::AX_ROLE_DESCRIPTION_LIST_TERM: result += " DT"; break; | |
102 case ui::AX_ROLE_DIALOG: result += " DIALOG"; break; | |
103 case ui::AX_ROLE_DIRECTORY: result += " DIRECTORY"; break; | |
104 case ui::AX_ROLE_DISCLOSURE_TRIANGLE: | |
105 result += " DISCLOSURE_TRIANGLE"; break; | |
106 case ui::AX_ROLE_DIV: result += " DIV"; break; | |
107 case ui::AX_ROLE_DOCUMENT: result += " DOCUMENT"; break; | |
108 case ui::AX_ROLE_DRAWER: result += " DRAWER"; break; | |
109 case ui::AX_ROLE_EDITABLE_TEXT: result += " EDITABLE_TEXT"; break; | |
110 case ui::AX_ROLE_FOOTER: result += " FOOTER"; break; | |
111 case ui::AX_ROLE_FORM: result += " FORM"; break; | |
112 case ui::AX_ROLE_GRID: result += " GRID"; break; | |
113 case ui::AX_ROLE_GROUP: result += " GROUP"; break; | |
114 case ui::AX_ROLE_GROW_AREA: result += " GROW_AREA"; break; | |
115 case ui::AX_ROLE_HEADING: result += " HEADING"; break; | |
116 case ui::AX_ROLE_HELP_TAG: result += " HELP_TAG"; break; | |
117 case ui::AX_ROLE_HORIZONTAL_RULE: result += " HORIZONTAL_RULE"; break; | |
118 case ui::AX_ROLE_IGNORED: result += " IGNORED"; break; | |
119 case ui::AX_ROLE_IMAGE: result += " IMAGE"; break; | |
120 case ui::AX_ROLE_IMAGE_MAP: result += " IMAGE_MAP"; break; | |
121 case ui::AX_ROLE_IMAGE_MAP_LINK: result += " IMAGE_MAP_LINK"; break; | |
122 case ui::AX_ROLE_INCREMENTOR: result += " INCREMENTOR"; break; | |
123 case ui::AX_ROLE_INLINE_TEXT_BOX: result += " INLINE_TEXT_BOX"; break; | |
124 case ui::AX_ROLE_LABEL: result += " LABEL"; break; | |
125 case ui::AX_ROLE_LINK: result += " LINK"; break; | |
126 case ui::AX_ROLE_LIST: result += " LIST"; break; | |
127 case ui::AX_ROLE_LIST_BOX: result += " LISTBOX"; break; | |
128 case ui::AX_ROLE_LIST_BOX_OPTION: result += " LISTBOX_OPTION"; break; | |
129 case ui::AX_ROLE_LIST_ITEM: result += " LIST_ITEM"; break; | |
130 case ui::AX_ROLE_LIST_MARKER: result += " LIST_MARKER"; break; | |
131 case ui::AX_ROLE_LOG: result += " LOG"; break; | |
132 case ui::AX_ROLE_MAIN: result += " MAIN"; break; | |
133 case ui::AX_ROLE_MARQUEE: result += " MARQUEE"; break; | |
134 case ui::AX_ROLE_MATH: result += " MATH"; break; | |
135 case ui::AX_ROLE_MATTE: result += " MATTE"; break; | |
136 case ui::AX_ROLE_MENU: result += " MENU"; break; | |
137 case ui::AX_ROLE_MENU_BAR: result += " MENU_BAR"; break; | |
138 case ui::AX_ROLE_MENU_BUTTON: result += " MENU_BUTTON"; break; | |
139 case ui::AX_ROLE_MENU_ITEM: result += " MENU_ITEM"; break; | |
140 case ui::AX_ROLE_MENU_LIST_OPTION: result += " MENU_LIST_OPTION"; break; | |
141 case ui::AX_ROLE_MENU_LIST_POPUP: result += " MENU_LIST_POPUP"; break; | |
142 case ui::AX_ROLE_NAVIGATION: result += " NAVIGATION"; break; | |
143 case ui::AX_ROLE_NOTE: result += " NOTE"; break; | |
144 case ui::AX_ROLE_OUTLINE: result += " OUTLINE"; break; | |
145 case ui::AX_ROLE_PARAGRAPH: result += " PARAGRAPH"; break; | |
146 case ui::AX_ROLE_POP_UP_BUTTON: result += " POPUP_BUTTON"; break; | |
147 case ui::AX_ROLE_PRESENTATIONAL: result += " PRESENTATIONAL"; break; | |
148 case ui::AX_ROLE_PROGRESS_INDICATOR: | |
149 result += " PROGRESS_INDICATOR"; break; | |
150 case ui::AX_ROLE_RADIO_BUTTON: result += " RADIO_BUTTON"; break; | |
151 case ui::AX_ROLE_RADIO_GROUP: result += " RADIO_GROUP"; break; | |
152 case ui::AX_ROLE_REGION: result += " REGION"; break; | |
153 case ui::AX_ROLE_ROOT_WEB_AREA: result += " ROOT_WEB_AREA"; break; | |
154 case ui::AX_ROLE_ROW: result += " ROW"; break; | |
155 case ui::AX_ROLE_ROW_HEADER: result += " ROW_HEADER"; break; | |
156 case ui::AX_ROLE_RULER: result += " RULER"; break; | |
157 case ui::AX_ROLE_RULER_MARKER: result += " RULER_MARKER"; break; | |
158 case ui::AX_ROLE_SVG_ROOT: result += " SVG_ROOT"; break; | |
159 case ui::AX_ROLE_SCROLL_AREA: result += " SCROLLAREA"; break; | |
160 case ui::AX_ROLE_SCROLL_BAR: result += " SCROLLBAR"; break; | |
161 case ui::AX_ROLE_SEARCH: result += " SEARCH"; break; | |
162 case ui::AX_ROLE_SHEET: result += " SHEET"; break; | |
163 case ui::AX_ROLE_SLIDER: result += " SLIDER"; break; | |
164 case ui::AX_ROLE_SLIDER_THUMB: result += " SLIDER_THUMB"; break; | |
165 case ui::AX_ROLE_SPIN_BUTTON: result += " SPIN_BUTTON"; break; | |
166 case ui::AX_ROLE_SPIN_BUTTON_PART: result += " SPIN_BUTTON_PART"; break; | |
167 case ui::AX_ROLE_SPLIT_GROUP: result += " SPLIT_GROUP"; break; | |
168 case ui::AX_ROLE_SPLITTER: result += " SPLITTER"; break; | |
169 case ui::AX_ROLE_STATIC_TEXT: result += " STATIC_TEXT"; break; | |
170 case ui::AX_ROLE_STATUS: result += " STATUS"; break; | |
171 case ui::AX_ROLE_SYSTEM_WIDE: result += " SYSTEM_WIDE"; break; | |
172 case ui::AX_ROLE_TAB: result += " TAB"; break; | |
173 case ui::AX_ROLE_TAB_LIST: result += " TAB_LIST"; break; | |
174 case ui::AX_ROLE_TAB_PANEL: result += " TAB_PANEL"; break; | |
175 case ui::AX_ROLE_TABLE: result += " TABLE"; break; | |
176 case ui::AX_ROLE_TABLE_HEADER_CONTAINER: | |
177 result += " TABLE_HDR_CONTAINER"; break; | |
178 case ui::AX_ROLE_TEXT_AREA: result += " TEXTAREA"; break; | |
179 case ui::AX_ROLE_TEXT_FIELD: result += " TEXT_FIELD"; break; | |
180 case ui::AX_ROLE_TIMER: result += " TIMER"; break; | |
181 case ui::AX_ROLE_TOGGLE_BUTTON: result += " TOGGLE_BUTTON"; break; | |
182 case ui::AX_ROLE_TOOLBAR: result += " TOOLBAR"; break; | |
183 case ui::AX_ROLE_TREE: result += " TREE"; break; | |
184 case ui::AX_ROLE_TREE_GRID: result += " TREE_GRID"; break; | |
185 case ui::AX_ROLE_TREE_ITEM: result += " TREE_ITEM"; break; | |
186 case ui::AX_ROLE_UNKNOWN: result += " UNKNOWN"; break; | |
187 case ui::AX_ROLE_TOOLTIP: result += " TOOLTIP"; break; | |
188 case ui::AX_ROLE_VALUE_INDICATOR: result += " VALUE_INDICATOR"; break; | |
189 case ui::AX_ROLE_WEB_AREA: result += " WEB_AREA"; break; | |
190 case ui::AX_ROLE_WINDOW: result += " WINDOW"; break; | |
191 default: | |
192 assert(false); | |
193 } | |
194 | 80 |
195 if (state & (1 << ui::AX_STATE_BUSY)) | 81 if (state & (1 << ui::AX_STATE_BUSY)) |
196 result += " BUSY"; | 82 result += " BUSY"; |
197 if (state & (1 << ui::AX_STATE_CHECKED)) | 83 if (state & (1 << ui::AX_STATE_CHECKED)) |
198 result += " CHECKED"; | 84 result += " CHECKED"; |
199 if (state & (1 << ui::AX_STATE_COLLAPSED)) | 85 if (state & (1 << ui::AX_STATE_COLLAPSED)) |
200 result += " COLLAPSED"; | 86 result += " COLLAPSED"; |
201 if (state & (1 << ui::AX_STATE_EXPANDED)) | 87 if (state & (1 << ui::AX_STATE_EXPANDED)) |
202 result += " EXPANDED"; | 88 result += " EXPANDED"; |
203 if (state & (1 << ui::AX_STATE_FOCUSABLE)) | 89 if (state & (1 << ui::AX_STATE_FOCUSABLE)) |
(...skipping 11 matching lines...) Expand all Loading... | |
215 if (state & (1 << ui::AX_STATE_LINKED)) | 101 if (state & (1 << ui::AX_STATE_LINKED)) |
216 result += " LINKED"; | 102 result += " LINKED"; |
217 if (state & (1 << ui::AX_STATE_MULTISELECTABLE)) | 103 if (state & (1 << ui::AX_STATE_MULTISELECTABLE)) |
218 result += " MULTISELECTABLE"; | 104 result += " MULTISELECTABLE"; |
219 if (state & (1 << ui::AX_STATE_OFFSCREEN)) | 105 if (state & (1 << ui::AX_STATE_OFFSCREEN)) |
220 result += " OFFSCREEN"; | 106 result += " OFFSCREEN"; |
221 if (state & (1 << ui::AX_STATE_PRESSED)) | 107 if (state & (1 << ui::AX_STATE_PRESSED)) |
222 result += " PRESSED"; | 108 result += " PRESSED"; |
223 if (state & (1 << ui::AX_STATE_PROTECTED)) | 109 if (state & (1 << ui::AX_STATE_PROTECTED)) |
224 result += " PROTECTED"; | 110 result += " PROTECTED"; |
225 if (state & (1 << ui::AX_STATE_READONLY)) | 111 if (state & (1 << ui::AX_STATE_READ_ONLY)) |
226 result += " READONLY"; | 112 result += " READONLY"; |
227 if (state & (1 << ui::AX_STATE_REQUIRED)) | 113 if (state & (1 << ui::AX_STATE_REQUIRED)) |
228 result += " REQUIRED"; | 114 result += " REQUIRED"; |
229 if (state & (1 << ui::AX_STATE_SELECTABLE)) | 115 if (state & (1 << ui::AX_STATE_SELECTABLE)) |
230 result += " SELECTABLE"; | 116 result += " SELECTABLE"; |
231 if (state & (1 << ui::AX_STATE_SELECTED)) | 117 if (state & (1 << ui::AX_STATE_SELECTED)) |
232 result += " SELECTED"; | 118 result += " SELECTED"; |
233 if (state & (1 << ui::AX_STATE_VERTICAL)) | 119 if (state & (1 << ui::AX_STATE_VERTICAL)) |
234 result += " VERTICAL"; | 120 result += " VERTICAL"; |
235 if (state & (1 << ui::AX_STATE_VISITED)) | 121 if (state & (1 << ui::AX_STATE_VISITED)) |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
325 result += " text_direction=rl"; | 211 result += " text_direction=rl"; |
326 break; | 212 break; |
327 case AX_TEXT_DIRECTION_TB: | 213 case AX_TEXT_DIRECTION_TB: |
328 result += " text_direction=tb"; | 214 result += " text_direction=tb"; |
329 break; | 215 break; |
330 case AX_TEXT_DIRECTION_BT: | 216 case AX_TEXT_DIRECTION_BT: |
331 result += " text_direction=bt"; | 217 result += " text_direction=bt"; |
332 break; | 218 break; |
333 } | 219 } |
334 break; | 220 break; |
221 default: | |
not at google - send to devlin
2014/01/23 18:26:47
drive-by: you're probably better off handing NONE
David Tseng
2014/01/23 19:12:41
Done.
| |
222 NOTREACHED(); | |
335 } | 223 } |
336 } | 224 } |
337 | 225 |
338 for (size_t i = 0; i < string_attributes.size(); ++i) { | 226 for (size_t i = 0; i < string_attributes.size(); ++i) { |
339 std::string value = string_attributes[i].second; | 227 std::string value = string_attributes[i].second; |
340 switch (string_attributes[i].first) { | 228 switch (string_attributes[i].first) { |
341 case AX_ATTR_DOC_URL: | 229 case AX_ATTR_DOC_URL: |
342 result += " doc_url=" + value; | 230 result += " doc_url=" + value; |
343 break; | 231 break; |
344 case AX_ATTR_DOC_TITLE: | 232 case AX_ATTR_DOC_TITLE: |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
388 break; | 276 break; |
389 case AX_ATTR_URL: | 277 case AX_ATTR_URL: |
390 result += " url=" + value; | 278 result += " url=" + value; |
391 break; | 279 break; |
392 case AX_ATTR_NAME: | 280 case AX_ATTR_NAME: |
393 result += " name=" + value; | 281 result += " name=" + value; |
394 break; | 282 break; |
395 case AX_ATTR_VALUE: | 283 case AX_ATTR_VALUE: |
396 result += " value=" + value; | 284 result += " value=" + value; |
397 break; | 285 break; |
286 default: | |
287 NOTREACHED(); | |
398 } | 288 } |
399 } | 289 } |
400 | 290 |
401 for (size_t i = 0; i < float_attributes.size(); ++i) { | 291 for (size_t i = 0; i < float_attributes.size(); ++i) { |
402 std::string value = DoubleToString(float_attributes[i].second); | 292 std::string value = DoubleToString(float_attributes[i].second); |
403 switch (float_attributes[i].first) { | 293 switch (float_attributes[i].first) { |
404 case AX_ATTR_DOC_LOADING_PROGRESS: | 294 case AX_ATTR_DOC_LOADING_PROGRESS: |
405 result += " doc_progress=" + value; | 295 result += " doc_progress=" + value; |
406 break; | 296 break; |
407 case AX_ATTR_VALUE_FOR_RANGE: | 297 case AX_ATTR_VALUE_FOR_RANGE: |
408 result += " value_for_range=" + value; | 298 result += " value_for_range=" + value; |
409 break; | 299 break; |
410 case AX_ATTR_MAX_VALUE_FOR_RANGE: | 300 case AX_ATTR_MAX_VALUE_FOR_RANGE: |
411 result += " max_value=" + value; | 301 result += " max_value=" + value; |
412 break; | 302 break; |
413 case AX_ATTR_MIN_VALUE_FOR_RANGE: | 303 case AX_ATTR_MIN_VALUE_FOR_RANGE: |
414 result += " min_value=" + value; | 304 result += " min_value=" + value; |
415 break; | 305 break; |
306 default: | |
307 NOTREACHED(); | |
416 } | 308 } |
417 } | 309 } |
418 | 310 |
419 for (size_t i = 0; i < bool_attributes.size(); ++i) { | 311 for (size_t i = 0; i < bool_attributes.size(); ++i) { |
420 std::string value = bool_attributes[i].second ? "true" : "false"; | 312 std::string value = bool_attributes[i].second ? "true" : "false"; |
421 switch (bool_attributes[i].first) { | 313 switch (bool_attributes[i].first) { |
422 case AX_ATTR_DOC_LOADED: | 314 case AX_ATTR_DOC_LOADED: |
423 result += " doc_loaded=" + value; | 315 result += " doc_loaded=" + value; |
424 break; | 316 break; |
425 case AX_ATTR_BUTTON_MIXED: | 317 case AX_ATTR_BUTTON_MIXED: |
(...skipping 16 matching lines...) Expand all Loading... | |
442 break; | 334 break; |
443 case AX_ATTR_CAN_SET_VALUE: | 335 case AX_ATTR_CAN_SET_VALUE: |
444 result += " can_set_value=" + value; | 336 result += " can_set_value=" + value; |
445 break; | 337 break; |
446 case AX_ATTR_UPDATE_LOCATION_ONLY: | 338 case AX_ATTR_UPDATE_LOCATION_ONLY: |
447 result += " update_location_only=" + value; | 339 result += " update_location_only=" + value; |
448 break; | 340 break; |
449 case AX_ATTR_CANVAS_HAS_FALLBACK: | 341 case AX_ATTR_CANVAS_HAS_FALLBACK: |
450 result += " has_fallback=" + value; | 342 result += " has_fallback=" + value; |
451 break; | 343 break; |
344 default: | |
345 NOTREACHED(); | |
452 } | 346 } |
453 } | 347 } |
454 | 348 |
455 for (size_t i = 0; i < intlist_attributes.size(); ++i) { | 349 for (size_t i = 0; i < intlist_attributes.size(); ++i) { |
456 const std::vector<int32>& values = intlist_attributes[i].second; | 350 const std::vector<int32>& values = intlist_attributes[i].second; |
457 switch (intlist_attributes[i].first) { | 351 switch (intlist_attributes[i].first) { |
458 case AX_ATTR_INDIRECT_CHILD_IDS: | 352 case AX_ATTR_INDIRECT_CHILD_IDS: |
459 result += " indirect_child_ids=" + IntVectorToString(values); | 353 result += " indirect_child_ids=" + IntVectorToString(values); |
460 break; | 354 break; |
461 case AX_ATTR_LINE_BREAKS: | 355 case AX_ATTR_LINE_BREAKS: |
462 result += " line_breaks=" + IntVectorToString(values); | 356 result += " line_breaks=" + IntVectorToString(values); |
463 break; | 357 break; |
464 case AX_ATTR_CELL_IDS: | 358 case AX_ATTR_CELL_IDS: |
465 result += " cell_ids=" + IntVectorToString(values); | 359 result += " cell_ids=" + IntVectorToString(values); |
466 break; | 360 break; |
467 case AX_ATTR_UNIQUE_CELL_IDS: | 361 case AX_ATTR_UNIQUE_CELL_IDS: |
468 result += " unique_cell_ids=" + IntVectorToString(values); | 362 result += " unique_cell_ids=" + IntVectorToString(values); |
469 break; | 363 break; |
470 case AX_ATTR_CHARACTER_OFFSETS: | 364 case AX_ATTR_CHARACTER_OFFSETS: |
471 result += " character_offsets=" + IntVectorToString(values); | 365 result += " character_offsets=" + IntVectorToString(values); |
472 break; | 366 break; |
473 case AX_ATTR_WORD_STARTS: | 367 case AX_ATTR_WORD_STARTS: |
474 result += " word_starts=" + IntVectorToString(values); | 368 result += " word_starts=" + IntVectorToString(values); |
475 break; | 369 break; |
476 case AX_ATTR_WORD_ENDS: | 370 case AX_ATTR_WORD_ENDS: |
477 result += " word_ends=" + IntVectorToString(values); | 371 result += " word_ends=" + IntVectorToString(values); |
478 break; | 372 break; |
373 default: | |
374 NOTREACHED(); | |
479 } | 375 } |
480 } | 376 } |
481 | 377 |
482 if (!child_ids.empty()) | 378 if (!child_ids.empty()) |
483 result += " child_ids=" + IntVectorToString(child_ids); | 379 result += " child_ids=" + IntVectorToString(child_ids); |
484 | 380 |
485 return result; | 381 return result; |
486 } | 382 } |
487 | 383 |
488 } // namespace ui | 384 } // namespace ui |
OLD | NEW |