Merge "Invalidate autofill session on IME disconnect" into tm-dev am: c17eae2651 am: d93a8f930d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18646671 Change-Id: Id8b44fa61bda621d1d151abc73e2c19542821ff6 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -247,6 +247,7 @@ final class InputMethodBindingController {
|
||||
private final ServiceConnection mVisibleConnection = new ServiceConnection() {
|
||||
@Override public void onBindingDied(ComponentName name) {
|
||||
synchronized (ImfLock.class) {
|
||||
mService.invalidateAutofillSessionLocked();
|
||||
if (mVisibleBound) {
|
||||
unbindVisibleConnection();
|
||||
}
|
||||
@@ -257,6 +258,9 @@ final class InputMethodBindingController {
|
||||
}
|
||||
|
||||
@Override public void onServiceDisconnected(ComponentName name) {
|
||||
synchronized (ImfLock.class) {
|
||||
mService.invalidateAutofillSessionLocked();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -313,6 +313,15 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
@Nullable
|
||||
private CreateInlineSuggestionsRequest mPendingInlineSuggestionsRequest;
|
||||
|
||||
/**
|
||||
* A callback into the autofill service obtained from the latest call to
|
||||
* {@link #onCreateInlineSuggestionsRequestLocked}, which can be used to invalidate an
|
||||
* autofill session in case the IME process dies.
|
||||
*/
|
||||
@GuardedBy("ImfLock.class")
|
||||
@Nullable
|
||||
private IInlineSuggestionsRequestCallback mInlineSuggestionsRequestCallback;
|
||||
|
||||
@UserIdInt
|
||||
private int mLastSwitchUserId;
|
||||
|
||||
@@ -2176,6 +2185,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
InlineSuggestionsRequestInfo requestInfo, IInlineSuggestionsRequestCallback callback,
|
||||
boolean touchExplorationEnabled) {
|
||||
clearPendingInlineSuggestionsRequestLocked();
|
||||
mInlineSuggestionsRequestCallback = callback;
|
||||
final InputMethodInfo imi = mMethodMap.get(getSelectedMethodIdLocked());
|
||||
try {
|
||||
if (userId == mSettings.getCurrentUserId()
|
||||
@@ -2797,6 +2807,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
if (DEBUG) {
|
||||
Slog.d(TAG, "Avoiding IME startup and unbinding current input method.");
|
||||
}
|
||||
invalidateAutofillSessionLocked();
|
||||
mBindingController.unbindCurrentMethod();
|
||||
return InputBindResult.NO_EDITOR;
|
||||
}
|
||||
@@ -2834,6 +2845,17 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
return mBindingController.bindCurrentMethod();
|
||||
}
|
||||
|
||||
@GuardedBy("ImfLock.class")
|
||||
void invalidateAutofillSessionLocked() {
|
||||
if (mInlineSuggestionsRequestCallback != null) {
|
||||
try {
|
||||
mInlineSuggestionsRequestCallback.onInlineSuggestionsSessionInvalidated();
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Cannot invalidate autofill session.", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@GuardedBy("ImfLock.class")
|
||||
private boolean shouldPreventImeStartupLocked(
|
||||
@NonNull String selectedMethodId,
|
||||
|
||||
Reference in New Issue
Block a user