diff options
| author | Feng Cao <fengcao@google.com> | 2021-01-22 13:24:59 -0800 |
|---|---|---|
| committer | Feng Cao <fengcao@google.com> | 2021-02-04 15:42:24 -0800 |
| commit | b965fb4835e59fad35666342d14efad4c27060ae (patch) | |
| tree | c8f4347433f1d7d6d6c7c9810384c5dc5ebe3b53 /core/java | |
| parent | e7a937b035d9cee8ba9f0243ddc051a18b130aad (diff) | |
Allow autofill auth intent result to specify whether the new dataset is ephemeral or not
Test: atest android.autofillservice.cts.inline.InlineAuthenticationTest
Test: atest android.autofillservice.cts.inline
Bug: 175152049
Change-Id: I1f8ee3999e5d5070a0453a4af3aa45b46aeef92d
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/view/autofill/AutofillManager.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java index 794181e388cf..decbf8c0c59e 100644 --- a/core/java/android/view/autofill/AutofillManager.java +++ b/core/java/android/view/autofill/AutofillManager.java @@ -200,6 +200,34 @@ public final class AutofillManager { "android.view.autofill.extra.AUTHENTICATION_RESULT"; /** + * Intent extra: The optional boolean extra field provided by the + * {@link android.service.autofill.AutofillService} accompanying the {@link + * android.service.autofill.Dataset} result of an authentication operation. + * + * <p> Before {@link android.os.Build.VERSION_CODES#R}, if the authentication result is a + * {@link android.service.autofill.Dataset}, it'll be used to autofill the fields, and also + * replace the existing dataset in the cached {@link android.service.autofill.FillResponse}. + * That means if the user clears the field values, the autofill suggestion will show up again + * with the new authenticated Dataset. + * + * <p> In {@link android.os.Build.VERSION_CODES#R}, we added an exception to this behavior + * that if the Dataset being authenticated is a pinned dataset (see + * {@link android.service.autofill.InlinePresentation#isPinned()}), the old Dataset will not be + * replaced. + * + * <p> In {@link android.os.Build.VERSION_CODES#S}, we added this boolean extra field to + * allow the {@link android.service.autofill.AutofillService} to explicitly specify whether + * the returned authenticated Dataset is ephemeral. An ephemeral Dataset will be used to + * autofill once and then thrown away. Therefore, when the boolean extra is set to true, the + * returned Dataset will not replace the old dataset from the existing + * {@link android.service.autofill.FillResponse}. When it's set to false, it will. When it's not + * set, the old dataset will be replaced, unless it is a pinned inline suggestion, which is + * consistent with the behavior in {@link android.os.Build.VERSION_CODES#R}. + */ + public static final String EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET = + "android.view.autofill.extra.AUTHENTICATION_RESULT_EPHEMERAL_DATASET"; + + /** * Intent extra: The optional extras provided by the * {@link android.service.autofill.AutofillService}. * @@ -1755,6 +1783,11 @@ public final class AutofillManager { if (newClientState != null) { responseData.putBundle(EXTRA_CLIENT_STATE, newClientState); } + if (data.getExtras().containsKey(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET)) { + responseData.putBoolean(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET, + data.getBooleanExtra(EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET, + false)); + } try { mService.setAuthenticationResult(responseData, mSessionId, authenticationId, mContext.getUserId()); |
