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

Commit 1f0b1817 authored by Feng Cao's avatar Feng Cao
Browse files

Resend previous inline suggestions when IME hides and shows again

* when IME hides (onInputViewFinish), autofill manager service will
  send an empty inline suggestions response to clear the previous
  non-empty response
* when IME shows again (onInputViewStart), if the focus didn't change,
  the autofill manager service will resend the previous non-empty inline
  suggestions response to the IME

Test: atest android.autofillservice.cts.inline
Test: atest CtsInputMethodTestCases
Bug: 152577411
Bug: 153702698

Change-Id: Ic6a4b1db54c93040dc47c2a0d1cdc2e98f64d8ff
parent 232ffbfe
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.internal.view.InlineSuggestionsRequestInfo;
import com.android.server.inputmethod.InputMethodManagerInternal;

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

@@ -205,12 +206,9 @@ final class AutofillInlineSuggestionsRequestSession {
            // Although the inline suggestions should disappear when IME hides which removes them
            // from the view hierarchy, but we still send an empty response to be extra safe.

            // TODO(b/149945531): clear the existing suggestions when IME is hide, once the bug is
            //  fixed.
            //if (sDebug) Log.d(TAG, "Send empty inline response");
            //updateResponseToImeUncheckLocked(new InlineSuggestionsResponse(Collections
            // .EMPTY_LIST));
            //mPreviousResponseIsNotEmpty = false;
            if (sDebug) Log.d(TAG, "Send empty inline response");
            updateResponseToImeUncheckLocked(new InlineSuggestionsResponse(Collections.EMPTY_LIST));
            mPreviousResponseIsNotEmpty = false;
        } else if (mImeInputViewStarted && mInlineSuggestionsResponse != null && match(mAutofillId,
                mImeCurrentFieldId)) {
            // 2. if IME is visible, and response is not null, send the response
@@ -224,9 +222,6 @@ final class AutofillInlineSuggestionsRequestSession {
                        + mInlineSuggestionsResponse.getInlineSuggestions().size());
            }
            updateResponseToImeUncheckLocked(mInlineSuggestionsResponse);
            // TODO(b/149945531): don't set the response to null so it's cached, once the bug is
            //  fixed.
            mInlineSuggestionsResponse = null;
            mPreviousResponseIsNotEmpty = !isEmptyResponse;
        }
    }