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

Commit c89e6b1c authored by Cosmin Băieș's avatar Cosmin Băieș Committed by Android (Google) Code Review
Browse files

Merge "Improve IME layering/input/control target dumping" into main

parents 48aeca96 4b8103dd
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -4576,14 +4576,14 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
                        bindingController.getCurTokenDisplayId());
        mSoftInputShowHideHistory.addEntry(new SoftInputShowHideHistory.Entry(
                userData.mImeBindingState.mFocusedWindowClient,
                userData.mImeBindingState.mFocusedWindowEditorInfo,
                info.focusedWindowName, userData.mImeBindingState.mFocusedWindowSoftInputMode,
                reason, userData.mInFullscreenMode, info.requestWindowName,
                info.imeControlTargetName, info.imeLayerTargetName, info.imeSurfaceParentName,
                userData.mImeBindingState.mFocusedWindowEditorInfo, info.mFocusedWindowName,
                userData.mImeBindingState.mFocusedWindowSoftInputMode, reason,
                userData.mInFullscreenMode, info.mRequestWindowName, info.mImeLayeringTargetName,
                info.mImeInputTargetName, info.mImeControlTargetName, info.mImeSurfaceParentName,
                userId));

        if (statsToken != null) {
            mImeTrackerService.onImmsUpdate(statsToken, info.requestWindowName);
            mImeTrackerService.onImmsUpdate(statsToken, info.mRequestWindowName);
        }
    }

+16 −10
Original line number Diff line number Diff line
@@ -58,20 +58,22 @@ final class SoftInputShowHideHistory {
        @NonNull
        final String mRequestWindowName;
        @Nullable
        final String mImeControlTargetName;
        final String mImeLayeringTargetName;
        @Nullable
        final String mImeInputTargetName;
        @Nullable
        final String mImeTargetNameFromWm;
        final String mImeControlTargetName;
        @Nullable
        final String mImeSurfaceParentName;
        @UserIdInt
        final int mImeUserId;

        Entry(ClientState client, EditorInfo editorInfo,
                String focusedWindowName,
        Entry(@Nullable ClientState client, @Nullable EditorInfo editorInfo,
                @NonNull String focusedWindowName,
                @WindowManager.LayoutParams.SoftInputModeFlags int softInputMode,
                @SoftInputShowHideReason int reason,
                boolean inFullscreenMode, String requestWindowName,
                @Nullable String imeControlTargetName, @Nullable String imeTargetName,
                @SoftInputShowHideReason int reason, boolean inFullscreenMode,
                @NonNull String requestWindowName, @Nullable String imeLayeringTargetName,
                @Nullable String imeInputTargetName, @Nullable String imeControlTargetName,
                @Nullable String imeSurfaceParentName, @UserIdInt int imeUserId) {
            mClientState = client;
            mEditorInfo = editorInfo;
@@ -82,8 +84,9 @@ final class SoftInputShowHideHistory {
            mWallTime = System.currentTimeMillis();
            mInFullscreenMode = inFullscreenMode;
            mRequestWindowName = requestWindowName;
            mImeLayeringTargetName = imeLayeringTargetName;
            mImeInputTargetName = imeInputTargetName;
            mImeControlTargetName = imeControlTargetName;
            mImeTargetNameFromWm = imeTargetName;
            mImeSurfaceParentName = imeSurfaceParentName;
            mImeUserId = imeUserId;
        }
@@ -128,10 +131,13 @@ final class SoftInputShowHideHistory {
            pw.println("  requestWindowName=" + entry.mRequestWindowName);

            pw.print(prefix);
            pw.println("  imeControlTargetName=" + entry.mImeControlTargetName);
            pw.println("  imeLayeringTargetName=" + entry.mImeLayeringTargetName);

            pw.print(prefix);
            pw.println("  imeTargetNameFromWm=" + entry.mImeTargetNameFromWm);
            pw.println("  imeInputTargetName=" + entry.mImeInputTargetName);

            pw.print(prefix);
            pw.println("  imeControlTargetName=" + entry.mImeControlTargetName);

            pw.print(prefix);
            pw.println("  imeSurfaceParentName=" + entry.mImeSurfaceParentName);
+21 −11
Original line number Diff line number Diff line
@@ -3746,18 +3746,20 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp

        pw.println();
        super.dump(pw, prefix, dumpAll);
        pw.print(prefix);
        if (mHasSetIgnoreOrientationRequest) {
            pw.print("mHasSetIgnoreOrientationRequest=true ");
        }
        pw.print(prefix); pw.print("mHasSetIgnoreOrientationRequest=");
        pw.print(mHasSetIgnoreOrientationRequest);
        pw.print(" ignoreOrientationRequest="); pw.println(getIgnoreOrientationRequest());
        pw.print(prefix); pw.print("mLayoutSeq="); pw.println(mLayoutSeq);

        pw.print("  mCurrentFocus="); pw.println(mCurrentFocus);
        pw.print("  mFocusedApp="); pw.println(mFocusedApp);
        if (mFixedRotationLaunchingApp != null) {
            pw.println("  mFixedRotationLaunchingApp=" + mFixedRotationLaunchingApp);
        }
        pw.print(prefix); pw.print("mImeLayeringTarget="); pw.println(mImeLayeringTarget);
        pw.print(prefix); pw.print("mImeInputTarget="); pw.println(mImeInputTarget);
        pw.print(prefix); pw.print("mImeControlTarget="); pw.println(mImeControlTarget);
        pw.print(prefix); pw.print("mRemoteInsetsControlTarget=");
        pw.println(mRemoteInsetsControlTarget);
        pw.print(prefix); pw.print("mCurrentFocus="); pw.println(mCurrentFocus);
        pw.print(prefix); pw.print("mFocusedApp="); pw.println(mFocusedApp);
        pw.print(prefix); pw.print("mFixedRotationLaunchingApp=");
        pw.println(mFixedRotationLaunchingApp);
        if (mAsyncRotationController != null) {
            mAsyncRotationController.dump(pw, prefix);
        }
@@ -7155,6 +7157,15 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            }
        }

        @Override
        public String toString() {
            return "RemoteInsetsControlTarget{" + Integer.toHexString(System.identityHashCode(this))
                    + " displayId=" + mDisplayId
                    + " requestedVisibleTypes=" + mRequestedVisibleTypes
                    + " animatingTypes=" + mAnimatingTypes
                    + "}";
        }

        public void writeIdentifierToProto(ProtoOutputStream proto, long fieldId) {
            final long token = proto.start(fieldId);
            proto.write(HASH_CODE, System.identityHashCode(this));
@@ -7175,7 +7186,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            proto.write(ANIMATING_TYPES, mAnimatingTypes);
            proto.end(token);
        }

    }

    MagnificationSpec getMagnificationSpec() {
+30 −23
Original line number Diff line number Diff line
@@ -972,33 +972,40 @@ public abstract class WindowManagerInternal {

    /** The information of input method target when IME is requested to show or hide. */
    public static class ImeTargetInfo {
        public final String focusedWindowName;
        public final String requestWindowName;

        /** The window name of IME Insets control target. */
        public final String imeControlTargetName;
        /** The name of the focused window. */
        @NonNull
        public final String mFocusedWindowName;

        /**
         * The current window name of the input method is on top of.
         * <p>
         * Note that the concept of this window is only used to reparent the target window behind
         * the input method window, it may be different from the window reported by
         * {@link com.android.server.inputmethod.InputMethodManagerService#reportStartInput} which
         * has input connection.
         */
        public final String imeLayerTargetName;
        /** The name of the window that requested the IME visibility change. */
        @NonNull
        public final String mRequestWindowName;

        /** The name of the {@link DisplayContent#mImeLayeringTarget}. */
        @NonNull
        public final String mImeLayeringTargetName;

        /** The name of the {@link DisplayContent#mImeInputTarget}. */
        @NonNull
        public final String mImeInputTargetName;

        /** The name of the {@link DisplayContent#mImeControlTarget}. */
        @NonNull
        public final String mImeControlTargetName;

        /** The surface parent of the IME container. */
        public final String imeSurfaceParentName;

        public ImeTargetInfo(String focusedWindowName, String requestWindowName,
                String imeControlTargetName, String imeLayerTargetName,
                String imeSurfaceParentName) {
            this.focusedWindowName = focusedWindowName;
            this.requestWindowName = requestWindowName;
            this.imeControlTargetName = imeControlTargetName;
            this.imeLayerTargetName = imeLayerTargetName;
            this.imeSurfaceParentName = imeSurfaceParentName;
        @NonNull
        public final String mImeSurfaceParentName;

        public ImeTargetInfo(@NonNull String focusedWindowName, @NonNull String requestWindowName,
                @NonNull String imeLayeringTargetName, @NonNull String imeInputTargetName,
                @NonNull String imeControlTargetName, @NonNull String imeSurfaceParentName) {
            mFocusedWindowName = focusedWindowName;
            mRequestWindowName = requestWindowName;
            mImeLayeringTargetName = imeLayeringTargetName;
            mImeInputTargetName = imeInputTargetName;
            mImeControlTargetName = imeControlTargetName;
            mImeSurfaceParentName = imeSurfaceParentName;
        }
    }

+17 −38
Original line number Diff line number Diff line
@@ -7076,21 +7076,6 @@ public class WindowManagerService extends IWindowManager.Stub
        mRoot.dumpTopFocusedDisplayId(pw);
        mRoot.forAllDisplays(dc -> {
            final int displayId = dc.getDisplayId();
            final WindowState imeLayeringTarget = dc.getImeLayeringTarget();
            final InputTarget imeInputTarget = dc.getImeInputTarget();
            final InsetsControlTarget imeControlTarget = dc.getImeControlTarget();
            if (imeLayeringTarget != null) {
                pw.print("  imeLayeringTarget in display# "); pw.print(displayId);
                pw.print(' '); pw.println(imeLayeringTarget);
            }
            if (imeInputTarget != null) {
                pw.print("  imeInputTarget in display# "); pw.print(displayId);
                pw.print(' '); pw.println(imeInputTarget);
            }
            if (imeControlTarget != null) {
                pw.print("  imeControlTarget in display# "); pw.print(displayId);
                pw.print(' '); pw.println(imeControlTarget);
            }
            pw.print("  Minimum task size of display#"); pw.print(displayId);
            pw.print(' '); pw.println(dc.mMinSizeOfResizeableTaskDp);
        });
@@ -8622,43 +8607,37 @@ public class WindowManagerService extends IWindowManager.Stub
            }
        }

        @NonNull
        @Override
        public ImeTargetInfo onToggleImeRequested(boolean show, IBinder focusedToken,
                IBinder requestToken, int displayId) {
        public ImeTargetInfo onToggleImeRequested(boolean show, @NonNull IBinder focusedToken,
                @NonNull IBinder requestToken, int displayId) {
            final String focusedWindowName;
            final String requestWindowName;
            final String imeControlTargetName;
            final String imeLayeringTargetName;
            final String imeInputTargetName;
            final String imeControlTargetName;
            final String imeSurfaceParentName;
            synchronized (mGlobalLock) {
                final WindowState focusedWin = mWindowMap.get(focusedToken);
                focusedWindowName = focusedWin != null ? focusedWin.getName() : "null";
                final WindowState requestWin = mWindowMap.get(requestToken);
                requestWindowName = requestWin != null ? requestWin.getName() : "null";
                focusedWindowName = String.valueOf(mWindowMap.get(focusedToken));
                requestWindowName = String.valueOf(mWindowMap.get(requestToken));
                final DisplayContent dc = mRoot.getDisplayContent(displayId);
                if (dc != null) {
                    final InsetsControlTarget controlTarget = dc.getImeControlTarget();
                    if (controlTarget != null) {
                        final WindowState w = InsetsControlTarget.asWindowOrNull(controlTarget);
                        imeControlTargetName = w != null ? w.getName() : controlTarget.toString();
                    } else {
                        imeControlTargetName = "null";
                    }
                    final WindowState layeringTarget = dc.getImeLayeringTarget();
                    imeLayeringTargetName = layeringTarget != null ? layeringTarget.getName()
                            : "null";
                    final SurfaceControl imeParent = dc.mInputMethodSurfaceParent;
                    imeSurfaceParentName = imeParent != null ? imeParent.toString() : "null";
                    imeLayeringTargetName = String.valueOf(dc.getImeLayeringTarget());
                    imeInputTargetName =  String.valueOf(dc.getImeInputTarget());
                    imeControlTargetName = String.valueOf(dc.getImeControlTarget());
                    imeSurfaceParentName = String.valueOf(dc.mInputMethodSurfaceParent);
                    if (show) {
                        dc.onShowImeRequested();
                    }
                } else {
                    imeControlTargetName = imeLayeringTargetName = imeSurfaceParentName =
                            "no-display";
                    imeLayeringTargetName = "no-display";
                    imeInputTargetName = "no-display";
                    imeControlTargetName = "no-display";
                    imeSurfaceParentName = "no-display";
                }
            }
            return new ImeTargetInfo(focusedWindowName, requestWindowName, imeControlTargetName,
                    imeLayeringTargetName, imeSurfaceParentName);
            return new ImeTargetInfo(focusedWindowName, requestWindowName, imeLayeringTargetName,
                    imeInputTargetName, imeControlTargetName, imeSurfaceParentName);
        }

        @Override
Loading