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

Commit 7165fae4 authored by Yohei Yukawa's avatar Yohei Yukawa Committed by Android (Google) Code Review
Browse files

Merge "Rename IInputContext to IRemoteInputConnection"

parents b4b5a0bc e893ec4f
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -36,9 +36,9 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.InputMethodSession;

import com.android.internal.inputmethod.IRemoteInputConnection;
import com.android.internal.os.HandlerCaller;
import com.android.internal.os.SomeArgs;
import com.android.internal.view.IInputContext;
import com.android.internal.view.IInputMethodSession;

class IInputMethodSessionWrapper extends IInputMethodSession.Stub
@@ -144,7 +144,7 @@ class IInputMethodSessionWrapper extends IInputMethodSession.Stub
                final SomeArgs args = (SomeArgs) msg.obj;
                try {
                    mInputMethodSession.invalidateInputInternal((EditorInfo) args.arg1,
                            (IInputContext) args.arg2, msg.arg1);
                            (IRemoteInputConnection) args.arg2, msg.arg1);
                } finally {
                    args.recycle();
                }
@@ -221,9 +221,10 @@ class IInputMethodSessionWrapper extends IInputMethodSession.Stub
    }

    @Override
    public void invalidateInput(EditorInfo editorInfo, IInputContext inputContext,  int sessionId) {
    public void invalidateInput(EditorInfo editorInfo, IRemoteInputConnection inputConnection,
            int sessionId) {
        mCaller.executeOrSendMessage(mCaller.obtainMessageIOO(
                DO_INVALIDATE_INPUT, sessionId, editorInfo, inputContext));
                DO_INVALIDATE_INPUT, sessionId, editorInfo, inputConnection));
    }

    @Override
+10 −8
Original line number Diff line number Diff line
@@ -41,11 +41,11 @@ import android.window.ImeOnBackInvokedDispatcher;

import com.android.internal.inputmethod.CancellationGroup;
import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
import com.android.internal.inputmethod.IRemoteInputConnection;
import com.android.internal.inputmethod.InputMethodNavButtonFlags;
import com.android.internal.os.HandlerCaller;
import com.android.internal.os.SomeArgs;
import com.android.internal.view.IInlineSuggestionsRequestCallback;
import com.android.internal.view.IInputContext;
import com.android.internal.view.IInputMethod;
import com.android.internal.view.IInputMethodSession;
import com.android.internal.view.IInputSessionCallback;
@@ -98,7 +98,7 @@ class IInputMethodWrapper extends IInputMethod.Stub
     *
     * <p>This field must be set and cleared only from the binder thread(s), where the system
     * guarantees that {@link #bindInput(InputBinding)},
     * {@link #startInput(IBinder, IInputContext, int, EditorInfo, boolean, boolean)}, and
     * {@link #startInput(IBinder, IRemoteInputConnection, int, EditorInfo, boolean, boolean)}, and
     * {@link #unbindInput()} are called with the same order as the original calls
     * in {@link com.android.server.inputmethod.InputMethodManagerService}.
     * See {@link IBinder#FLAG_ONEWAY} for detailed semantics.</p>
@@ -195,7 +195,8 @@ class IInputMethodWrapper extends IInputMethod.Stub
            case DO_START_INPUT: {
                final SomeArgs args = (SomeArgs) msg.obj;
                final IBinder startInputToken = (IBinder) args.arg1;
                final IInputContext inputContext = (IInputContext) ((SomeArgs) args.arg2).arg1;
                final IRemoteInputConnection remoteIc =
                        (IRemoteInputConnection) ((SomeArgs) args.arg2).arg1;
                final ImeOnBackInvokedDispatcher imeDispatcher =
                        (ImeOnBackInvokedDispatcher) ((SomeArgs) args.arg2).arg2;
                final EditorInfo info = (EditorInfo) args.arg3;
@@ -203,8 +204,8 @@ class IInputMethodWrapper extends IInputMethod.Stub
                final boolean restarting = args.argi5 == 1;
                @InputMethodNavButtonFlags
                final int navButtonFlags = args.argi6;
                final InputConnection ic = inputContext != null
                        ? new RemoteInputConnection(mTarget, inputContext, cancellationGroup)
                final InputConnection ic = remoteIc != null
                        ? new RemoteInputConnection(mTarget, remoteIc, cancellationGroup)
                        : null;
                info.makeCompatible(mTargetSdkVersion);
                inputMethod.dispatchStartInputWithToken(ic, info, restarting, startInputToken,
@@ -329,7 +330,8 @@ class IInputMethodWrapper extends IInputMethod.Stub
        }
        mCancellationGroup = new CancellationGroup();
        InputConnection ic = new RemoteInputConnection(mTarget,
                IInputContext.Stub.asInterface(binding.getConnectionToken()), mCancellationGroup);
                IRemoteInputConnection.Stub.asInterface(binding.getConnectionToken()),
                mCancellationGroup);
        InputBinding nu = new InputBinding(ic, binding);
        mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_SET_INPUT_CONTEXT, nu));
    }
@@ -349,7 +351,7 @@ class IInputMethodWrapper extends IInputMethod.Stub

    @BinderThread
    @Override
    public void startInput(IBinder startInputToken, IInputContext inputContext,
    public void startInput(IBinder startInputToken, IRemoteInputConnection inputConnection,
            EditorInfo attribute, boolean restarting,
            @InputMethodNavButtonFlags int navButtonFlags,
            @NonNull ImeOnBackInvokedDispatcher imeDispatcher) {
@@ -358,7 +360,7 @@ class IInputMethodWrapper extends IInputMethod.Stub
            mCancellationGroup = new CancellationGroup();
        }
        SomeArgs args = SomeArgs.obtain();
        args.arg1 = inputContext;
        args.arg1 = inputConnection;
        args.arg2 = imeDispatcher;
        mCaller.executeOrSendMessage(mCaller.obtainMessageOOOOII(DO_START_INPUT, startInputToken,
                args, attribute, mCancellationGroup, restarting ? 1 : 0, navButtonFlags));
+3 −3
Original line number Diff line number Diff line
@@ -143,6 +143,7 @@ import android.window.WindowMetricsHelper;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.inputmethod.IInputContentUriToken;
import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
import com.android.internal.inputmethod.IRemoteInputConnection;
import com.android.internal.inputmethod.ImeTracing;
import com.android.internal.inputmethod.InputMethodNavButtonFlags;
import com.android.internal.inputmethod.InputMethodPrivilegedOperations;
@@ -150,7 +151,6 @@ import com.android.internal.inputmethod.InputMethodPrivilegedOperationsRegistry;
import com.android.internal.inputmethod.SoftInputShowHideReason;
import com.android.internal.util.RingBuffer;
import com.android.internal.view.IInlineSuggestionsRequestCallback;
import com.android.internal.view.IInputContext;
import com.android.internal.view.InlineSuggestionsRequestInfo;

import java.io.FileDescriptor;
@@ -1255,10 +1255,10 @@ public class InputMethodService extends AbstractInputMethodService {
         */
        @Override
        public final void invalidateInputInternal(@NonNull EditorInfo editorInfo,
                @NonNull IInputContext inputContext, int sessionId) {
                @NonNull IRemoteInputConnection inputConnection, int sessionId) {
            if (mStartedInputConnection instanceof RemoteInputConnection) {
                final RemoteInputConnection ric = (RemoteInputConnection) mStartedInputConnection;
                if (!ric.isSameConnection(inputContext)) {
                if (!ric.isSameConnection(inputConnection)) {
                    // This is not an error, and can be safely ignored.
                    if (DEBUG) {
                        Log.d(TAG, "ignoring invalidateInput() due to context mismatch.");
+9 −9
Original line number Diff line number Diff line
@@ -35,10 +35,10 @@ import android.view.inputmethod.TextAttribute;

import com.android.internal.inputmethod.CancellationGroup;
import com.android.internal.inputmethod.CompletableFutureUtil;
import com.android.internal.inputmethod.IInputContextInvoker;
import com.android.internal.inputmethod.IRemoteInputConnection;
import com.android.internal.inputmethod.IRemoteInputConnectionInvoker;
import com.android.internal.inputmethod.ImeTracing;
import com.android.internal.inputmethod.InputConnectionProtoDumper;
import com.android.internal.view.IInputContext;
import com.android.internal.view.IInputMethod;

import java.lang.ref.WeakReference;
@@ -51,8 +51,8 @@ import java.util.concurrent.CompletableFuture;
 * {@link com.android.internal.inputmethod.RemoteInputConnectionImpl} running on the IME client
 * (editor app) process then waits replies as needed.</p>
 *
 * <p>See also {@link IInputContext} for the actual {@link android.os.Binder} IPC protocols under
 * the hood.</p>
 * <p>See also {@link IRemoteInputConnection} for the actual {@link android.os.Binder} IPC protocols
 * under the hood.</p>
 */
final class RemoteInputConnection implements InputConnection {
    private static final String TAG = "RemoteInputConnection";
@@ -60,7 +60,7 @@ final class RemoteInputConnection implements InputConnection {
    private static final int MAX_WAIT_TIME_MILLIS = 2000;

    @NonNull
    private final IInputContextInvoker mInvoker;
    private final IRemoteInputConnectionInvoker mInvoker;

    private static final class InputMethodServiceInternalHolder {
        @NonNull
@@ -97,15 +97,15 @@ final class RemoteInputConnection implements InputConnection {

    RemoteInputConnection(
            @NonNull WeakReference<InputMethodServiceInternal> inputMethodService,
            IInputContext inputContext, @NonNull CancellationGroup cancellationGroup) {
            IRemoteInputConnection inputConnection, @NonNull CancellationGroup cancellationGroup) {
        mImsInternal = new InputMethodServiceInternalHolder(inputMethodService);
        mInvoker = IInputContextInvoker.create(inputContext);
        mInvoker = IRemoteInputConnectionInvoker.create(inputConnection);
        mCancellationGroup = cancellationGroup;
    }

    @AnyThread
    public boolean isSameConnection(@NonNull IInputContext inputContext) {
        return mInvoker.isSameConnection(inputContext);
    public boolean isSameConnection(@NonNull IRemoteInputConnection inputConnection) {
        return mInvoker.isSameConnection(inputConnection);
    }

    RemoteInputConnection(@NonNull RemoteInputConnection original, int sessionId) {
+2 −2
Original line number Diff line number Diff line
@@ -108,7 +108,6 @@ import com.android.internal.inputmethod.StartInputFlags;
import com.android.internal.inputmethod.StartInputReason;
import com.android.internal.inputmethod.UnbindReason;
import com.android.internal.os.SomeArgs;
import com.android.internal.view.IInputContext;
import com.android.internal.view.IInputMethodManager;
import com.android.internal.view.IInputMethodSession;

@@ -283,7 +282,8 @@ public final class InputMethodManager {

    /**
     * Provide this to {@link IInputMethodManager#startInputOrWindowGainedFocus(
     * int, IInputMethodClient, IBinder, int, int, int, EditorInfo, IInputContext, int)} to receive
     * int, IInputMethodClient, IBinder, int, int, int, EditorInfo,
     * com.android.internal.inputmethod.IRemoteInputConnection, int)} to receive
     * {@link android.window.OnBackInvokedCallback} registrations from IME.
     */
    private final ImeOnBackInvokedDispatcher mImeDispatcher =
Loading