diff options
| author | 2022-04-14 15:53:32 +0800 | |
|---|---|---|
| committer | 2022-04-20 03:55:33 +0800 | |
| commit | 1f5c147eb5959a7e4fd03b751679cb5e00984c9c (patch) | |
| tree | bc66869354db5e67f088e40e93025c21e296fb52 | |
| parent | bbf0074056a2e3122aac2d06ce828f0102bfd5e4 (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.java | 11 | ||||
| -rw-r--r-- | core/java/android/widget/TextView.java | 12 |
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. |