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

Commit 69772357 authored by Nikolas Havrikov's avatar Nikolas Havrikov
Browse files

Zero out autofill id when no InputConnection

This CL introduces a NO_AUTOFILL_ID constant that can be set as part
of an EditorInfo when there is no InputConnection established.

Test: atest CtsInputMethodTestCases
Bug: 219819349
Change-Id: I99c51fb08f3844461988e7226b65af75f790c6b1
parent 59204683
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -72,6 +72,10 @@ public final class AutofillId implements Parcelable {
        mSessionId = sessionId;
    }

    /** @hide */
    @NonNull
    public static final AutofillId NO_AUTOFILL_ID = new AutofillId(0);

    /** @hide */
    @NonNull
    @TestApi
+10 −1
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ import android.view.KeyEvent;
import android.view.View;
import android.view.ViewRootImpl;
import android.view.WindowManager.LayoutParams.SoftInputModeFlags;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillManager;
import android.window.ImeOnBackInvokedDispatcher;
import android.window.WindowOnBackInvokedDispatcher;
@@ -2323,6 +2324,14 @@ public final class InputMethodManager {
        InputConnection ic = view.onCreateInputConnection(tba);
        if (DEBUG) Log.v(TAG, "Starting input: tba=" + tba + " ic=" + ic);

        // Clear autofill and field ids if a connection could not be established.
        // This ensures that even disconnected EditorInfos have well-defined attributes,
        // making them consistently and straightforwardly comparable.
        if (ic == null) {
            tba.autofillId = AutofillId.NO_AUTOFILL_ID;
            tba.fieldId = 0;
        }

        final Handler icHandler;
        InputBindResult res = null;
        synchronized (mH) {
@@ -2360,7 +2369,7 @@ public final class InputMethodManager {
                mServedInputConnection = null;
                mServedInputConnectionHandler = null;
            }
            RemoteInputConnectionImpl servedInputConnection;
            final RemoteInputConnectionImpl servedInputConnection;
            if (ic != null) {
                mCursorSelStart = tba.initialSelStart;
                mCursorSelEnd = tba.initialSelEnd;