From db1e72190f85a4fd33914da742300bbd6ebf8955 Mon Sep 17 00:00:00 2001 From: Ming-Shin Lu Date: Fri, 18 Mar 2022 22:19:33 +0800 Subject: [PATCH] Move DEBUG_INPUT_METHOD logs into proto logs for debugging IME snapshot Bug: 224664116 Test: build, verify with enabling proto log: adb shell wm logging enable WM_DEBUG_IME, see if IME snapshot logs printed. Change-Id: Ia61e6f3955178d9a4deb68ba1d8ae7d4ebb341d1 --- data/etc/services.core.protolog.json | 30 +++++++++++++++++++ .../com/android/server/wm/DisplayContent.java | 22 ++++++++------ 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json index e898f570a6b88..a2f3a59535e01 100644 --- a/data/etc/services.core.protolog.json +++ b/data/etc/services.core.protolog.json @@ -19,6 +19,12 @@ "group": "WM_DEBUG_LOCKTASK", "at": "com\/android\/server\/wm\/LockTaskController.java" }, + "-2111539867": { + "message": "remove IME snapshot, caller=%s", + "level": "INFO", + "group": "WM_DEBUG_IME", + "at": "com\/android\/server\/wm\/DisplayContent.java" + }, "-2109936758": { "message": "removeAppToken make exiting: %s", "level": "VERBOSE", @@ -265,6 +271,12 @@ "group": "WM_DEBUG_RESIZE", "at": "com\/android\/server\/wm\/WindowState.java" }, + "-1814361639": { + "message": "Set IME snapshot position: (%d, %d)", + "level": "INFO", + "group": "WM_DEBUG_IME", + "at": "com\/android\/server\/wm\/DisplayContent.java" + }, "-1810446914": { "message": "Trying to update display configuration for system\/invalid process.", "level": "WARN", @@ -307,6 +319,12 @@ "group": "WM_DEBUG_REMOTE_ANIMATIONS", "at": "com\/android\/server\/wm\/RemoteAnimationController.java" }, + "-1777010776": { + "message": "create IME snapshot for %s, buff width=%s, height=%s", + "level": "INFO", + "group": "WM_DEBUG_IME", + "at": "com\/android\/server\/wm\/DisplayContent.java" + }, "-1770075711": { "message": "Adding window client %s that is dead, aborting.", "level": "WARN", @@ -1375,6 +1393,12 @@ "group": "WM_DEBUG_ORIENTATION", "at": "com\/android\/server\/wm\/RootWindowContainer.java" }, + "-658964693": { + "message": "onWindowAnimationFinished, wc=%s, type=%s, imeSnapshot=%s, target=%s", + "level": "INFO", + "group": "WM_DEBUG_IME", + "at": "com\/android\/server\/wm\/DisplayContent.java" + }, "-655104359": { "message": "Frontmost changed immersion: %s", "level": "DEBUG", @@ -1939,6 +1963,12 @@ "group": "WM_DEBUG_WINDOW_ORGANIZER", "at": "com\/android\/server\/wm\/TaskFragmentOrganizerController.java" }, + "-57750640": { + "message": "show IME snapshot, ime target=%s, callers=%s", + "level": "INFO", + "group": "WM_DEBUG_IME", + "at": "com\/android\/server\/wm\/DisplayContent.java" + }, "-55185509": { "message": "setFocusedTask: taskId=%d touchedActivity=%s", "level": "DEBUG", diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 7367320295104..efbf8e726f095 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -4046,11 +4046,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp private SurfaceControl createImeSurface(SurfaceControl.ScreenshotHardwareBuffer b, Transaction t) { final HardwareBuffer buffer = b.getHardwareBuffer(); - if (DEBUG_INPUT_METHOD) { - Slog.d(TAG, "create IME snapshot for " - + mImeTarget + ", buff width=" + buffer.getWidth() - + ", height=" + buffer.getHeight()); - } + ProtoLog.i(WM_DEBUG_IME, "create IME snapshot for %s, buff width=%s, height=%s", + mImeTarget, buffer.getWidth(), buffer.getHeight()); final WindowState imeWindow = mImeTarget.getDisplayContent().mInputMethodWindow; final ActivityRecord activity = mImeTarget.mActivityRecord; final SurfaceControl imeParent = mImeTarget.mAttrs.type == TYPE_BASE_APPLICATION @@ -4086,12 +4083,14 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mImeTarget.mAttrs.surfaceInsets.top); t.setPosition(imeSurface, surfacePosition.x, surfacePosition.y); } + ProtoLog.i(WM_DEBUG_IME, "Set IME snapshot position: (%d, %d)", surfacePosition.x, + surfacePosition.y); return imeSurface; } private void removeImeSurface(Transaction t) { if (mImeSurface != null) { - if (DEBUG_INPUT_METHOD) Slog.d(TAG, "remove IME snapshot"); + ProtoLog.i(WM_DEBUG_IME, "remove IME snapshot, caller=%s", Debug.getCallers(6)); t.remove(mImeSurface); mImeSurface = null; } @@ -4121,9 +4120,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp // to reflect the true IME insets visibility and the app task layout as possible. if (isValidSnapshot && dc.getInsetsStateController().getImeSourceProvider().isImeShowing()) { - if (DEBUG_INPUT_METHOD) { - Slog.d(TAG, "show IME snapshot, ime target=" + mImeTarget); - } + ProtoLog.i(WM_DEBUG_IME, "show IME snapshot, ime target=%s, callers=%s", + mImeTarget, Debug.getCallers(6)); t.show(mImeSurface); } else if (!isValidSnapshot) { removeImeSurface(t); @@ -4490,6 +4488,12 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp * hierarchy. */ void onWindowAnimationFinished(@NonNull WindowContainer wc, int type) { + if (mImeScreenshot != null) { + ProtoLog.i(WM_DEBUG_IME, + "onWindowAnimationFinished, wc=%s, type=%s, imeSnapshot=%s, target=%s", + wc, SurfaceAnimator.animationTypeToString(type), mImeScreenshot, + mImeScreenshot.getImeTarget()); + } if (mImeScreenshot != null && (wc == mImeScreenshot.getImeTarget() || wc.getWindow(w -> w == mImeScreenshot.getImeTarget()) != null) && (type & WindowState.EXIT_ANIMATING_TYPES) != 0) {