OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 WEBKIT_GLUE_WEBACCESSIBILITY_H_ | 5 #ifndef WEBKIT_GLUE_WEBACCESSIBILITY_H_ |
6 #define WEBKIT_GLUE_WEBACCESSIBILITY_H_ | 6 #define WEBKIT_GLUE_WEBACCESSIBILITY_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
| 9 #include <string> |
9 #include <vector> | 10 #include <vector> |
10 | 11 |
11 #include "base/string16.h" | 12 #include "base/string16.h" |
12 #include "ui/gfx/rect.h" | 13 #include "ui/gfx/rect.h" |
13 | 14 |
14 namespace WebKit { | 15 namespace WebKit { |
15 class WebAccessibilityCache; | 16 class WebAccessibilityCache; |
16 class WebAccessibilityObject; | 17 class WebAccessibilityObject; |
17 } | 18 } |
18 | 19 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 ROLE_WEB_AREA, | 125 ROLE_WEB_AREA, |
125 ROLE_WINDOW, | 126 ROLE_WINDOW, |
126 NUM_ROLES | 127 NUM_ROLES |
127 }; | 128 }; |
128 | 129 |
129 // An alphabetical enumeration of accessibility states. | 130 // An alphabetical enumeration of accessibility states. |
130 // A state bitmask is formed by shifting 1 to the left by each state, | 131 // A state bitmask is formed by shifting 1 to the left by each state, |
131 // for example: | 132 // for example: |
132 // int mask = (1 << STATE_CHECKED) | (1 << STATE_FOCUSED); | 133 // int mask = (1 << STATE_CHECKED) | (1 << STATE_FOCUSED); |
133 enum State { | 134 enum State { |
| 135 STATE_BUSY, |
134 STATE_CHECKED, | 136 STATE_CHECKED, |
135 STATE_COLLAPSED, | 137 STATE_COLLAPSED, |
136 STATE_EXPANDED, | 138 STATE_EXPANDED, |
137 STATE_FOCUSABLE, | 139 STATE_FOCUSABLE, |
138 STATE_FOCUSED, | 140 STATE_FOCUSED, |
139 STATE_HASPOPUP, | 141 STATE_HASPOPUP, |
140 STATE_HOTTRACKED, | 142 STATE_HOTTRACKED, |
141 STATE_INDETERMINATE, | 143 STATE_INDETERMINATE, |
142 STATE_INVISIBLE, | 144 STATE_INVISIBLE, |
143 STATE_LINKED, | 145 STATE_LINKED, |
144 STATE_MULTISELECTABLE, | 146 STATE_MULTISELECTABLE, |
145 STATE_OFFSCREEN, | 147 STATE_OFFSCREEN, |
146 STATE_PRESSED, | 148 STATE_PRESSED, |
147 STATE_PROTECTED, | 149 STATE_PROTECTED, |
148 STATE_READONLY, | 150 STATE_READONLY, |
| 151 STATE_REQUIRED, |
149 STATE_SELECTABLE, | 152 STATE_SELECTABLE, |
150 STATE_SELECTED, | 153 STATE_SELECTED, |
151 STATE_TRAVERSED, | 154 STATE_TRAVERSED, |
152 STATE_BUSY, | 155 STATE_UNAVAILABLE, |
153 STATE_UNAVAILABLE | 156 STATE_VERTICAL, |
| 157 STATE_VISITED, |
| 158 NUM_STATES |
154 }; | 159 }; |
155 | 160 |
| 161 COMPILE_ASSERT(NUM_STATES <= 31, state_enum_not_too_large); |
| 162 |
156 // Additional optional attributes that can be optionally attached to | 163 // Additional optional attributes that can be optionally attached to |
157 // a node. | 164 // a node. |
158 enum StringAttribute { | 165 enum StringAttribute { |
159 // Document attributes. | 166 // Document attributes. |
160 ATTR_DOC_URL, | 167 ATTR_DOC_URL, |
161 ATTR_DOC_TITLE, | 168 ATTR_DOC_TITLE, |
162 ATTR_DOC_MIMETYPE, | 169 ATTR_DOC_MIMETYPE, |
163 ATTR_DOC_DOCTYPE, | 170 ATTR_DOC_DOCTYPE, |
164 | 171 |
165 // Attributes that could apply to any node. | 172 // Attributes that could apply to any node. |
| 173 ATTR_ACCESS_KEY, |
166 ATTR_ACTION, | 174 ATTR_ACTION, |
| 175 ATTR_CONTAINER_LIVE_RELEVANT, |
| 176 ATTR_CONTAINER_LIVE_STATUS, |
167 ATTR_DESCRIPTION, | 177 ATTR_DESCRIPTION, |
168 ATTR_DISPLAY, | 178 ATTR_DISPLAY, |
169 ATTR_HELP, | 179 ATTR_HELP, |
170 ATTR_HTML_TAG, | 180 ATTR_HTML_TAG, |
| 181 ATTR_LIVE_RELEVANT, |
| 182 ATTR_LIVE_STATUS, |
| 183 ATTR_ROLE, |
171 ATTR_SHORTCUT, | 184 ATTR_SHORTCUT, |
172 ATTR_URL, | 185 ATTR_URL, |
173 NUM_STRING_ATTRIBUTES | |
174 }; | 186 }; |
175 | 187 |
176 enum IntAttribute { | 188 enum IntAttribute { |
177 // Document attributes. | 189 // Document attributes. |
178 ATTR_DOC_SCROLLX, | 190 ATTR_DOC_SCROLLX, |
179 ATTR_DOC_SCROLLY, | 191 ATTR_DOC_SCROLLY, |
180 | 192 |
181 // Editable text attributes. | 193 // Editable text attributes. |
182 ATTR_TEXT_SEL_START, | 194 ATTR_TEXT_SEL_START, |
183 ATTR_TEXT_SEL_END, | 195 ATTR_TEXT_SEL_END, |
184 | 196 |
185 // Table attributes. | 197 // Table attributes. |
186 ATTR_TABLE_ROW_COUNT, | 198 ATTR_TABLE_ROW_COUNT, |
187 ATTR_TABLE_COLUMN_COUNT, | 199 ATTR_TABLE_COLUMN_COUNT, |
188 | 200 |
189 // Table cell attributes. | 201 // Table cell attributes. |
190 ATTR_TABLE_CELL_COLUMN_INDEX, | 202 ATTR_TABLE_CELL_COLUMN_INDEX, |
191 ATTR_TABLE_CELL_COLUMN_SPAN, | 203 ATTR_TABLE_CELL_COLUMN_SPAN, |
192 ATTR_TABLE_CELL_ROW_INDEX, | 204 ATTR_TABLE_CELL_ROW_INDEX, |
193 ATTR_TABLE_CELL_ROW_SPAN, | 205 ATTR_TABLE_CELL_ROW_SPAN, |
194 | 206 |
195 NUM_INT_ATTRIBUTES | 207 // Tree control attributes. |
| 208 ATTR_HIERARCHICAL_LEVEL, |
| 209 }; |
| 210 |
| 211 enum FloatAttribute { |
| 212 // Document attributes. |
| 213 ATTR_DOC_LOADING_PROGRESS, |
| 214 |
| 215 // Range attributes. |
| 216 ATTR_VALUE_FOR_RANGE, |
| 217 ATTR_MIN_VALUE_FOR_RANGE, |
| 218 ATTR_MAX_VALUE_FOR_RANGE, |
| 219 }; |
| 220 |
| 221 enum BoolAttribute { |
| 222 // Document attributes. |
| 223 ATTR_DOC_LOADED, |
| 224 |
| 225 // True if a checkbox or radio button is in the "mixed" state. |
| 226 ATTR_BUTTON_MIXED, |
| 227 |
| 228 // Live region attributes. |
| 229 ATTR_CONTAINER_LIVE_ATOMIC, |
| 230 ATTR_CONTAINER_LIVE_BUSY, |
| 231 ATTR_LIVE_ATOMIC, |
| 232 ATTR_LIVE_BUSY, |
196 }; | 233 }; |
197 | 234 |
198 // Empty constructor, for serialization. | 235 // Empty constructor, for serialization. |
199 WebAccessibility(); | 236 WebAccessibility(); |
200 | 237 |
201 // Construct from a WebAccessibilityObject. Recursively creates child | 238 // Construct from a WebAccessibilityObject. Recursively creates child |
202 // nodes as needed to complete the tree. Adds |src| to |cache| and | 239 // nodes as needed to complete the tree. Adds |src| to |cache| and |
203 // stores its cache ID. | 240 // stores its cache ID. |
204 WebAccessibility(const WebKit::WebAccessibilityObject& src, | 241 WebAccessibility(const WebKit::WebAccessibilityObject& src, |
205 WebKit::WebAccessibilityCache* cache, | 242 WebKit::WebAccessibilityCache* cache, |
206 bool include_children); | 243 bool include_children); |
207 | 244 |
208 ~WebAccessibility(); | 245 ~WebAccessibility(); |
209 | 246 |
| 247 #ifndef NDEBUG |
| 248 std::string DebugString(bool recursive); |
| 249 #endif |
| 250 |
210 private: | 251 private: |
211 // Initialize an already-created struct, same as the constructor above. | 252 // Initialize an already-created struct, same as the constructor above. |
212 void Init(const WebKit::WebAccessibilityObject& src, | 253 void Init(const WebKit::WebAccessibilityObject& src, |
213 WebKit::WebAccessibilityCache* cache, | 254 WebKit::WebAccessibilityCache* cache, |
214 bool include_children); | 255 bool include_children); |
215 | 256 |
216 // Returns true if |ancestor| is the first unignored parent of |child|, | 257 // Returns true if |ancestor| is the first unignored parent of |child|, |
217 // which means that when walking up the parent chain from |child|, | 258 // which means that when walking up the parent chain from |child|, |
218 // |ancestor| is the *first* ancestor that isn't marked as | 259 // |ancestor| is the *first* ancestor that isn't marked as |
219 // accessibilityIsIgnored(). | 260 // accessibilityIsIgnored(). |
220 bool IsParentUnignoredOf(const WebKit::WebAccessibilityObject& ancestor, | 261 bool IsParentUnignoredOf(const WebKit::WebAccessibilityObject& ancestor, |
221 const WebKit::WebAccessibilityObject& child); | 262 const WebKit::WebAccessibilityObject& child); |
222 | 263 |
223 public: | 264 public: |
224 // This is a simple serializable struct. All member variables should be | 265 // This is a simple serializable struct. All member variables should be |
225 // copyable. | 266 // copyable. |
226 int32 id; | 267 int32 id; |
227 string16 name; | 268 string16 name; |
228 string16 value; | 269 string16 value; |
229 Role role; | 270 Role role; |
230 uint32 state; | 271 uint32 state; |
231 gfx::Rect location; | 272 gfx::Rect location; |
232 std::map<StringAttribute, string16> string_attributes; | 273 std::map<StringAttribute, string16> string_attributes; |
233 std::map<IntAttribute, int32> int_attributes; | 274 std::map<IntAttribute, int32> int_attributes; |
| 275 std::map<FloatAttribute, float> float_attributes; |
| 276 std::map<BoolAttribute, bool> bool_attributes; |
234 std::vector<WebAccessibility> children; | 277 std::vector<WebAccessibility> children; |
235 std::vector<int32> indirect_child_ids; | 278 std::vector<int32> indirect_child_ids; |
236 std::vector<std::pair<string16, string16> > html_attributes; | 279 std::vector<std::pair<string16, string16> > html_attributes; |
237 std::vector<int32> line_breaks; | 280 std::vector<int32> line_breaks; |
238 std::vector<int32> cell_ids; // For a table, the cell ids in row-major order. | 281 |
| 282 // For a table, the cell ids in row-major order, with duplicate entries |
| 283 // when there's a rowspan or colspan, and with -1 for missing cells. |
| 284 // There are always exactly rows * columns entries. |
| 285 std::vector<int32> cell_ids; |
| 286 |
| 287 // For a table, the unique cell ids in row-major order of their first |
| 288 // occurrence. |
| 289 std::vector<int32> unique_cell_ids; |
239 }; | 290 }; |
240 | 291 |
241 } // namespace webkit_glue | 292 } // namespace webkit_glue |
242 | 293 |
243 #endif // WEBKIT_GLUE_WEBACCESSIBILITY_H_ | 294 #endif // WEBKIT_GLUE_WEBACCESSIBILITY_H_ |
OLD | NEW |