summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TYM Tsai <tymtsai@google.com> 2022-04-14 15:53:32 +0800
committer TYM Tsai <tymtsai@google.com> 2022-04-20 03:55:33 +0800
commit1f5c147eb5959a7e4fd03b751679cb5e00984c9c (patch)
treebc66869354db5e67f088e40e93025c21e296fb52
parentbbf0074056a2e3122aac2d06ce828f0102bfd5e4 (diff)
Auto append password hint for TextView
Some TextViews are made as password via input type but does not contain autofill password hint. This change auto append a hint for autofill to identify. Bug: 219844915 Test: atest android.autofillservice.cts.dialog.LoginActivityTest Change-Id: Ifd18c56ffe788a601821d178ace41413f9e0454e
-rw-r--r--core/java/android/view/View.java11
-rw-r--r--core/java/android/widget/TextView.java12
2 files changed, 23 insertions, 0 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index e87f47bc3544..91fb16166ba1 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -1281,6 +1281,17 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY = "creditCardExpirationDay";
/**
+ * A hint indicating that this view can be autofilled with a password.
+ *
+ * This is a heuristic-based hint that is meant to be used by UI Toolkit developers when a
+ * view is a password field but doesn't specify a
+ * <code>{@value View#AUTOFILL_HINT_PASSWORD}</code>.
+ * @hide
+ */
+ // TODO(229765029): unhide this for UI toolkit
+ public static final String AUTOFILL_HINT_PASSWORD_AUTO = "passwordAuto";
+
+ /**
* Hints for the autofill services that describes the content of the view.
*/
private @Nullable String[] mAutofillHints;
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index f9c964158e2e..572d97740187 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -6974,6 +6974,18 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
mEditor.mInputType = type;
}
+ @Override
+ public String[] getAutofillHints() {
+ String[] hints = super.getAutofillHints();
+ if (isAnyPasswordInputType()) {
+ if (!ArrayUtils.contains(hints, AUTOFILL_HINT_PASSWORD_AUTO)) {
+ hints = ArrayUtils.appendElement(String.class, hints,
+ AUTOFILL_HINT_PASSWORD_AUTO);
+ }
+ }
+ return hints;
+ }
+
/**
* @return {@code null} if the key listener should use pre-O (locale-independent). Otherwise
* a {@code Locale} object that can be used to customize key various listeners.