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