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

Commit 419e7b5d authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "Clear inline suggestions before onFinishInput" into rvc-dev am:...

Merge "Merge "Clear inline suggestions before onFinishInput" into rvc-dev am: e11fa9a7 am: 0d5c10c2" into rvc-d1-dev-plus-aosp
parents 7dd6b5bb 7c5e4f9c
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.internal.view.IInlineSuggestionsResponseCallback;
import com.android.internal.view.InlineSuggestionsRequestInfo;

import java.lang.ref.WeakReference;
import java.util.Collections;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -58,6 +59,9 @@ import java.util.function.Supplier;
class InlineSuggestionSession {
    private static final String TAG = "ImsInlineSuggestionSession";

    static final InlineSuggestionsResponse EMPTY_RESPONSE = new InlineSuggestionsResponse(
            Collections.emptyList());

    @NonNull
    private final Handler mMainThreadHandler;
    @NonNull
@@ -72,6 +76,10 @@ class InlineSuggestionSession {
    private final Supplier<IBinder> mHostInputTokenSupplier;
    @NonNull
    private final Consumer<InlineSuggestionsResponse> mResponseConsumer;
    // Indicate whether the previous call to the mResponseConsumer is empty or not. If it hasn't
    // been called yet, the value would be null.
    @Nullable
    private Boolean mPreviousResponseIsEmpty;


    /**
@@ -142,6 +150,7 @@ class InlineSuggestionSession {
    @MainThread
    void invalidate() {
        if (mResponseCallback != null) {
            consumeInlineSuggestionsResponse(EMPTY_RESPONSE);
            mResponseCallback.invalidate();
            mResponseCallback = null;
        }
@@ -188,6 +197,17 @@ class InlineSuggestionSession {
        if (DEBUG) {
            Log.d(TAG, "IME receives response: " + response.getInlineSuggestions().size());
        }
        consumeInlineSuggestionsResponse(response);
    }

    @MainThread
    void consumeInlineSuggestionsResponse(@NonNull InlineSuggestionsResponse response) {
        boolean isResponseEmpty = response.getInlineSuggestions().isEmpty();
        if (isResponseEmpty && Boolean.TRUE.equals(mPreviousResponseIsEmpty)) {
            // No-op if both the previous response and current response are empty.
            return;
        }
        mPreviousResponseIsEmpty = isResponseEmpty;
        mResponseConsumer.accept(response);
    }

+1 −0
Original line number Diff line number Diff line
@@ -213,6 +213,7 @@ class InlineSuggestionSessionController {
        mImeInputViewStarted = false;
        mImeInputStarted = false;
        if (mSession != null && mSession.shouldSendImeStatus()) {
            mSession.consumeInlineSuggestionsResponse(InlineSuggestionSession.EMPTY_RESPONSE);
            try {
                mSession.getRequestCallback().onInputMethodFinishInput();
            } catch (RemoteException e) {