Loading services/core/java/com/android/server/inputmethod/InputMethodBindingController.java +4 −0 Original line number Diff line number Diff line Loading @@ -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(); } Loading @@ -257,6 +258,9 @@ final class InputMethodBindingController { } @Override public void onServiceDisconnected(ComponentName name) { synchronized (ImfLock.class) { mService.invalidateAutofillSessionLocked(); } } }; Loading services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +22 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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() Loading Loading @@ -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; } Loading Loading @@ -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, Loading Loading
services/core/java/com/android/server/inputmethod/InputMethodBindingController.java +4 −0 Original line number Diff line number Diff line Loading @@ -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(); } Loading @@ -257,6 +258,9 @@ final class InputMethodBindingController { } @Override public void onServiceDisconnected(ComponentName name) { synchronized (ImfLock.class) { mService.invalidateAutofillSessionLocked(); } } }; Loading
services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +22 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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() Loading Loading @@ -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; } Loading Loading @@ -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, Loading