diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index ffea07cb2bd29..9f56a1e388bfa 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -132,11 +132,15 @@ import static com.android.server.wm.DisplayContentProto.RESUMED_ACTIVITY; import static com.android.server.wm.DisplayContentProto.ROOT_DISPLAY_AREA; import static com.android.server.wm.DisplayContentProto.SCREEN_ROTATION_ANIMATION; import static com.android.server.wm.DisplayContentProto.SLEEP_TOKENS; +import static com.android.server.wm.EventLogTags.IMF_REMOVE_IME_SCREENSHOT; +import static com.android.server.wm.EventLogTags.IMF_SHOW_IME_SCREENSHOT; +import static com.android.server.wm.EventLogTags.IMF_UPDATE_IME_PARENT; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION; import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS; import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION; import static com.android.server.wm.WindowContainerChildProto.DISPLAY_CONTENT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DISPLAY; +import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_IME_VISIBILITY; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT_METHOD; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS; @@ -196,6 +200,7 @@ import android.util.ArrayMap; import android.util.ArraySet; import android.util.DisplayMetrics; import android.util.DisplayUtils; +import android.util.EventLog; import android.util.IntArray; import android.util.Pair; import android.util.RotationUtils; @@ -4276,6 +4281,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp private WindowState mImeTarget; private SurfaceControl.Builder mSurfaceBuilder; private SurfaceControl mImeSurface; + private Point mImeSurfacePosition; ImeScreenshot(SurfaceControl.Builder surfaceBuilder, @NonNull WindowState imeTarget) { mSurfaceBuilder = surfaceBuilder; @@ -4326,6 +4332,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mImeTarget.mAttrs.surfaceInsets.top); t.setPosition(imeSurface, surfacePosition.x, surfacePosition.y); } + mImeSurfacePosition = surfacePosition; ProtoLog.i(WM_DEBUG_IME, "Set IME snapshot position: (%d, %d)", surfacePosition.x, surfacePosition.y); return imeSurface; @@ -4337,6 +4344,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp t.remove(mImeSurface); mImeSurface = null; } + if (DEBUG_IME_VISIBILITY) { + EventLog.writeEvent(IMF_REMOVE_IME_SCREENSHOT, mImeTarget.toString()); + } } void attachAndShow(Transaction t) { @@ -4366,6 +4376,10 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp ProtoLog.i(WM_DEBUG_IME, "show IME snapshot, ime target=%s, callers=%s", mImeTarget, Debug.getCallers(6)); t.show(mImeSurface); + if (DEBUG_IME_VISIBILITY) { + EventLog.writeEvent(IMF_SHOW_IME_SCREENSHOT, mImeTarget.toString(), + dc.mInputMethodWindow.mTransitFlags, mImeSurfacePosition.toString()); + } } else if (!isValidSnapshot) { removeImeSurface(t); } @@ -4511,6 +4525,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (newParent != null && newParent != mInputMethodSurfaceParent) { mInputMethodSurfaceParent = newParent; getSyncTransaction().reparent(mImeWindowsContainer.mSurfaceControl, newParent); + if (DEBUG_IME_VISIBILITY) { + EventLog.writeEvent(IMF_UPDATE_IME_PARENT, newParent.toString()); + } // When surface parent is removed, the relative layer will also be removed. We need to // do a force update to make sure there is a layer set for the new parent. assignRelativeLayerForIme(getSyncTransaction(), true /* forceUpdate */); diff --git a/services/core/java/com/android/server/wm/EventLogTags.logtags b/services/core/java/com/android/server/wm/EventLogTags.logtags index d94bf4bbbfa47..b36f83580aed3 100644 --- a/services/core/java/com/android/server/wm/EventLogTags.logtags +++ b/services/core/java/com/android/server/wm/EventLogTags.logtags @@ -62,5 +62,13 @@ option java_package com.android.server.wm # bootanim finished: 31007 wm_boot_animation_done (time|2|3) + +# IME surface parent is updated. +32003 imf_update_ime_parent (surface name|3) +# IME snapshot is shown. +32004 imf_show_ime_screenshot (target window|3),(transition|1),(surface position|3) +# IME snapshot is hidden. +32005 imf_remove_ime_screenshot (target window|3) + # Request surface flinger to show / hide the wallpaper surface. 33001 wm_wallpaper_surface (Display Id|1|5),(Visible|1),(Target|3)