From 6902904e9722c4d1add6f87f24ddece5931e0667 Mon Sep 17 00:00:00 2001 From: Ming-Shin Lu Date: Thu, 19 Aug 2021 21:43:54 +0800 Subject: [PATCH] Refine WindowInsets logs - Add WM_DEBUG_WINDOW_INSETS ProtoLogGroup to use for logging general Insets logs in WM core. - Refine InsetsSourceProvider#updateVisibility proto log format to add insets type information. - Add InsetsSurceControl#toString to print control target info. Bug: 197189357 Test: adb shell wm logging enable-text WM_DEBUG_WINDOW_INSETS Test: atest ProtoLogImplTest \ ProtoLogViewerConfigReaderTest \ WmTests:ProtoLogIntegrationTest \ LogDataTypeTest \ protologtool-tests Change-Id: I1f01ce4d9fe5cb17f7bd60a424689260682b1dfc --- .../android/view/InsetsSourceControl.java | 9 ++ .../internal/protolog/ProtoLogGroup.java | 2 + data/etc/services.core.protolog.json | 87 ++++++++++--------- .../server/wm/InsetsSourceProvider.java | 16 ++-- .../com/android/server/wm/WindowState.java | 6 +- 5 files changed, 68 insertions(+), 52 deletions(-) diff --git a/core/java/android/view/InsetsSourceControl.java b/core/java/android/view/InsetsSourceControl.java index 1506ee4c2c7a4..9d98a3e4b0e19 100644 --- a/core/java/android/view/InsetsSourceControl.java +++ b/core/java/android/view/InsetsSourceControl.java @@ -185,6 +185,15 @@ public class InsetsSourceControl implements Parcelable { return result; } + @Override + public String toString() { + return "InsetsSourceControl: {" + + "type=" + InsetsState.typeToString(mType) + + ", mSurfacePosition=" + mSurfacePosition + + ", mInsetsHint=" + mInsetsHint + + "}"; + } + public void dump(String prefix, PrintWriter pw) { pw.print(prefix); pw.print("InsetsSourceControl type="); pw.print(InsetsState.typeToString(mType)); diff --git a/core/java/com/android/internal/protolog/ProtoLogGroup.java b/core/java/com/android/internal/protolog/ProtoLogGroup.java index ce3efd35ee484..0f153bcdf1d48 100644 --- a/core/java/com/android/internal/protolog/ProtoLogGroup.java +++ b/core/java/com/android/internal/protolog/ProtoLogGroup.java @@ -80,6 +80,8 @@ public enum ProtoLogGroup implements IProtoLogGroup { Consts.TAG_WM), WM_DEBUG_WINDOW_TRANSITIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, true, Consts.TAG_WM), + WM_DEBUG_WINDOW_INSETS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, + Consts.TAG_WM), TEST_GROUP(true, true, false, "WindowManagerProtoLogTest"); private final boolean mEnabled; diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json index b49b289d44c0a..81d72db5c2c95 100644 --- a/data/etc/services.core.protolog.json +++ b/data/etc/services.core.protolog.json @@ -571,6 +571,12 @@ "group": "WM_DEBUG_CONFIGURATION", "at": "com\/android\/server\/wm\/ActivityStarter.java" }, + "-1483435730": { + "message": "InsetsSource setWin %s for type %s", + "level": "DEBUG", + "group": "WM_DEBUG_WINDOW_INSETS", + "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" + }, "-1480772131": { "message": "No app or window is requesting an orientation, return %d for display id=%d", "level": "VERBOSE", @@ -673,6 +679,12 @@ "group": "WM_DEBUG_IME", "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java" }, + "-1394745488": { + "message": "ControlAdapter onAnimationCancelled mSource: %s mControlTarget: %s", + "level": "INFO", + "group": "WM_DEBUG_WINDOW_INSETS", + "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" + }, "-1391944764": { "message": "SURFACE DESTROY: %s. %s", "level": "INFO", @@ -721,12 +733,6 @@ "group": "WM_DEBUG_STARTING_WINDOW", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, - "-1312861660": { - "message": "notifyInsetsControlChanged for %s ", - "level": "DEBUG", - "group": "WM_DEBUG_IME", - "at": "com\/android\/server\/wm\/WindowState.java" - }, "-1311436264": { "message": "Unregister task fragment organizer=%s uid=%d pid=%d", "level": "VERBOSE", @@ -835,6 +841,12 @@ "group": "WM_DEBUG_STATES", "at": "com\/android\/server\/wm\/TaskFragment.java" }, + "-1185473319": { + "message": "ControlAdapter startAnimation mSource: %s controlTarget: %s", + "level": "INFO", + "group": "WM_DEBUG_WINDOW_INSETS", + "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" + }, "-1176488860": { "message": "SURFACE isSecure=%b: %s", "level": "INFO", @@ -1531,12 +1543,6 @@ "group": "WM_DEBUG_TASKS", "at": "com\/android\/server\/wm\/RootWindowContainer.java" }, - "-395922585": { - "message": "InsetsSource setWin %s", - "level": "DEBUG", - "group": "WM_DEBUG_IME", - "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" - }, "-393505149": { "message": "unable to update pointer icon", "level": "WARN", @@ -1741,12 +1747,6 @@ "group": "WM_DEBUG_SCREEN_ON", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, - "-112805366": { - "message": "InsetsSource updateVisibility serverVisible: %s clientVisible: %s", - "level": "DEBUG", - "group": "WM_DEBUG_IME", - "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" - }, "-108977760": { "message": "Sandbox max bounds for uid %s to bounds %s. config to never sandbox = %s, config to always sandbox = %s, letterboxing from mismatch with parent bounds = %s, has mCompatDisplayInsets = %s, should create compatDisplayInsets = %s", "level": "DEBUG", @@ -1849,12 +1849,6 @@ "group": "WM_DEBUG_RECENTS_ANIMATIONS", "at": "com\/android\/server\/wm\/RecentsAnimationController.java" }, - "29780972": { - "message": "InsetsSource Control %s for target %s", - "level": "DEBUG", - "group": "WM_DEBUG_IME", - "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" - }, "35398067": { "message": "goodToGo(): onAnimationStart, transit=%s, apps=%d, wallpapers=%d, nonApps=%d", "level": "DEBUG", @@ -1897,24 +1891,12 @@ "group": "WM_DEBUG_TASKS", "at": "com\/android\/server\/wm\/RootWindowContainer.java" }, - "73987756": { - "message": "ControlAdapter onAnimationCancelled mSource: %s mControlTarget: %s", - "level": "INFO", - "group": "WM_DEBUG_IME", - "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" - }, "74885950": { "message": "Waiting for top state to be released by %s", "level": "VERBOSE", "group": "WM_DEBUG_STATES", "at": "com\/android\/server\/wm\/ActivityTaskSupervisor.java" }, - "75707221": { - "message": "ControlAdapter startAnimation mSource: %s controlTarget: %s", - "level": "INFO", - "group": "WM_DEBUG_IME", - "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" - }, "83950285": { "message": "removeAnimation(%d)", "level": "DEBUG", @@ -2287,6 +2269,12 @@ "group": "WM_SHOW_SURFACE_ALLOC", "at": "com\/android\/server\/wm\/RootWindowContainer.java" }, + "416924848": { + "message": "InsetsSource Control %s for target %s", + "level": "DEBUG", + "group": "WM_DEBUG_WINDOW_INSETS", + "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" + }, "417311568": { "message": "onResize: Resizing %s", "level": "DEBUG", @@ -2803,6 +2791,12 @@ "group": "WM_DEBUG_STATES", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, + "1030898920": { + "message": "notifyInsetsControlChanged for %s ", + "level": "DEBUG", + "group": "WM_DEBUG_WINDOW_INSETS", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "1033274509": { "message": "moveWindowTokenToDisplay: Attempted to move non-existing token: %s", "level": "WARN", @@ -2821,6 +2815,12 @@ "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, + "1047505501": { + "message": "notifyInsetsChanged for %s ", + "level": "DEBUG", + "group": "WM_DEBUG_WINDOW_INSETS", + "at": "com\/android\/server\/wm\/WindowState.java" + }, "1047769218": { "message": "Finishing activity r=%s, result=%d, data=%s, reason=%s", "level": "VERBOSE", @@ -3211,12 +3211,6 @@ "group": "WM_DEBUG_APP_TRANSITIONS", "at": "com\/android\/server\/wm\/ActivityRecord.java" }, - "1533154777": { - "message": "notifyInsetsChanged for %s ", - "level": "DEBUG", - "group": "WM_DEBUG_IME", - "at": "com\/android\/server\/wm\/WindowState.java" - }, "1557732761": { "message": "For Intent %s bringing to top: %s", "level": "DEBUG", @@ -3643,6 +3637,12 @@ "group": "WM_ERROR", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, + "2070726247": { + "message": "InsetsSource updateVisibility for %s, serverVisible: %s clientVisible: %s", + "level": "DEBUG", + "group": "WM_DEBUG_WINDOW_INSETS", + "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" + }, "2083556954": { "message": "Set mOrientationChanging of %s", "level": "VERBOSE", @@ -3768,6 +3768,9 @@ "WM_DEBUG_TASKS": { "tag": "WindowManager" }, + "WM_DEBUG_WINDOW_INSETS": { + "tag": "WindowManager" + }, "WM_DEBUG_WINDOW_MOVEMENT": { "tag": "WindowManager" }, diff --git a/services/core/java/com/android/server/wm/InsetsSourceProvider.java b/services/core/java/com/android/server/wm/InsetsSourceProvider.java index f3e52f28ba8b6..f93e08531b676 100644 --- a/services/core/java/com/android/server/wm/InsetsSourceProvider.java +++ b/services/core/java/com/android/server/wm/InsetsSourceProvider.java @@ -22,7 +22,7 @@ import static android.view.InsetsState.ITYPE_IME; import static android.view.InsetsState.ITYPE_NAVIGATION_BAR; import static android.view.InsetsState.ITYPE_STATUS_BAR; -import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_IME; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_WINDOW_INSETS; import static com.android.server.wm.InsetsSourceProviderProto.CAPTURED_LEASH; import static com.android.server.wm.InsetsSourceProviderProto.CLIENT_VISIBLE; import static com.android.server.wm.InsetsSourceProviderProto.CONTROL; @@ -164,7 +164,8 @@ class InsetsSourceProvider { mWin.cancelAnimation(); mWin.mProvidedInsetsSources.remove(mSource.getType()); } - ProtoLog.d(WM_DEBUG_IME, "InsetsSource setWin %s", win); + ProtoLog.d(WM_DEBUG_WINDOW_INSETS, "InsetsSource setWin %s for type %s", win, + InsetsState.typeToString(mSource.getType())); mWin = win; mFrameProvider = frameProvider; mImeFrameProvider = imeFrameProvider; @@ -343,7 +344,7 @@ class InsetsSourceProvider { updateVisibility(); mControl = new InsetsSourceControl(mSource.getType(), leash, surfacePosition, mSource.calculateInsets(mWin.getBounds(), true /* ignoreVisibility */)); - ProtoLog.d(WM_DEBUG_IME, + ProtoLog.d(WM_DEBUG_WINDOW_INSETS, "InsetsSource Control %s for target %s", mControl, mControlTarget); } @@ -392,8 +393,9 @@ class InsetsSourceProvider { protected void updateVisibility() { mSource.setVisible(mServerVisible && (isMirroredSource() || mClientVisible)); - ProtoLog.d(WM_DEBUG_IME, - "InsetsSource updateVisibility serverVisible: %s clientVisible: %s", + ProtoLog.d(WM_DEBUG_WINDOW_INSETS, + "InsetsSource updateVisibility for %s, serverVisible: %s clientVisible: %s", + InsetsState.typeToString(mSource.getType()), mServerVisible, mClientVisible); } @@ -539,7 +541,7 @@ class InsetsSourceProvider { t.setAlpha(animationLeash, 1 /* alpha */); t.hide(animationLeash); } - ProtoLog.i(WM_DEBUG_IME, + ProtoLog.i(WM_DEBUG_WINDOW_INSETS, "ControlAdapter startAnimation mSource: %s controlTarget: %s", mSource, mControlTarget); @@ -555,7 +557,7 @@ class InsetsSourceProvider { mControlTarget = null; mAdapter = null; setClientVisible(InsetsState.getDefaultVisibility(mSource.getType())); - ProtoLog.i(WM_DEBUG_IME, + ProtoLog.i(WM_DEBUG_WINDOW_INSETS, "ControlAdapter onAnimationCancelled mSource: %s mControlTarget: %s", mSource, mControlTarget); } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 74a030a6389a6..6a2a960768092 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -114,10 +114,10 @@ import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ADD_REMOVE; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS_LIGHT; -import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_IME; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ORIENTATION; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_RESIZE; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_STARTING_WINDOW; +import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_WINDOW_INSETS; import static com.android.server.am.ActivityManagerService.MY_PID; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; import static com.android.server.policy.WindowManagerPolicy.TRANSIT_ENTER; @@ -3985,7 +3985,7 @@ class WindowState extends WindowContainer implements WindowManagerP * Called when the insets state changed. */ void notifyInsetsChanged() { - ProtoLog.d(WM_DEBUG_IME, "notifyInsetsChanged for %s ", this); + ProtoLog.d(WM_DEBUG_WINDOW_INSETS, "notifyInsetsChanged for %s ", this); try { mClient.insetsChanged(getCompatInsetsState(), hasMoved(), @@ -3997,7 +3997,7 @@ class WindowState extends WindowContainer implements WindowManagerP @Override public void notifyInsetsControlChanged() { - ProtoLog.d(WM_DEBUG_IME, "notifyInsetsControlChanged for %s ", this); + ProtoLog.d(WM_DEBUG_WINDOW_INSETS, "notifyInsetsControlChanged for %s ", this); if (mAppDied || mRemoved) { return; }