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 #ifndef UI_ACCESSIBILITY_AX_NODE_DATA_H_ | 5 #ifndef UI_ACCESSIBILITY_AX_NODE_DATA_H_ |
6 #define UI_ACCESSIBILITY_AX_NODE_DATA_H_ | 6 #define UI_ACCESSIBILITY_AX_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 "ui/accessibility/ax_enums.h" | 13 #include "ui/accessibility/ax_enums.h" |
14 #include "ui/accessibility/ax_export.h" | 14 #include "ui/accessibility/ax_export.h" |
15 #include "ui/gfx/rect.h" | 15 #include "ui/gfx/rect.h" |
16 | 16 |
17 namespace ui { | 17 namespace ui { |
18 | 18 |
19 // A compact representation of the accessibility information for a | 19 // A compact representation of the accessibility information for a |
20 // 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 |
21 // one process to another. | 21 // one process to another. |
22 struct AX_EXPORT AXNodeData { | 22 struct AX_EXPORT AXNodeData { |
23 // Additional optional attributes that can be optionally attached to | |
24 // a node. | |
25 enum StringAttribute { | |
26 // Document attributes. | |
27 ATTR_DOC_URL, | |
28 ATTR_DOC_TITLE, | |
29 ATTR_DOC_MIMETYPE, | |
30 ATTR_DOC_DOCTYPE, | |
31 | |
32 // Attributes that could apply to any node. | |
33 ATTR_ACCESS_KEY, | |
34 ATTR_ACTION, | |
35 ATTR_CONTAINER_LIVE_RELEVANT, | |
36 ATTR_CONTAINER_LIVE_STATUS, | |
37 ATTR_DESCRIPTION, | |
38 ATTR_DISPLAY, | |
39 ATTR_HELP, | |
40 ATTR_HTML_TAG, | |
41 ATTR_NAME, | |
42 ATTR_LIVE_RELEVANT, | |
43 ATTR_LIVE_STATUS, | |
44 ATTR_ROLE, | |
45 ATTR_SHORTCUT, | |
46 ATTR_URL, | |
47 ATTR_VALUE, | |
48 }; | |
49 | |
50 enum IntAttribute { | |
51 // Scrollable container attributes. | |
52 ATTR_SCROLL_X, | |
53 ATTR_SCROLL_X_MIN, | |
54 ATTR_SCROLL_X_MAX, | |
55 ATTR_SCROLL_Y, | |
56 ATTR_SCROLL_Y_MIN, | |
57 ATTR_SCROLL_Y_MAX, | |
58 | |
59 // Editable text attributes. | |
60 ATTR_TEXT_SEL_START, | |
61 ATTR_TEXT_SEL_END, | |
62 | |
63 // Table attributes. | |
64 ATTR_TABLE_ROW_COUNT, | |
65 ATTR_TABLE_COLUMN_COUNT, | |
66 ATTR_TABLE_HEADER_ID, | |
67 | |
68 // Table row attributes. | |
69 ATTR_TABLE_ROW_INDEX, | |
70 ATTR_TABLE_ROW_HEADER_ID, | |
71 | |
72 // Table column attributes. | |
73 ATTR_TABLE_COLUMN_INDEX, | |
74 ATTR_TABLE_COLUMN_HEADER_ID, | |
75 | |
76 // Table cell attributes. | |
77 ATTR_TABLE_CELL_COLUMN_INDEX, | |
78 ATTR_TABLE_CELL_COLUMN_SPAN, | |
79 ATTR_TABLE_CELL_ROW_INDEX, | |
80 ATTR_TABLE_CELL_ROW_SPAN, | |
81 | |
82 // Tree control attributes. | |
83 ATTR_HIERARCHICAL_LEVEL, | |
84 | |
85 // Relationships between this element and other elements. | |
86 ATTR_TITLE_UI_ELEMENT, | |
87 | |
88 // Color value for AX_ROLE_COLOR_WELL, each component is 0..255 | |
89 ATTR_COLOR_VALUE_RED, | |
90 ATTR_COLOR_VALUE_GREEN, | |
91 ATTR_COLOR_VALUE_BLUE, | |
92 | |
93 // Inline text attributes. | |
94 ATTR_TEXT_DIRECTION | |
95 }; | |
96 | |
97 enum FloatAttribute { | |
98 // Document attributes. | |
99 ATTR_DOC_LOADING_PROGRESS, | |
100 | |
101 // Range attributes. | |
102 ATTR_VALUE_FOR_RANGE, | |
103 ATTR_MIN_VALUE_FOR_RANGE, | |
104 ATTR_MAX_VALUE_FOR_RANGE, | |
105 }; | |
106 | |
107 enum BoolAttribute { | |
108 // Document attributes. | |
109 ATTR_DOC_LOADED, | |
110 | |
111 // True if a checkbox or radio button is in the "mixed" state. | |
112 ATTR_BUTTON_MIXED, | |
113 | |
114 // Live region attributes. | |
115 ATTR_CONTAINER_LIVE_ATOMIC, | |
116 ATTR_CONTAINER_LIVE_BUSY, | |
117 ATTR_LIVE_ATOMIC, | |
118 ATTR_LIVE_BUSY, | |
119 | |
120 // ARIA readonly flag. | |
121 ATTR_ARIA_READONLY, | |
122 | |
123 // Writeable attributes | |
124 ATTR_CAN_SET_VALUE, | |
125 | |
126 // If this is set, all of the other fields in this struct should | |
127 // be ignored and only the locations should change. | |
128 ATTR_UPDATE_LOCATION_ONLY, | |
129 | |
130 // Set on a canvas element if it has fallback content. | |
131 ATTR_CANVAS_HAS_FALLBACK, | |
132 }; | |
133 | |
134 enum IntListAttribute { | |
135 // Ids of nodes that are children of this node logically, but are | |
136 // not children of this node in the tree structure. As an example, | |
137 // a table cell is a child of a row, and an 'indirect' child of a | |
138 // column. | |
139 ATTR_INDIRECT_CHILD_IDS, | |
140 | |
141 // Character indices where line breaks occur. | |
142 ATTR_LINE_BREAKS, | |
143 | |
144 // For a table, the cell ids in row-major order, with duplicate entries | |
145 // when there's a rowspan or colspan, and with -1 for missing cells. | |
146 // There are always exactly rows * columns entries. | |
147 ATTR_CELL_IDS, | |
148 | |
149 // For a table, the unique cell ids in row-major order of their first | |
150 // occurrence. | |
151 ATTR_UNIQUE_CELL_IDS, | |
152 | |
153 // For inline text. This is the pixel position of the end of this | |
154 // character within the bounding rectangle of this object, in the | |
155 // direction given by ATTR_TEXT_DIRECTION. For example, for left-to-right | |
156 // text, the first offset is the right coordinate of the first character | |
157 // within the object's bounds, the second offset is the right coordinate | |
158 // of the second character, and so on. | |
159 ATTR_CHARACTER_OFFSETS, | |
160 | |
161 // For inline text. These int lists must be the same size; they represent | |
162 // the start and end character index of each word within this text. | |
163 ATTR_WORD_STARTS, | |
164 ATTR_WORD_ENDS, | |
165 }; | |
166 | |
167 AXNodeData(); | 23 AXNodeData(); |
168 virtual ~AXNodeData(); | 24 virtual ~AXNodeData(); |
169 | 25 |
170 void AddStringAttribute(StringAttribute attribute, | 26 void AddStringAttribute(AXStringAttribute attribute, |
171 const std::string& value); | 27 const std::string& value); |
172 void AddIntAttribute(IntAttribute attribute, int value); | 28 void AddIntAttribute(AXIntAttribute attribute, int value); |
173 void AddFloatAttribute(FloatAttribute attribute, float value); | 29 void AddFloatAttribute(AXFloatAttribute attribute, float value); |
174 void AddBoolAttribute(BoolAttribute attribute, bool value); | 30 void AddBoolAttribute(AXBoolAttribute attribute, bool value); |
175 void AddIntListAttribute(IntListAttribute attribute, | 31 void AddIntListAttribute(AXIntListAttribute attribute, |
176 const std::vector<int32>& value); | 32 const std::vector<int32>& value); |
177 | 33 |
178 // Convenience functions, mainly for writing unit tests. | 34 // Convenience functions, mainly for writing unit tests. |
179 // Equivalent to AddStringAttribute(ATTR_NAME, name). | 35 // Equivalent to AddStringAttribute(ATTR_NAME, name). |
180 void SetName(std::string name); | 36 void SetName(std::string name); |
181 // Equivalent to AddStringAttribute(ATTR_VALUE, value). | 37 // Equivalent to AddStringAttribute(ATTR_VALUE, value). |
182 void SetValue(std::string value); | 38 void SetValue(std::string value); |
183 | 39 |
| 40 // Return a string representation of this data, for debugging. |
| 41 std::string ToString() const; |
| 42 |
184 // This is a simple serializable struct. All member variables should be | 43 // This is a simple serializable struct. All member variables should be |
185 // public and copyable. | 44 // public and copyable. |
186 int32 id; | 45 int32 id; |
187 AXRole role; | 46 AXRole role; |
188 uint32 state; | 47 uint32 state; |
189 gfx::Rect location; | 48 gfx::Rect location; |
190 std::vector<std::pair<StringAttribute, std::string> > string_attributes; | 49 std::vector<std::pair<AXStringAttribute, std::string> > string_attributes; |
191 std::vector<std::pair<IntAttribute, int32> > int_attributes; | 50 std::vector<std::pair<AXIntAttribute, int32> > int_attributes; |
192 std::vector<std::pair<FloatAttribute, float> > float_attributes; | 51 std::vector<std::pair<AXFloatAttribute, float> > float_attributes; |
193 std::vector<std::pair<BoolAttribute, bool> > bool_attributes; | 52 std::vector<std::pair<AXBoolAttribute, bool> > bool_attributes; |
194 std::vector<std::pair<IntListAttribute, std::vector<int32> > > | 53 std::vector<std::pair<AXIntListAttribute, std::vector<int32> > > |
195 intlist_attributes; | 54 intlist_attributes; |
196 std::vector<std::pair<std::string, std::string> > html_attributes; | 55 std::vector<std::pair<std::string, std::string> > html_attributes; |
197 std::vector<int32> child_ids; | 56 std::vector<int32> child_ids; |
198 }; | 57 }; |
199 | 58 |
200 } // namespace ui | 59 } // namespace ui |
201 | 60 |
202 #endif // UI_ACCESSIBILITY_AX_NODE_DATA_H_ | 61 #endif // UI_ACCESSIBILITY_AX_NODE_DATA_H_ |
OLD | NEW |