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

Commit cbf1be81 authored by Charles Chen's avatar Charles Chen
Browse files

Remove updateImeDisplayId

After InputMethodService migrated to WindowProviderService,
the display is initialized by getInitialDisplayId().
Therefore, we don't need updateImeDisplayId() to initialize
InputMethodService's Display anymore.

Test: atest CtsInputMethodTestCases MultiDisplaySystemDecorationTests
Bug: 149463653

Change-Id: Ia78139b5defc48c8b0354fc1e212eeb38fd71ba4
parent 76dd171d
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -170,8 +170,8 @@ class IInputMethodWrapper extends IInputMethod.Stub
            case DO_INITIALIZE_INTERNAL: {
                SomeArgs args = (SomeArgs) msg.obj;
                try {
                    inputMethod.initializeInternal((IBinder) args.arg1, msg.arg1,
                            (IInputMethodPrivilegedOperations) args.arg2, (int) args.arg3);
                    inputMethod.initializeInternal((IBinder) args.arg1,
                            (IInputMethodPrivilegedOperations) args.arg2, msg.arg1);
                } finally {
                    args.recycle();
                }
@@ -279,11 +279,10 @@ class IInputMethodWrapper extends IInputMethod.Stub

    @BinderThread
    @Override
    public void initializeInternal(IBinder token, int displayId,
            IInputMethodPrivilegedOperations privOps, int configChanges) {
    public void initializeInternal(IBinder token, IInputMethodPrivilegedOperations privOps,
            int configChanges) {
        mCaller.executeOrSendMessage(
                mCaller.obtainMessageIOOO(DO_INITIALIZE_INTERNAL, displayId, token, privOps,
                        configChanges));
                mCaller.obtainMessageIOO(DO_INITIALIZE_INTERNAL, configChanges, token, privOps));
    }

    @BinderThread
+1 −21
Original line number Diff line number Diff line
@@ -589,7 +589,7 @@ public class InputMethodService extends AbstractInputMethodService {
         */
        @MainThread
        @Override
        public final void initializeInternal(@NonNull IBinder token, int displayId,
        public final void initializeInternal(@NonNull IBinder token,
                IInputMethodPrivilegedOperations privilegedOperations, int configChanges) {
            if (InputMethodPrivilegedOperationsRegistry.isRegistered(token)) {
                Log.w(TAG, "The token has already registered, ignore this initialization.");
@@ -599,7 +599,6 @@ public class InputMethodService extends AbstractInputMethodService {
            mConfigTracker.onInitialize(configChanges);
            mPrivOps.set(privilegedOperations);
            InputMethodPrivilegedOperationsRegistry.put(token, mPrivOps);
            updateInputMethodDisplay(displayId);
            attachToken(token);
            Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
        }
@@ -634,25 +633,6 @@ public class InputMethodService extends AbstractInputMethodService {
            mWindow.setToken(token);
        }

        // TODO(b/149463653): remove updateInputMethodDisplay(int displayId) since we'll get the
        // right display by attachToWindowToken
        /**
         * {@inheritDoc}
         * @hide
         */
        @MainThread
        @Override
        public void updateInputMethodDisplay(int displayId) {
            if (getDisplayId() == displayId) {
                return;
            }
            // Update display for adding IME window to the right display.
            // TODO(b/111364446) Need to address context lifecycle issue if need to re-create
            // for update resources & configuration correctly when show soft input
            // in non-default display.
            updateDisplay(displayId);
        }

        /**
         * {@inheritDoc}
         *
+1 −14
Original line number Diff line number Diff line
@@ -96,8 +96,6 @@ public interface InputMethod {
     *
     * @param token special token for the system to identify
     *              {@link InputMethodService}
     * @param displayId The id of the display that current IME shown.
     *                  Used for {{@link #updateInputMethodDisplay(int)}}
     * @param privilegedOperations IPC endpoint to do some privileged
     *                             operations that are allowed only to the
     *                             current IME.
@@ -105,9 +103,8 @@ public interface InputMethod {
     * @hide
     */
    @MainThread
    default void initializeInternal(IBinder token, int displayId,
    default void initializeInternal(IBinder token,
            IInputMethodPrivilegedOperations privilegedOperations, int configChanges) {
        updateInputMethodDisplay(displayId);
        attachToken(token);
    }

@@ -142,16 +139,6 @@ public interface InputMethod {
    @MainThread
    public void attachToken(IBinder token);

    /**
     * Update context display according to given displayId.
     *
     * @param displayId The id of the display that need to update for context.
     * @hide
     */
    @MainThread
    default void updateInputMethodDisplay(int displayId) {
    }

    /**
     * Bind a new application environment in to the input method, so that it
     * can later start and stop input processing.
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ import com.android.internal.view.InlineSuggestionsRequestInfo;
 * {@hide}
 */
oneway interface IInputMethod {
    void initializeInternal(IBinder token, int displayId, IInputMethodPrivilegedOperations privOps,
    void initializeInternal(IBinder token, IInputMethodPrivilegedOperations privOps,
             int configChanges);

    void onCreateInlineSuggestionsRequest(in InlineSuggestionsRequestInfo requestInfo,
+5 −7
Original line number Diff line number Diff line
@@ -2544,9 +2544,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
                }
                if (DEBUG) Slog.v(TAG, "Initiating attach with token: " + mCurToken);
                // Dispatch display id for InputMethodService to update context display.
                executeOrSendMessage(mCurMethod, mCaller.obtainMessageIOOO(
                        MSG_INITIALIZE_IME, mCurTokenDisplayId, mCurMethod, mCurToken,
                        mMethodMap.get(mCurMethodId).getConfigChanges()));
                executeOrSendMessage(mCurMethod, mCaller.obtainMessageIOO(MSG_INITIALIZE_IME,
                        mMethodMap.get(mCurMethodId).getConfigChanges(), mCurMethod, mCurToken));
                scheduleNotifyImeUidToAudioService(mCurMethodUid);
                if (mCurClient != null) {
                    clearClientSessionLocked(mCurClient);
@@ -4364,12 +4363,11 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
                try {
                    if (DEBUG) {
                        Slog.v(TAG, "Sending attach of token: " + args.arg2 + " for display: "
                                + msg.arg1);
                                + mCurTokenDisplayId);
                    }
                    final IBinder token = (IBinder) args.arg2;
                    ((IInputMethod) args.arg1).initializeInternal(token, msg.arg1,
                            new InputMethodPrivilegedOperationsImpl(this, token),
                            (int) args.arg3);
                    ((IInputMethod) args.arg1).initializeInternal(token,
                            new InputMethodPrivilegedOperationsImpl(this, token), msg.arg1);
                } catch (RemoteException e) {
                }
                args.recycle();