Loading core/java/android/inputmethodservice/IInputMethodSessionWrapper.java +5 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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(); } Loading Loading @@ -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 Loading core/java/android/inputmethodservice/IInputMethodWrapper.java +10 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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> Loading Loading @@ -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; Loading @@ -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, Loading Loading @@ -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)); } Loading @@ -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) { Loading @@ -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)); Loading core/java/android/inputmethodservice/InputMethodService.java +3 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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."); Loading core/java/android/inputmethodservice/RemoteInputConnection.java +9 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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"; Loading @@ -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 Loading Loading @@ -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) { Loading core/java/android/view/inputmethod/InputMethodManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading
core/java/android/inputmethodservice/IInputMethodSessionWrapper.java +5 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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(); } Loading Loading @@ -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 Loading
core/java/android/inputmethodservice/IInputMethodWrapper.java +10 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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> Loading Loading @@ -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; Loading @@ -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, Loading Loading @@ -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)); } Loading @@ -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) { Loading @@ -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)); Loading
core/java/android/inputmethodservice/InputMethodService.java +3 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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."); Loading
core/java/android/inputmethodservice/RemoteInputConnection.java +9 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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"; Loading @@ -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 Loading Loading @@ -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) { Loading
core/java/android/view/inputmethod/InputMethodManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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