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

Commit e38ff355 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix a race when an editText was removed and added immediately again" into main

parents 2b361b73 8cd5cb68
Loading
Loading
Loading
Loading
+31 −17
Original line number Diff line number Diff line
@@ -2557,21 +2557,24 @@ public final class InputMethodManager {
    public boolean hideSoftInputFromWindow(IBinder windowToken, @HideFlags int flags,
            ResultReceiver resultReceiver) {
        return hideSoftInputFromWindow(windowToken, flags, resultReceiver,
                SoftInputShowHideReason.HIDE_SOFT_INPUT);
                SoftInputShowHideReason.HIDE_SOFT_INPUT, null);
    }

    private boolean hideSoftInputFromWindow(IBinder windowToken, @HideFlags int flags,
            ResultReceiver resultReceiver, @SoftInputShowHideReason int reason) {
            ResultReceiver resultReceiver, @SoftInputShowHideReason int reason,
            @Nullable ImeTracker.Token statsToken) {
        // Get served view initially for statsToken creation.
        final View initialServedView;
        synchronized (mH) {
            initialServedView = getServedViewLocked();
        }

        final var statsToken = ImeTracker.forLogging().onStart(ImeTracker.TYPE_HIDE,
        if (statsToken == null) {
            statsToken = ImeTracker.forLogging().onStart(ImeTracker.TYPE_HIDE,
                    ImeTracker.ORIGIN_CLIENT, reason, ImeTracker.isFromUser(initialServedView));
        ImeTracker.forLatency().onRequestHide(statsToken,
                ImeTracker.ORIGIN_CLIENT, reason, ActivityThread::currentApplication);
            ImeTracker.forLatency().onRequestHide(statsToken, ImeTracker.ORIGIN_CLIENT, reason,
                    ActivityThread::currentApplication);
        }
        ImeTracing.getInstance().triggerClientDump("InputMethodManager#hideSoftInputFromWindow",
                this, null /* icProto */);
        checkFocus();
@@ -2665,8 +2668,14 @@ public final class InputMethodManager {

            ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_CLIENT_VIEW_SERVED);

            return IInputMethodManagerGlobalInvoker.hideSoftInput(mClient, view.getWindowToken(),
                    statsToken, flags, null, reason, mAsyncShowHideMethodEnabled);
            if (Flags.refactorInsetsController()) {
                return hideSoftInputFromWindow(view.getWindowToken(), flags,
                        null /* resultReceiver */, reason, statsToken);
            } else {
                return IInputMethodManagerGlobalInvoker.hideSoftInput(mClient,
                        view.getWindowToken(), statsToken, flags, null, reason,
                        mAsyncShowHideMethodEnabled);
            }
        }
    }

@@ -3162,7 +3171,7 @@ public final class InputMethodManager {
                if (rootInsets != null && rootInsets.isVisible(WindowInsets.Type.ime())) {
                    hideSoftInputFromWindow(view.getWindowToken(), hideFlags,
                            null /* resultReceiver */,
                            SoftInputShowHideReason.HIDE_TOGGLE_SOFT_INPUT);
                            SoftInputShowHideReason.HIDE_TOGGLE_SOFT_INPUT, null);
                } else {
                    showSoftInput(view, showFlags, null /* resultReceiver */,
                            SoftInputShowHideReason.SHOW_TOGGLE_SOFT_INPUT);
@@ -3740,6 +3749,10 @@ public final class InputMethodManager {

            ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_CLIENT_VIEW_SERVED);

            if (Flags.refactorInsetsController()) {
                mCurRootView.getInsetsController().hide(WindowInsets.Type.ime(),
                        false /* fromIme */, statsToken);
            } else {
                IInputMethodManagerGlobalInvoker.hideSoftInput(
                        mClient,
                        rootView.getWindowToken(),
@@ -3750,6 +3763,7 @@ public final class InputMethodManager {
                        true /*async */);
            }
        }
    }

    /**
     * Register for IME state callbacks and applying visibility in