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

Commit 6c821f6e authored by Feng Cao's avatar Feng Cao Committed by Android (Google) Code Review
Browse files

Merge "Introduces the Bundle to inline suggestions APIs to encode custom UI styling information."

parents 117da246 36960ee2
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -23175,7 +23175,7 @@ package android.inputmethodservice {
    method public void onConfigureWindow(android.view.Window, boolean, boolean);
    method public android.view.View onCreateCandidatesView();
    method public android.view.View onCreateExtractTextView();
    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest onCreateInlineSuggestionsRequest();
    method @Nullable public android.view.inputmethod.InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull android.os.Bundle);
    method public android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodImpl onCreateInputMethodInterface();
    method public android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl onCreateInputMethodSessionInterface();
    method public android.view.View onCreateInputView();
@@ -56419,7 +56419,7 @@ package android.view.inline {
    method public int describeContents();
    method @NonNull public android.util.Size getMaxSize();
    method @NonNull public android.util.Size getMinSize();
    method @Nullable public String getStyle();
    method @Nullable public android.os.Bundle getStyle();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.view.inline.InlinePresentationSpec> CREATOR;
  }
@@ -56427,7 +56427,7 @@ package android.view.inline {
  public static final class InlinePresentationSpec.Builder {
    ctor public InlinePresentationSpec.Builder(@NonNull android.util.Size, @NonNull android.util.Size);
    method @NonNull public android.view.inline.InlinePresentationSpec build();
    method @NonNull public android.view.inline.InlinePresentationSpec.Builder setStyle(@Nullable String);
    method @NonNull public android.view.inline.InlinePresentationSpec.Builder setStyle(@Nullable android.os.Bundle);
  }
}
+1 −0
Original line number Diff line number Diff line
@@ -10211,6 +10211,7 @@ package android.service.autofill {
  public abstract class InlineSuggestionRenderService extends android.app.Service {
    ctor public InlineSuggestionRenderService();
    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
    method @Nullable public android.os.Bundle onGetInlineSuggestionsRendererInfo();
    method @Nullable public android.view.View onRenderSuggestion(@NonNull android.service.autofill.InlinePresentation, int, int);
    field public static final String SERVICE_INTERFACE = "android.service.autofill.InlineSuggestionRenderService";
  }
+1 −0
Original line number Diff line number Diff line
@@ -3145,6 +3145,7 @@ package android.service.autofill {
  public abstract class InlineSuggestionRenderService extends android.app.Service {
    ctor public InlineSuggestionRenderService();
    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
    method @Nullable public android.os.Bundle onGetInlineSuggestionsRendererInfo();
    method @Nullable public android.view.View onRenderSuggestion(@NonNull android.service.autofill.InlinePresentation, int, int);
    field public static final String SERVICE_INTERFACE = "android.service.autofill.InlineSuggestionRenderService";
  }
+6 −7
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package android.inputmethodservice;
import android.annotation.BinderThread;
import android.annotation.MainThread;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Binder;
@@ -29,7 +28,6 @@ import android.os.RemoteException;
import android.os.ResultReceiver;
import android.util.Log;
import android.view.InputChannel;
import android.view.autofill.AutofillId;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputBinding;
import android.view.inputmethod.InputConnection;
@@ -46,6 +44,7 @@ import com.android.internal.view.IInputContext;
import com.android.internal.view.IInputMethod;
import com.android.internal.view.IInputMethodSession;
import com.android.internal.view.IInputSessionCallback;
import com.android.internal.view.InlineSuggestionsRequestInfo;
import com.android.internal.view.InputConnectionWrapper;

import java.io.FileDescriptor;
@@ -233,8 +232,9 @@ class IInputMethodWrapper extends IInputMethod.Stub
                return;
            case DO_CREATE_INLINE_SUGGESTIONS_REQUEST:
                args = (SomeArgs) msg.obj;
                inputMethod.onCreateInlineSuggestionsRequest((ComponentName) args.arg1,
                        (AutofillId) args.arg2, (IInlineSuggestionsRequestCallback) args.arg3);
                inputMethod.onCreateInlineSuggestionsRequest(
                        (InlineSuggestionsRequestInfo) args.arg1,
                        (IInlineSuggestionsRequestCallback) args.arg2);
                return;

        }
@@ -279,11 +279,10 @@ class IInputMethodWrapper extends IInputMethod.Stub

    @BinderThread
    @Override
    public void onCreateInlineSuggestionsRequest(ComponentName componentName, AutofillId autofillId,
    public void onCreateInlineSuggestionsRequest(InlineSuggestionsRequestInfo requestInfo,
            IInlineSuggestionsRequestCallback cb) {
        mCaller.executeOrSendMessage(
                mCaller.obtainMessageOOO(DO_CREATE_INLINE_SUGGESTIONS_REQUEST, componentName,
                        autofillId, cb));
                mCaller.obtainMessageOO(DO_CREATE_INLINE_SUGGESTIONS_REQUEST, requestInfo, cb));
    }

    @BinderThread
+16 −11
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.Dialog;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
@@ -74,7 +73,6 @@ import android.view.Window;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.view.autofill.AutofillId;
import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.CursorAnchorInfo;
import android.view.inputmethod.EditorInfo;
@@ -99,6 +97,7 @@ import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
import com.android.internal.inputmethod.InputMethodPrivilegedOperations;
import com.android.internal.inputmethod.InputMethodPrivilegedOperationsRegistry;
import com.android.internal.view.IInlineSuggestionsRequestCallback;
import com.android.internal.view.InlineSuggestionsRequestInfo;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -526,12 +525,13 @@ public class InputMethodService extends AbstractInputMethodService {
         */
        @MainThread
        @Override
        public void onCreateInlineSuggestionsRequest(ComponentName componentName,
                AutofillId autofillId, IInlineSuggestionsRequestCallback cb) {
        public void onCreateInlineSuggestionsRequest(
                @NonNull InlineSuggestionsRequestInfo requestInfo,
                @NonNull IInlineSuggestionsRequestCallback cb) {
            if (DEBUG) {
                Log.d(TAG, "InputMethodService received onCreateInlineSuggestionsRequest()");
            }
            handleOnCreateInlineSuggestionsRequest(componentName, cb);
            handleOnCreateInlineSuggestionsRequest(requestInfo, cb);
        }

        /**
@@ -742,11 +742,14 @@ public class InputMethodService extends AbstractInputMethodService {

    // TODO(b/137800469): Add detailed docs explaining the inline suggestions process.
    /**
     * Returns an {@link InlineSuggestionsRequest} to be sent to Autofill.
     * This method should be implemented by subclass which supports displaying autofill inline
     * suggestion.
     *
     * <p>Should be implemented by subclasses.</p>
     * @param uiExtras the extras that contain the UI renderer related information
     * @return an {@link InlineSuggestionsRequest} to be sent to Autofill.
     */
    public @Nullable InlineSuggestionsRequest onCreateInlineSuggestionsRequest() {
    @Nullable
    public InlineSuggestionsRequest onCreateInlineSuggestionsRequest(@NonNull Bundle uiExtras) {
        return null;
    }

@@ -764,7 +767,8 @@ public class InputMethodService extends AbstractInputMethodService {
    }

    @MainThread
    private void handleOnCreateInlineSuggestionsRequest(@NonNull ComponentName componentName,
    private void handleOnCreateInlineSuggestionsRequest(
            @NonNull InlineSuggestionsRequestInfo requestInfo,
            @NonNull IInlineSuggestionsRequestCallback callback) {
        if (!mInputStarted) {
            try {
@@ -779,8 +783,9 @@ public class InputMethodService extends AbstractInputMethodService {
        if (mInlineSuggestionSession != null) {
            mInlineSuggestionSession.invalidateSession();
        }
        mInlineSuggestionSession = new InlineSuggestionSession(componentName, callback,
                this::getEditorInfoPackageName, this::onCreateInlineSuggestionsRequest,
        mInlineSuggestionSession = new InlineSuggestionSession(requestInfo.getComponentName(),
                callback, this::getEditorInfoPackageName,
                () -> onCreateInlineSuggestionsRequest(requestInfo.getUiExtras()),
                this::getHostInputToken, this::onInlineSuggestionsResponse);
    }

Loading