OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "webkit/glue/webaccessibility.h" | 5 #include "webkit/glue/webaccessibility.h" |
6 | 6 |
7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityCache.h" | 8 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityCache.h" |
9 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityObject.h" | 9 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityObject.h" |
10 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityRole.h" | 10 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityRole.h" |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 default: | 220 default: |
221 return WebAccessibility::ROLE_UNKNOWN; | 221 return WebAccessibility::ROLE_UNKNOWN; |
222 } | 222 } |
223 } | 223 } |
224 | 224 |
225 uint32 ConvertState(const WebAccessibilityObject& o) { | 225 uint32 ConvertState(const WebAccessibilityObject& o) { |
226 uint32 state = 0; | 226 uint32 state = 0; |
227 if (o.isChecked()) | 227 if (o.isChecked()) |
228 state |= (1 << WebAccessibility::STATE_CHECKED); | 228 state |= (1 << WebAccessibility::STATE_CHECKED); |
229 | 229 |
| 230 if (o.isCollapsed()) |
| 231 state |= (1 << WebAccessibility::STATE_COLLAPSED); |
| 232 |
230 if (o.canSetFocusAttribute()) | 233 if (o.canSetFocusAttribute()) |
231 state |= (1 << WebAccessibility::STATE_FOCUSABLE); | 234 state |= (1 << WebAccessibility::STATE_FOCUSABLE); |
232 | 235 |
233 if (o.isFocused()) | 236 if (o.isFocused()) |
234 state |= (1 << WebAccessibility::STATE_FOCUSED); | 237 state |= (1 << WebAccessibility::STATE_FOCUSED); |
235 | 238 |
| 239 if (o.roleValue() == WebKit::WebAccessibilityRolePopUpButton) { |
| 240 state |= (1 << WebAccessibility::STATE_HASPOPUP); |
| 241 |
| 242 if (!o.isCollapsed()) |
| 243 state |= (1 << WebAccessibility::STATE_EXPANDED); |
| 244 } |
| 245 |
236 if (o.isHovered()) | 246 if (o.isHovered()) |
237 state |= (1 << WebAccessibility::STATE_HOTTRACKED); | 247 state |= (1 << WebAccessibility::STATE_HOTTRACKED); |
238 | 248 |
239 if (o.isIndeterminate()) | 249 if (o.isIndeterminate()) |
240 state |= (1 << WebAccessibility::STATE_INDETERMINATE); | 250 state |= (1 << WebAccessibility::STATE_INDETERMINATE); |
241 | 251 |
242 if (o.isAnchor()) | 252 if (!o.isVisible()) |
| 253 state |= (1 << WebAccessibility::STATE_INVISIBLE); |
| 254 |
| 255 if (o.isLinked()) |
243 state |= (1 << WebAccessibility::STATE_LINKED); | 256 state |= (1 << WebAccessibility::STATE_LINKED); |
244 | 257 |
245 if (o.isMultiSelectable()) | 258 if (o.isMultiSelectable()) |
246 state |= (1 << WebAccessibility::STATE_MULTISELECTABLE); | 259 state |= (1 << WebAccessibility::STATE_MULTISELECTABLE); |
247 | 260 |
248 if (o.isOffScreen()) | 261 if (o.isOffScreen()) |
249 state |= (1 << WebAccessibility::STATE_OFFSCREEN); | 262 state |= (1 << WebAccessibility::STATE_OFFSCREEN); |
250 | 263 |
251 if (o.isPressed()) | 264 if (o.isPressed()) |
252 state |= (1 << WebAccessibility::STATE_PRESSED); | 265 state |= (1 << WebAccessibility::STATE_PRESSED); |
253 | 266 |
254 if (o.isPasswordField()) | 267 if (o.isPasswordField()) |
255 state |= (1 << WebAccessibility::STATE_PROTECTED); | 268 state |= (1 << WebAccessibility::STATE_PROTECTED); |
256 | 269 |
257 if (o.isReadOnly()) | 270 if (o.isReadOnly()) |
258 state |= (1 << WebAccessibility::STATE_READONLY); | 271 state |= (1 << WebAccessibility::STATE_READONLY); |
259 | 272 |
| 273 if (o.canSetSelectedAttribute()) |
| 274 state |= (1 << WebAccessibility::STATE_SELECTABLE); |
| 275 |
| 276 if (o.isSelected()) |
| 277 state |= (1 << WebAccessibility::STATE_SELECTED); |
| 278 |
260 if (o.isVisited()) | 279 if (o.isVisited()) |
261 state |= (1 << WebAccessibility::STATE_TRAVERSED); | 280 state |= (1 << WebAccessibility::STATE_TRAVERSED); |
262 | 281 |
263 if (!o.isEnabled()) | 282 if (!o.isEnabled()) |
264 state |= (1 << WebAccessibility::STATE_UNAVAILABLE); | 283 state |= (1 << WebAccessibility::STATE_UNAVAILABLE); |
265 | 284 |
266 return state; | 285 return state; |
267 } | 286 } |
268 | 287 |
269 WebAccessibility::WebAccessibility() | 288 WebAccessibility::WebAccessibility() |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 // The child may be invalid due to issues in webkit accessibility code. | 362 // The child may be invalid due to issues in webkit accessibility code. |
344 // Don't add children are invalid thus preventing a crash. | 363 // Don't add children are invalid thus preventing a crash. |
345 // https://bugs.webkit.org/show_bug.cgi?id=44149 | 364 // https://bugs.webkit.org/show_bug.cgi?id=44149 |
346 // TODO(ctguil): We may want to remove this check as webkit stabilizes. | 365 // TODO(ctguil): We may want to remove this check as webkit stabilizes. |
347 if (child.isValid()) | 366 if (child.isValid()) |
348 children.push_back(WebAccessibility(child, cache)); | 367 children.push_back(WebAccessibility(child, cache)); |
349 } | 368 } |
350 } | 369 } |
351 | 370 |
352 } // namespace webkit_glue | 371 } // namespace webkit_glue |
OLD | NEW |