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

Commit 3400795a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Propagate setImeWindowStatus() to WMS"

parents 2eaae562 69e68024
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -281,6 +281,25 @@ public abstract class WindowManagerInternal {
     */
    public abstract void clearLastInputMethodWindowForTransition();

    /**
     * Notifies WindowManagerService that the current IME window status is being changed.
     *
     * <p>Only {@link com.android.server.InputMethodManagerService} is the expected and tested
     * caller of this method.</p>
     *
     * @param imeToken token to track the active input method. Corresponding IME windows can be
     *                 identified by checking {@link android.view.WindowManager.LayoutParams#token}.
     *                 Note that there is no guarantee that the corresponding window is already
     *                 created
     * @param imeWindowVisible whether the active IME thinks that its window should be visible or
     *                         hidden, no matter how WindowManagerService will react / has reacted
     *                         to corresponding API calls.  Note that this state is not guaranteed
     *                         to be synchronized with state in WindowManagerService.
     * @param targetWindowToken token to identify the target window that the IME is associated with.
     */
    public abstract void updateInputMethodWindowStatus(IBinder imeToken, boolean imeWindowVisible,
            IBinder targetWindowToken);

    /**
      * Returns true when the hardware keyboard is available.
      */
+4 −1
Original line number Diff line number Diff line
@@ -1863,8 +1863,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
            return;
        }

        final StartInputInfo info;
        synchronized (mMethodMap) {
            final StartInputInfo info = mStartInputMap.get(startInputToken);
            info = mStartInputMap.get(startInputToken);
            if (info == null) {
                throw new InvalidParameterException("Unknown startInputToken=" + startInputToken);
            }
@@ -1872,6 +1873,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
            mBackDisposition = backDisposition;
            updateSystemUiLocked(token, vis, backDisposition);
        }
        mWindowManagerInternal.updateInputMethodWindowStatus(info.mImeToken,
                (vis & InputMethodService.IME_VISIBLE) != 0, info.mTargetWindow);
    }

    private void updateSystemUi(IBinder token, int vis, int backDisposition) {
+12 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_CONFIGURATION
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DRAG;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_FOCUS_LIGHT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT_METHOD;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_KEEP_SCREEN_ON;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ORIENTATION;
@@ -7913,6 +7914,17 @@ public class WindowManagerService extends IWindowManager.Stub
            }
        }

        @Override
        public void updateInputMethodWindowStatus(IBinder imeToken, boolean imeWindowVisible,
                IBinder targetWindowToken) {
            // TODO (b/34628091): Use this method to address the window animation issue.
            if (DEBUG_INPUT_METHOD) {
                Slog.w(TAG_WM, "updateInputMethodWindowStatus: imeToken=" + imeToken
                        + " imeWindowVisible=" + imeWindowVisible
                        + " targetWindowToken=" + targetWindowToken);
            }
        }

        @Override
        public boolean isHardKeyboardAvailable() {
            synchronized (mWindowMap) {