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 #ifndef CONTENT_COMMON_ACCESSIBILITY_NODE_DATA_H_ | 5 #ifndef CONTENT_COMMON_ACCESSIBILITY_NODE_DATA_H_ |
6 #define CONTENT_COMMON_ACCESSIBILITY_NODE_DATA_H_ | 6 #define CONTENT_COMMON_ACCESSIBILITY_NODE_DATA_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/strings/string16.h" | 12 #include "base/strings/string16.h" |
13 #include "content/common/content_export.h" | 13 #include "content/common/content_export.h" |
| 14 #include "third_party/WebKit/public/web/WebAXEnums.h" |
14 #include "ui/gfx/rect.h" | 15 #include "ui/gfx/rect.h" |
15 | 16 |
16 namespace content { | 17 namespace content { |
17 | 18 |
18 // A compact representation of the accessibility information for a | 19 // A compact representation of the accessibility information for a |
19 // single web object, in a form that can be serialized and sent from | 20 // single web object, in a form that can be serialized and sent from |
20 // the renderer process to the browser process. | 21 // the renderer process to the browser process. |
21 struct CONTENT_EXPORT AccessibilityNodeData { | 22 struct CONTENT_EXPORT AccessibilityNodeData { |
22 // An enumeration of accessibility roles. | |
23 enum Role { | |
24 ROLE_UNKNOWN = 0, | |
25 | |
26 // Used by Chromium to distinguish between the root of the tree | |
27 // for this page, and a web area for a frame within this page. | |
28 ROLE_ROOT_WEB_AREA, | |
29 | |
30 // These roles all directly correspond to WebKit accessibility roles, | |
31 // keep these alphabetical. | |
32 ROLE_ALERT, | |
33 ROLE_ALERT_DIALOG, | |
34 ROLE_ANNOTATION, | |
35 ROLE_APPLICATION, | |
36 ROLE_ARTICLE, | |
37 ROLE_BROWSER, | |
38 ROLE_BUSY_INDICATOR, | |
39 ROLE_BUTTON, | |
40 ROLE_CANVAS, | |
41 ROLE_CANVAS_WITH_FALLBACK_CONTENT, | |
42 ROLE_CELL, | |
43 ROLE_CHECKBOX, | |
44 ROLE_COLOR_WELL, | |
45 ROLE_COLUMN, | |
46 ROLE_COLUMN_HEADER, | |
47 ROLE_COMBO_BOX, | |
48 ROLE_DEFINITION, | |
49 ROLE_DESCRIPTION_LIST_DETAIL, | |
50 ROLE_DESCRIPTION_LIST_TERM, | |
51 ROLE_DIALOG, | |
52 ROLE_DIRECTORY, | |
53 ROLE_DISCLOSURE_TRIANGLE, | |
54 ROLE_DIV, | |
55 ROLE_DOCUMENT, | |
56 ROLE_DRAWER, | |
57 ROLE_EDITABLE_TEXT, | |
58 ROLE_FOOTER, | |
59 ROLE_FORM, | |
60 ROLE_GRID, | |
61 ROLE_GROUP, | |
62 ROLE_GROW_AREA, | |
63 ROLE_HEADING, | |
64 ROLE_HELP_TAG, | |
65 ROLE_HORIZONTAL_RULE, | |
66 ROLE_IGNORED, | |
67 ROLE_IMAGE, | |
68 ROLE_IMAGE_MAP, | |
69 ROLE_IMAGE_MAP_LINK, | |
70 ROLE_INCREMENTOR, | |
71 ROLE_LABEL, | |
72 ROLE_LANDMARK_APPLICATION, | |
73 ROLE_LANDMARK_BANNER, | |
74 ROLE_LANDMARK_COMPLEMENTARY, | |
75 ROLE_LANDMARK_CONTENTINFO, | |
76 ROLE_LANDMARK_MAIN, | |
77 ROLE_LANDMARK_NAVIGATION, | |
78 ROLE_LANDMARK_SEARCH, | |
79 ROLE_LINK, | |
80 ROLE_LIST, | |
81 ROLE_LISTBOX, | |
82 ROLE_LISTBOX_OPTION, | |
83 ROLE_LIST_ITEM, | |
84 ROLE_LIST_MARKER, | |
85 ROLE_LOG, | |
86 ROLE_MARQUEE, | |
87 ROLE_MATH, | |
88 ROLE_MATTE, | |
89 ROLE_MENU, | |
90 ROLE_MENU_BAR, | |
91 ROLE_MENU_ITEM, | |
92 ROLE_MENU_BUTTON, | |
93 ROLE_MENU_LIST_OPTION, | |
94 ROLE_MENU_LIST_POPUP, | |
95 ROLE_NOTE, | |
96 ROLE_OUTLINE, | |
97 ROLE_PARAGRAPH, | |
98 ROLE_POPUP_BUTTON, | |
99 ROLE_PRESENTATIONAL, | |
100 ROLE_PROGRESS_INDICATOR, | |
101 ROLE_RADIO_BUTTON, | |
102 ROLE_RADIO_GROUP, | |
103 ROLE_REGION, | |
104 ROLE_ROW, | |
105 ROLE_ROW_HEADER, | |
106 ROLE_RULER, | |
107 ROLE_RULER_MARKER, | |
108 ROLE_SCROLLAREA, | |
109 ROLE_SCROLLBAR, | |
110 ROLE_SHEET, | |
111 ROLE_SLIDER, | |
112 ROLE_SLIDER_THUMB, | |
113 ROLE_SPIN_BUTTON, | |
114 ROLE_SPIN_BUTTON_PART, | |
115 ROLE_SPLITTER, | |
116 ROLE_SPLIT_GROUP, | |
117 ROLE_STATIC_TEXT, | |
118 ROLE_STATUS, | |
119 ROLE_SVG_ROOT, | |
120 ROLE_SYSTEM_WIDE, | |
121 ROLE_TAB, | |
122 ROLE_TABLE, | |
123 ROLE_TABLE_HEADER_CONTAINER, | |
124 ROLE_TAB_GROUP_UNUSED, // WebKit doesn't use (uses ROLE_TAB_LIST) | |
125 ROLE_TAB_LIST, | |
126 ROLE_TAB_PANEL, | |
127 ROLE_TEXTAREA, | |
128 ROLE_TEXT_FIELD, | |
129 ROLE_TIMER, | |
130 ROLE_TOGGLE_BUTTON, | |
131 ROLE_TOOLBAR, | |
132 ROLE_TOOLTIP, | |
133 ROLE_TREE, | |
134 ROLE_TREE_GRID, | |
135 ROLE_TREE_ITEM, | |
136 ROLE_VALUE_INDICATOR, | |
137 ROLE_WEBCORE_LINK, | |
138 ROLE_WEB_AREA, | |
139 ROLE_WINDOW, | |
140 NUM_ROLES | |
141 }; | |
142 | |
143 // An alphabetical enumeration of accessibility states. | |
144 // A state bitmask is formed by shifting 1 to the left by each state, | |
145 // for example: | |
146 // int mask = (1 << STATE_CHECKED) | (1 << STATE_FOCUSED); | |
147 enum State { | |
148 STATE_BUSY, | |
149 STATE_CHECKED, | |
150 STATE_COLLAPSED, | |
151 STATE_EXPANDED, | |
152 STATE_FOCUSABLE, | |
153 STATE_FOCUSED, | |
154 STATE_HASPOPUP, | |
155 STATE_HOTTRACKED, | |
156 STATE_INDETERMINATE, | |
157 STATE_INVISIBLE, | |
158 STATE_LINKED, | |
159 STATE_MULTISELECTABLE, | |
160 STATE_OFFSCREEN, | |
161 STATE_PRESSED, | |
162 STATE_PROTECTED, | |
163 STATE_READONLY, | |
164 STATE_REQUIRED, | |
165 STATE_SELECTABLE, | |
166 STATE_SELECTED, | |
167 STATE_TRAVERSED, | |
168 STATE_UNAVAILABLE, | |
169 STATE_VERTICAL, | |
170 STATE_VISITED, | |
171 NUM_STATES | |
172 }; | |
173 | |
174 COMPILE_ASSERT(NUM_STATES <= 31, state_enum_not_too_large); | |
175 | |
176 // Additional optional attributes that can be optionally attached to | 23 // Additional optional attributes that can be optionally attached to |
177 // a node. | 24 // a node. |
178 enum StringAttribute { | 25 enum StringAttribute { |
179 // Document attributes. | 26 // Document attributes. |
180 ATTR_DOC_URL, | 27 ATTR_DOC_URL, |
181 ATTR_DOC_TITLE, | 28 ATTR_DOC_TITLE, |
182 ATTR_DOC_MIMETYPE, | 29 ATTR_DOC_MIMETYPE, |
183 ATTR_DOC_DOCTYPE, | 30 ATTR_DOC_DOCTYPE, |
184 | 31 |
185 // Attributes that could apply to any node. | 32 // Attributes that could apply to any node. |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 ATTR_TABLE_CELL_COLUMN_SPAN, | 78 ATTR_TABLE_CELL_COLUMN_SPAN, |
232 ATTR_TABLE_CELL_ROW_INDEX, | 79 ATTR_TABLE_CELL_ROW_INDEX, |
233 ATTR_TABLE_CELL_ROW_SPAN, | 80 ATTR_TABLE_CELL_ROW_SPAN, |
234 | 81 |
235 // Tree control attributes. | 82 // Tree control attributes. |
236 ATTR_HIERARCHICAL_LEVEL, | 83 ATTR_HIERARCHICAL_LEVEL, |
237 | 84 |
238 // Relationships between this element and other elements. | 85 // Relationships between this element and other elements. |
239 ATTR_TITLE_UI_ELEMENT, | 86 ATTR_TITLE_UI_ELEMENT, |
240 | 87 |
241 // Color value for ROLE_COLOR_WELL, each component is 0..255 | 88 // Color value for WebKit::WebAXRoleColorWell, each component is 0..255 |
242 ATTR_COLOR_VALUE_RED, | 89 ATTR_COLOR_VALUE_RED, |
243 ATTR_COLOR_VALUE_GREEN, | 90 ATTR_COLOR_VALUE_GREEN, |
244 ATTR_COLOR_VALUE_BLUE | 91 ATTR_COLOR_VALUE_BLUE |
245 }; | 92 }; |
246 | 93 |
247 enum FloatAttribute { | 94 enum FloatAttribute { |
248 // Document attributes. | 95 // Document attributes. |
249 ATTR_DOC_LOADING_PROGRESS, | 96 ATTR_DOC_LOADING_PROGRESS, |
250 | 97 |
251 // Range attributes. | 98 // Range attributes. |
(...skipping 17 matching lines...) Expand all Loading... |
269 | 116 |
270 // ARIA readonly flag. | 117 // ARIA readonly flag. |
271 ATTR_ARIA_READONLY, | 118 ATTR_ARIA_READONLY, |
272 | 119 |
273 // Writeable attributes | 120 // Writeable attributes |
274 ATTR_CAN_SET_VALUE, | 121 ATTR_CAN_SET_VALUE, |
275 | 122 |
276 // If this is set, all of the other fields in this struct should | 123 // If this is set, all of the other fields in this struct should |
277 // be ignored and only the locations should change. | 124 // be ignored and only the locations should change. |
278 ATTR_UPDATE_LOCATION_ONLY, | 125 ATTR_UPDATE_LOCATION_ONLY, |
| 126 |
| 127 // Set on a canvas element if it has fallback content. |
| 128 ATTR_CANVAS_HAS_FALLBACK, |
279 }; | 129 }; |
280 | 130 |
281 enum IntListAttribute { | 131 enum IntListAttribute { |
282 // Ids of nodes that are children of this node logically, but are | 132 // Ids of nodes that are children of this node logically, but are |
283 // not children of this node in the tree structure. As an example, | 133 // not children of this node in the tree structure. As an example, |
284 // a table cell is a child of a row, and an 'indirect' child of a | 134 // a table cell is a child of a row, and an 'indirect' child of a |
285 // column. | 135 // column. |
286 ATTR_INDIRECT_CHILD_IDS, | 136 ATTR_INDIRECT_CHILD_IDS, |
287 | 137 |
288 // Character indices where line breaks occur. | 138 // Character indices where line breaks occur. |
(...skipping 24 matching lines...) Expand all Loading... |
313 // Equivalent to AddStringAttribute(ATTR_NAME, name). | 163 // Equivalent to AddStringAttribute(ATTR_NAME, name). |
314 void SetName(std::string name); | 164 void SetName(std::string name); |
315 | 165 |
316 #ifndef NDEBUG | 166 #ifndef NDEBUG |
317 virtual std::string DebugString(bool recursive) const; | 167 virtual std::string DebugString(bool recursive) const; |
318 #endif | 168 #endif |
319 | 169 |
320 // This is a simple serializable struct. All member variables should be | 170 // This is a simple serializable struct. All member variables should be |
321 // public and copyable. | 171 // public and copyable. |
322 int32 id; | 172 int32 id; |
323 Role role; | 173 WebKit::WebAXRole role; |
324 uint32 state; | 174 uint32 state; |
325 gfx::Rect location; | 175 gfx::Rect location; |
326 std::vector<std::pair<StringAttribute, std::string> > string_attributes; | 176 std::vector<std::pair<StringAttribute, std::string> > string_attributes; |
327 std::vector<std::pair<IntAttribute, int32> > int_attributes; | 177 std::vector<std::pair<IntAttribute, int32> > int_attributes; |
328 std::vector<std::pair<FloatAttribute, float> > float_attributes; | 178 std::vector<std::pair<FloatAttribute, float> > float_attributes; |
329 std::vector<std::pair<BoolAttribute, bool> > bool_attributes; | 179 std::vector<std::pair<BoolAttribute, bool> > bool_attributes; |
330 std::vector<std::pair<IntListAttribute, std::vector<int32> > > | 180 std::vector<std::pair<IntListAttribute, std::vector<int32> > > |
331 intlist_attributes; | 181 intlist_attributes; |
332 std::vector<std::pair<std::string, std::string> > html_attributes; | 182 std::vector<std::pair<std::string, std::string> > html_attributes; |
333 std::vector<int32> child_ids; | 183 std::vector<int32> child_ids; |
(...skipping 22 matching lines...) Expand all Loading... |
356 // build a tree of AccessibilityNodeDataTreeNode objects for easier | 206 // build a tree of AccessibilityNodeDataTreeNode objects for easier |
357 // testing and debugging, where each node contains its children. | 207 // testing and debugging, where each node contains its children. |
358 // The |dst| argument will become the root of the new tree. | 208 // The |dst| argument will become the root of the new tree. |
359 void MakeAccessibilityNodeDataTree( | 209 void MakeAccessibilityNodeDataTree( |
360 const std::vector<AccessibilityNodeData>& src, | 210 const std::vector<AccessibilityNodeData>& src, |
361 AccessibilityNodeDataTreeNode* dst); | 211 AccessibilityNodeDataTreeNode* dst); |
362 | 212 |
363 } // namespace content | 213 } // namespace content |
364 | 214 |
365 #endif // CONTENT_COMMON_ACCESSIBILITY_NODE_DATA_H_ | 215 #endif // CONTENT_COMMON_ACCESSIBILITY_NODE_DATA_H_ |
OLD | NEW |