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

Commit 5fa3f117 authored by Ahaan Ugale's avatar Ahaan Ugale Committed by Android (Google) Code Review
Browse files

Merge "Change to drop down when the inline suggestions don't be shown in IME." into rvc-dev

parents f75aef41 a383f339
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -149,6 +149,11 @@ class InlineSuggestionSession {
     */
    @MainThread
    void invalidate() {
        try {
            mCallback.onInlineSuggestionsSessionInvalidated();
        } catch (RemoteException e) {
            Log.w(TAG, "onInlineSuggestionsSessionInvalidated() remote exception:" + e);
        }
        if (mResponseCallback != null) {
            consumeInlineSuggestionsResponse(EMPTY_RESPONSE);
            mResponseCallback.invalidate();
+3 −0
Original line number Diff line number Diff line
@@ -58,4 +58,7 @@ oneway interface IInlineSuggestionsRequestCallback {
    //  #onFinishInput()} is called on the field specified by the earlier
    //  {@link #onInputMethodStartInput(AutofillId)}.
    void onInputMethodFinishInput();

    // Indicates that the current IME changes inline suggestion session.
    void onInlineSuggestionsSessionInvalidated();
}
+31 −1
Original line number Diff line number Diff line
@@ -103,6 +103,8 @@ final class AutofillInlineSuggestionsRequestSession {
    private boolean mDestroyed = false;
    @GuardedBy("mLock")
    private boolean mPreviousHasNonPinSuggestionShow;
    @GuardedBy("mLock")
    private boolean mImeSessionInvalidated = false;

    AutofillInlineSuggestionsRequestSession(
            @NonNull InputMethodManagerInternal inputMethodManagerInternal, int userId,
@@ -157,7 +159,7 @@ final class AutofillInlineSuggestionsRequestSession {
            Slog.d(TAG,
                    "onInlineSuggestionsResponseLocked called for:" + inlineFillUi.getAutofillId());
        }
        if (mImeRequest == null || mResponseCallback == null) {
        if (mImeRequest == null || mResponseCallback == null || mImeSessionInvalidated) {
            return false;
        }
        // TODO(b/151123764): each session should only correspond to one field.
@@ -191,6 +193,7 @@ final class AutofillInlineSuggestionsRequestSession {
        if (mDestroyed) {
            return;
        }
        mImeSessionInvalidated = false;
        if (sDebug) Slog.d(TAG, "onCreateInlineSuggestionsRequestLocked called: " + mAutofillId);
        mInputMethodManagerInternal.onCreateInlineSuggestionsRequest(mUserId,
                new InlineSuggestionsRequestInfo(mComponentName, mAutofillId, mUiExtras),
@@ -291,6 +294,7 @@ final class AutofillInlineSuggestionsRequestSession {
                return;
            }
            mImeRequestReceived = true;
            mImeSessionInvalidated = false;

            if (request != null && callback != null) {
                mImeRequest = request;
@@ -346,6 +350,20 @@ final class AutofillInlineSuggestionsRequestSession {
        }
    }

    /**
     * Handles the IME session status received from the IME.
     *
     * <p> Should only be invoked in the {@link #mHandler} thread.
     */
    private void handleOnReceiveImeSessionInvalidated() {
        synchronized (mLock) {
            if (mDestroyed) {
                return;
            }
            mImeSessionInvalidated = true;
        }
    }

    private static final class InlineSuggestionsRequestCallbackImpl extends
            IInlineSuggestionsRequestCallback.Stub {

@@ -433,6 +451,18 @@ final class AutofillInlineSuggestionsRequestSession {
                        session, false, false));
            }
        }

        @BinderThread
        @Override
        public void onInlineSuggestionsSessionInvalidated() throws RemoteException {
            if (sDebug) Slog.d(TAG, "onInlineSuggestionsSessionInvalidated() called.");
            final AutofillInlineSuggestionsRequestSession session = mSession.get();
            if (session != null) {
                session.mHandler.sendMessage(obtainMessage(
                        AutofillInlineSuggestionsRequestSession
                                ::handleOnReceiveImeSessionInvalidated, session));
            }
        }
    }

    private static boolean match(@Nullable AutofillId autofillId,
+5 −0
Original line number Diff line number Diff line
@@ -2128,6 +2128,11 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
        public void onInputMethodFinishInput() throws RemoteException {
            mCallback.onInputMethodFinishInput();
        }

        @Override
        public void onInlineSuggestionsSessionInvalidated() throws RemoteException {
            mCallback.onInlineSuggestionsSessionInvalidated();
        }
    }

    /**