Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1150)

Side by Side Diff: content/browser/accessibility/browser_accessibility_android.cc

Issue 1872013002: Fix Android accessibility for editable text fields (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update test expectation Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 17
18 namespace { 18 namespace {
19 19
20 const base::char16 kSecurePasswordBullet = 0x2022;
21
20 // These are enums from android.text.InputType in Java: 22 // These are enums from android.text.InputType in Java:
21 enum { 23 enum {
22 ANDROID_TEXT_INPUTTYPE_TYPE_NULL = 0, 24 ANDROID_TEXT_INPUTTYPE_TYPE_NULL = 0,
23 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME = 0x4, 25 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME = 0x4,
24 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME_DATE = 0x14, 26 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME_DATE = 0x14,
25 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME_TIME = 0x24, 27 ANDROID_TEXT_INPUTTYPE_TYPE_DATETIME_TIME = 0x24,
26 ANDROID_TEXT_INPUTTYPE_TYPE_NUMBER = 0x2, 28 ANDROID_TEXT_INPUTTYPE_TYPE_NUMBER = 0x2,
27 ANDROID_TEXT_INPUTTYPE_TYPE_PHONE = 0x3, 29 ANDROID_TEXT_INPUTTYPE_TYPE_PHONE = 0x3,
28 ANDROID_TEXT_INPUTTYPE_TYPE_TEXT = 0x1, 30 ANDROID_TEXT_INPUTTYPE_TYPE_TEXT = 0x1,
29 ANDROID_TEXT_INPUTTYPE_TYPE_TEXT_URI = 0x11, 31 ANDROID_TEXT_INPUTTYPE_TYPE_TEXT_URI = 0x11,
(...skipping 29 matching lines...) Expand all
59 } 61 }
60 62
61 bool BrowserAccessibilityAndroid::IsNative() const { 63 bool BrowserAccessibilityAndroid::IsNative() const {
62 return true; 64 return true;
63 } 65 }
64 66
65 void BrowserAccessibilityAndroid::OnLocationChanged() { 67 void BrowserAccessibilityAndroid::OnLocationChanged() {
66 manager()->NotifyAccessibilityEvent(ui::AX_EVENT_LOCATION_CHANGED, this); 68 manager()->NotifyAccessibilityEvent(ui::AX_EVENT_LOCATION_CHANGED, this);
67 } 69 }
68 70
71 base::string16 BrowserAccessibilityAndroid::GetValue() const {
72 base::string16 value = BrowserAccessibility::GetValue();
73
74 // Optionally replace entered password text with bullet characters
75 // based on a user preference.
76 if (IsPassword()) {
77 bool should_expose = static_cast<BrowserAccessibilityManagerAndroid*>(
78 manager())->ShouldExposePasswordText();
79 if (!should_expose) {
80 value = base::string16(value.size(), kSecurePasswordBullet);
81 }
82 }
83
84 return value;
85 }
86
69 bool BrowserAccessibilityAndroid::PlatformIsLeaf() const { 87 bool BrowserAccessibilityAndroid::PlatformIsLeaf() const {
70 if (BrowserAccessibility::PlatformIsLeaf()) 88 if (BrowserAccessibility::PlatformIsLeaf())
71 return true; 89 return true;
72 90
73 // Iframes are always allowed to contain children. 91 // Iframes are always allowed to contain children.
74 if (IsIframe() || 92 if (IsIframe() ||
75 GetRole() == ui::AX_ROLE_ROOT_WEB_AREA || 93 GetRole() == ui::AX_ROLE_ROOT_WEB_AREA ||
76 GetRole() == ui::AX_ROLE_WEB_AREA) { 94 GetRole() == ui::AX_ROLE_WEB_AREA) {
77 return false; 95 return false;
78 } 96 }
(...skipping 1307 matching lines...) Expand 10 before | Expand all | Expand 10 after
1386 int BrowserAccessibilityAndroid::CountChildrenWithRole(ui::AXRole role) const { 1404 int BrowserAccessibilityAndroid::CountChildrenWithRole(ui::AXRole role) const {
1387 int count = 0; 1405 int count = 0;
1388 for (uint32_t i = 0; i < PlatformChildCount(); i++) { 1406 for (uint32_t i = 0; i < PlatformChildCount(); i++) {
1389 if (PlatformGetChild(i)->GetRole() == role) 1407 if (PlatformGetChild(i)->GetRole() == role)
1390 count++; 1408 count++;
1391 } 1409 }
1392 return count; 1410 return count;
1393 } 1411 }
1394 1412
1395 } // namespace content 1413 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698