Merge "Zero out autofill id when no InputConnection"

This commit is contained in:
Nikolas Havrikov
2022-07-01 18:05:05 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 1 deletions

View File

@@ -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

View File

@@ -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;
@@ -2339,6 +2340,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) {
@@ -2376,7 +2385,7 @@ public final class InputMethodManager {
mServedInputConnection = null;
mServedInputConnectionHandler = null;
}
RemoteInputConnectionImpl servedInputConnection;
final RemoteInputConnectionImpl servedInputConnection;
if (ic != null) {
mCursorSelStart = tba.initialSelStart;
mCursorSelEnd = tba.initialSelEnd;