From 092f75439788ba2e7fa21b4f4d614f7d6b7d0851 Mon Sep 17 00:00:00 2001 From: Phil Weaver Date: Wed, 21 Mar 2018 12:33:59 -0700 Subject: Use on-screen text in a11y text changed event The beforeText in a text changed event was coming from the underlying CharSequence, not what was on the screen. As a result, it was not sent for password fields. Now we just provide whatever is on the screen, which is obfuscated to the same degree it is for a user looking at the screen. Bug: 75324441 Test: Verified with password field in TalkBack sample app. Also atest CtsAccessibilityServiceTestCases Change-Id: Ib7a10313d2f9d0e44d2052e81e47f19967a67bc4 --- core/java/android/widget/TextView.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'core/java/android/widget/TextView.java') diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 72c8426482aa..6feb283a97b0 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -12406,9 +12406,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener + " before=" + before + " after=" + after + ": " + buffer); } - if (AccessibilityManager.getInstance(mContext).isEnabled() - && !isPasswordInputType(getInputType()) && !hasPasswordTransformationMethod()) { - mBeforeText = buffer.toString(); + if (AccessibilityManager.getInstance(mContext).isEnabled() && (mTransformed != null)) { + mBeforeText = mTransformed.toString(); } TextView.this.sendBeforeTextChanged(buffer, start, before, after); -- cgit v1.2.3