diff options
author | Adam He <adamhe@google.com> | 2020-06-18 14:40:17 -0700 |
---|---|---|
committer | Adam He <adamhe@google.com> | 2020-06-22 10:44:20 -0700 |
commit | 8dca7270f8c02ef0b0d7f331ae865a737203a133 (patch) | |
tree | 190c9e646298271560c8c6b3491a1cf0496cdfe5 | |
parent | 26dfdc587fcaef5f68187b6bf1343fd7e2914d32 (diff) |
Add missing cases where empty suggestions should be sent to IME.
1. When regular autofill returned null and augmented autofill is
disabled by password. (regular disabled augmented autofill case is
handled by session being destroyed).
2. If the response contains empty/null datasets or service disabled
autofill when response is received by frameworks.
Bug: 159364411
Test: atest InlineLoginActivityTest
Change-Id: Ic0758e757eacd277a5bf43080fe4db82d603953e
-rw-r--r-- | services/autofill/java/com/android/server/autofill/Session.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index c7490b3b991c..7781b9849df2 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -982,6 +982,10 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState || disableDuration > 0) { // Response is "empty" from an UI point of view, need to notify client. notifyUnavailableToClient(sessionFinishedState, /* autofillableIds= */ null); + synchronized (mLock) { + mInlineSessionController.setInlineFillUiLocked( + InlineFillUi.emptyUi(mCurrentViewId)); + } } if (requestLog != null) { @@ -3084,12 +3088,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState notifyUnavailableToClient(AutofillManager.STATE_FINISHED, autofillableIds); removeSelf(); } else { - if (sVerbose) { - if ((flags & FLAG_PASSWORD_INPUT_TYPE) != 0) { + if ((flags & FLAG_PASSWORD_INPUT_TYPE) != 0) { + if (sVerbose) { Slog.v(TAG, "keeping session " + id + " when service returned null and " + "augmented service is disabled for password fields. " + "AutofillableIds: " + autofillableIds); - } else { + } + mInlineSessionController.hideInlineSuggestionsUiLocked(mCurrentViewId); + } else { + if (sVerbose) { Slog.v(TAG, "keeping session " + id + " when service returned null but " + "it can be augmented. AutofillableIds: " + autofillableIds); } @@ -3115,7 +3122,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // non-null response but without datasets (for example, just SaveInfo) @GuardedBy("mLock") private Runnable triggerAugmentedAutofillLocked(int flags) { - // (TODO: b/141703197) Fix later by passing info to service. + // TODO: (b/141703197) Fix later by passing info to service. if ((flags & FLAG_PASSWORD_INPUT_TYPE) != 0) { return null; } @@ -3160,7 +3167,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState + ComponentName.flattenToShortString(mComponentName) + " not whitelisted "); } logAugmentedAutofillRequestLocked(mode, remoteService.getComponentName(), - mCurrentViewId, isWhitelisted, /*isInline*/null); + mCurrentViewId, isWhitelisted, /* isInline= */ null); return null; } |