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

Commit d93a8f93 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Invalidate autofill session on IME disconnect" into tm-dev am: c17eae26

parents c2f6a875 c17eae26
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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();
            }
        }
    };

+22 −0
Original line number Diff line number Diff line
@@ -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,