Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit faee762b authored by Feng Cao's avatar Feng Cao
Browse files

Make autofill manager service to not clear inline suggestions when IME input finishes

* This, together with the change on the sample IME, gets rid of the
  flicker on the notification pull down/up case, as well as switch
  from username to password.
* This doesn't fix the flicker when coming back from the attribution
  dialog, yet. As in that case the framework sends an empty suggsetion
  upon dismissing the dialog. Will explore fix for that in a separate
  patch.

Test: atest android.autofillservice.cts.inline
Bug: 157515522

Change-Id: Ia6d5d2b517cf400980fb602094c1abafb7100786
parent 829ac140
Loading
Loading
Loading
Loading
+2 −12
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ import com.android.server.autofill.ui.InlineFillUi;
import com.android.server.inputmethod.InputMethodManagerInternal;

import java.lang.ref.WeakReference;
import java.util.Collections;
import java.util.Optional;
import java.util.function.Consumer;

@@ -209,18 +208,9 @@ final class AutofillInlineSuggestionsRequestSession {
        if (mDestroyed || mResponseCallback == null) {
            return;
        }
        if (!mImeInputStarted && mPreviousResponseIsNotEmpty) {
            // 1. if previous response is not empty, and IME is just disconnected from the view,
            // then send empty response to make sure existing responses don't stick around.
            // Although the inline suggestions should disappear when IME hides which removes them
            // from the view hierarchy, but we still send an empty response to indicate that the
            // previous suggestions are invalid now.
            if (sVerbose) Slog.v(TAG, "Send empty inline response");
            updateResponseToImeUncheckLocked(new InlineSuggestionsResponse(Collections.EMPTY_LIST));
            mPreviousResponseIsNotEmpty = false;
        } else if (mImeInputViewStarted && mInlineFillUi != null && match(mAutofillId,
        if (mImeInputViewStarted && mInlineFillUi != null && match(mAutofillId,
                mImeCurrentFieldId)) {
            // 2. if IME is visible, and response is not null, send the response
            // if IME is visible, and response is not null, send the response
            InlineSuggestionsResponse response = mInlineFillUi.getInlineSuggestionsResponse();
            boolean isEmptyResponse = response.getInlineSuggestions().isEmpty();
            if (isEmptyResponse && !mPreviousResponseIsNotEmpty) {