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 #include "content/browser/accessibility/browser_accessibility_android.h" | 5 #include "content/browser/accessibility/browser_accessibility_android.h" |
6 | 6 |
7 #include "base/i18n/break_iterator.h" | 7 #include "base/i18n/break_iterator.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
12 #include "content/app/strings/grit/content_strings.h" | 12 #include "content/app/strings/grit/content_strings.h" |
13 #include "content/browser/accessibility/browser_accessibility_manager_android.h" | 13 #include "content/browser/accessibility/browser_accessibility_manager_android.h" |
14 #include "content/common/accessibility_messages.h" | 14 #include "content/common/accessibility_messages.h" |
15 #include "content/public/common/content_client.h" | 15 #include "content/public/common/content_client.h" |
16 #include "third_party/skia/include/core/SkColor.h" | 16 #include "third_party/skia/include/core/SkColor.h" |
17 #include "ui/accessibility/platform/ax_android_constants.h" | 17 #include "ui/accessibility/platform/ax_android_constants.h" |
| 18 #include "ui/accessibility/platform/ax_snapshot_node_android_platform.h" |
18 | 19 |
19 namespace { | 20 namespace { |
20 | 21 |
21 const base::char16 kSecurePasswordBullet = 0x2022; | 22 const base::char16 kSecurePasswordBullet = 0x2022; |
22 | 23 |
23 // These are enums from android.text.InputType in Java: | 24 // These are enums from android.text.InputType in Java: |
24 enum { | 25 enum { |
25 ANDROID_TEXT_INPUTTYPE_TYPE_NULL = 0, | 26 ANDROID_TEXT_INPUTTYPE_TYPE_NULL = 0, |
26 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME = 0x4, | 27 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME = 0x4, |
27 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME_DATE = 0x14, | 28 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME_DATE = 0x14, |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 } | 322 } |
322 | 323 |
323 return sole_interesting_node; | 324 return sole_interesting_node; |
324 } | 325 } |
325 | 326 |
326 bool BrowserAccessibilityAndroid::CanOpenPopup() const { | 327 bool BrowserAccessibilityAndroid::CanOpenPopup() const { |
327 return HasState(ui::AX_STATE_HASPOPUP); | 328 return HasState(ui::AX_STATE_HASPOPUP); |
328 } | 329 } |
329 | 330 |
330 const char* BrowserAccessibilityAndroid::GetClassName() const { | 331 const char* BrowserAccessibilityAndroid::GetClassName() const { |
331 const char* class_name = NULL; | 332 return ui::AXSnapshotNodeAndroid::AXRoleToAndroidClassName( |
332 | 333 GetRole(), PlatformGetParent() != nullptr); |
333 switch (GetRole()) { | |
334 case ui::AX_ROLE_SEARCH_BOX: | |
335 case ui::AX_ROLE_SPIN_BUTTON: | |
336 case ui::AX_ROLE_TEXT_FIELD: | |
337 class_name = ui::kAXEditTextClassname; | |
338 break; | |
339 case ui::AX_ROLE_SLIDER: | |
340 class_name = ui::kAXSeekBarClassname; | |
341 break; | |
342 case ui::AX_ROLE_COLOR_WELL: | |
343 case ui::AX_ROLE_COMBO_BOX: | |
344 case ui::AX_ROLE_DATE: | |
345 case ui::AX_ROLE_POP_UP_BUTTON: | |
346 case ui::AX_ROLE_INPUT_TIME: | |
347 class_name = ui::kAXSpinnerClassname; | |
348 break; | |
349 case ui::AX_ROLE_BUTTON: | |
350 case ui::AX_ROLE_MENU_BUTTON: | |
351 class_name = ui::kAXButtonClassname; | |
352 break; | |
353 case ui::AX_ROLE_CHECK_BOX: | |
354 case ui::AX_ROLE_SWITCH: | |
355 class_name = ui::kAXCheckBoxClassname; | |
356 break; | |
357 case ui::AX_ROLE_RADIO_BUTTON: | |
358 class_name = ui::kAXRadioButtonClassname; | |
359 break; | |
360 case ui::AX_ROLE_TOGGLE_BUTTON: | |
361 class_name = ui::kAXToggleButtonClassname; | |
362 break; | |
363 case ui::AX_ROLE_CANVAS: | |
364 case ui::AX_ROLE_IMAGE: | |
365 case ui::AX_ROLE_SVG_ROOT: | |
366 class_name = ui::kAXImageClassname; | |
367 break; | |
368 case ui::AX_ROLE_METER: | |
369 case ui::AX_ROLE_PROGRESS_INDICATOR: | |
370 class_name = ui::kAXProgressBarClassname; | |
371 break; | |
372 case ui::AX_ROLE_TAB_LIST: | |
373 class_name = ui::kAXTabWidgetClassname; | |
374 break; | |
375 case ui::AX_ROLE_GRID: | |
376 case ui::AX_ROLE_TREE_GRID: | |
377 case ui::AX_ROLE_TABLE: | |
378 class_name = ui::kAXGridViewClassname; | |
379 break; | |
380 case ui::AX_ROLE_LIST: | |
381 case ui::AX_ROLE_LIST_BOX: | |
382 case ui::AX_ROLE_DESCRIPTION_LIST: | |
383 class_name = ui::kAXListViewClassname; | |
384 break; | |
385 case ui::AX_ROLE_DIALOG: | |
386 class_name = ui::kAXDialogClassname; | |
387 break; | |
388 case ui::AX_ROLE_ROOT_WEB_AREA: | |
389 if (PlatformGetParent() == nullptr) | |
390 class_name = ui::kAXWebViewClassname; | |
391 else | |
392 class_name = ui::kAXViewClassname; | |
393 break; | |
394 case ui::AX_ROLE_MENU_ITEM: | |
395 case ui::AX_ROLE_MENU_ITEM_CHECK_BOX: | |
396 case ui::AX_ROLE_MENU_ITEM_RADIO: | |
397 class_name = ui::kAXMenuItemClassname; | |
398 break; | |
399 default: | |
400 class_name = ui::kAXViewClassname; | |
401 break; | |
402 } | |
403 | |
404 return class_name; | |
405 } | 334 } |
406 | 335 |
407 base::string16 BrowserAccessibilityAndroid::GetText() const { | 336 base::string16 BrowserAccessibilityAndroid::GetText() const { |
408 if (IsIframe() || | 337 if (IsIframe() || |
409 GetRole() == ui::AX_ROLE_WEB_AREA) { | 338 GetRole() == ui::AX_ROLE_WEB_AREA) { |
410 return base::string16(); | 339 return base::string16(); |
411 } | 340 } |
412 | 341 |
413 // In accordance with ARIA, some elements use their contents as an | 342 // In accordance with ARIA, some elements use their contents as an |
414 // accessibility name, so some elements will have the same name as their | 343 // accessibility name, so some elements will have the same name as their |
(...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1504 int BrowserAccessibilityAndroid::CountChildrenWithRole(ui::AXRole role) const { | 1433 int BrowserAccessibilityAndroid::CountChildrenWithRole(ui::AXRole role) const { |
1505 int count = 0; | 1434 int count = 0; |
1506 for (uint32_t i = 0; i < PlatformChildCount(); i++) { | 1435 for (uint32_t i = 0; i < PlatformChildCount(); i++) { |
1507 if (PlatformGetChild(i)->GetRole() == role) | 1436 if (PlatformGetChild(i)->GetRole() == role) |
1508 count++; | 1437 count++; |
1509 } | 1438 } |
1510 return count; | 1439 return count; |
1511 } | 1440 } |
1512 | 1441 |
1513 } // namespace content | 1442 } // namespace content |
OLD | NEW |