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
This commit is contained in:
TYM Tsai
2022-04-14 15:53:32 +08:00
parent bbf0074056
commit 1f5c147eb5
2 changed files with 23 additions and 0 deletions

View File

@@ -1280,6 +1280,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.
*/

View File

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