| 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 |