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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user