From 4aac669f5821c3d9cdfb57fbd16ba9789424761b Mon Sep 17 00:00:00 2001 From: Wilson Wu Date: Wed, 6 Jul 2022 18:09:05 +0800 Subject: [PATCH] Add ImeSurfaceParent into SoftInputShowHideHistory Records corresponding IME surface parent information into SoftInputShowHideHistory for analysis. Bug: 238062252 Test: check bugreport Change-Id: I1a1ac4caee2ddcb651f66907e77cec0ae1d75b2d --- .../inputmethod/InputMethodManagerService.java | 12 ++++++++++-- .../com/android/server/wm/WindowManagerInternal.java | 7 ++++++- .../com/android/server/wm/WindowManagerService.java | 7 +++++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index b45dc7ff0f6b0..ee8b0996af217 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -900,11 +900,14 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub final String mImeControlTargetName; @Nullable final String mImeTargetNameFromWm; + @Nullable + final String mImeSurfaceParentName; Entry(ClientState client, EditorInfo editorInfo, String focusedWindowName, @SoftInputModeFlags int softInputMode, @SoftInputShowHideReason int reason, boolean inFullscreenMode, String requestWindowName, - @Nullable String imeControlTargetName, @Nullable String imeTargetName) { + @Nullable String imeControlTargetName, @Nullable String imeTargetName, + @Nullable String imeSurfaceParentName) { mClientState = client; mEditorInfo = editorInfo; mFocusedWindowName = focusedWindowName; @@ -916,6 +919,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub mRequestWindowName = requestWindowName; mImeControlTargetName = imeControlTargetName; mImeTargetNameFromWm = imeTargetName; + mImeSurfaceParentName = imeSurfaceParentName; } } @@ -961,6 +965,9 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub pw.print(prefix); pw.println(" imeTargetNameFromWm=" + entry.mImeTargetNameFromWm); + pw.print(prefix); + pw.println(" imeSurfaceParentName=" + entry.mImeSurfaceParentName); + pw.print(prefix); pw.print(" editorInfo: "); pw.print(" inputType=" + entry.mEditorInfo.inputType); @@ -4619,7 +4626,8 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub mSoftInputShowHideHistory.addEntry(new SoftInputShowHideHistory.Entry( mCurFocusedWindowClient, mCurEditorInfo, info.focusedWindowName, mCurFocusedWindowSoftInputMode, reason, mInFullscreenMode, - info.requestWindowName, info.imeControlTargetName, info.imeLayerTargetName)); + info.requestWindowName, info.imeControlTargetName, info.imeLayerTargetName, + info.imeSurfaceParentName)); } @BinderThread diff --git a/services/core/java/com/android/server/wm/WindowManagerInternal.java b/services/core/java/com/android/server/wm/WindowManagerInternal.java index 9eee7ba871a21..099fe1b22108e 100644 --- a/services/core/java/com/android/server/wm/WindowManagerInternal.java +++ b/services/core/java/com/android/server/wm/WindowManagerInternal.java @@ -808,12 +808,17 @@ public abstract class WindowManagerInternal { */ public final String imeLayerTargetName; + /** The surface parent of the IME container. */ + public final String imeSurfaceParentName; + public ImeTargetInfo(String focusedWindowName, String requestWindowName, - String imeControlTargetName, String imeLayerTargetName) { + String imeControlTargetName, String imeLayerTargetName, + String imeSurfaceParentName) { this.focusedWindowName = focusedWindowName; this.requestWindowName = requestWindowName; this.imeControlTargetName = imeControlTargetName; this.imeLayerTargetName = imeLayerTargetName; + this.imeSurfaceParentName = imeSurfaceParentName; } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index bcf05a6f8fe1e..233f510553e4c 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -8186,6 +8186,7 @@ public class WindowManagerService extends IWindowManager.Stub final String requestWindowName; final String imeControlTargetName; final String imeLayerTargetName; + final String imeSurfaceParentName; synchronized (mGlobalLock) { final WindowState focusedWin = mWindowMap.get(focusedToken); focusedWindowName = focusedWin != null ? focusedWin.getName() : "null"; @@ -8202,15 +8203,17 @@ public class WindowManagerService extends IWindowManager.Stub } final InsetsControlTarget target = dc.getImeTarget(IME_TARGET_LAYERING); imeLayerTargetName = target != null ? target.getWindow().getName() : "null"; + final SurfaceControl imeParent = dc.mInputMethodSurfaceParent; + imeSurfaceParentName = imeParent != null ? imeParent.toString() : "null"; if (show) { dc.onShowImeRequested(); } } else { - imeControlTargetName = imeLayerTargetName = "no-display"; + imeControlTargetName = imeLayerTargetName = imeSurfaceParentName = "no-display"; } } return new ImeTargetInfo(focusedWindowName, requestWindowName, imeControlTargetName, - imeLayerTargetName); + imeLayerTargetName, imeSurfaceParentName); } @Override