diff options
| author | 2022-05-04 04:35:58 +0000 | |
|---|---|---|
| committer | 2022-05-04 04:35:58 +0000 | |
| commit | b63ba12e920273224f4a4e1ea238c40ff41dc092 (patch) | |
| tree | 934a3fa13e0cc10c4b0b9bbeed9cd0448a609545 | |
| parent | 7b5e81f2980174e2583a874c19daa611779c958b (diff) | |
| parent | 5901d395d6d2a4fda3bf480cd3f23d9087f8aafd (diff) | |
Merge "Fix invalid active window if accessibility framework doesn't track windows" into tm-dev am: a7f5aa5be7 am: 5901d395d6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17755779
Change-Id: I3a47726a2f905ba7fa9a5ab7672b548a2097ed3c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
4 files changed, 23 insertions, 3 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java index e30639cf416a..9920cc7e8444 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java @@ -1661,7 +1661,7 @@ public class AccessibilityWindowManager { if (traceWMEnabled()) { logTraceWM("getFocusedWindowToken", ""); } - final IBinder token = mWindowManagerInternal.getFocusedWindowToken(); + final IBinder token = mWindowManagerInternal.getFocusedWindowTokenFromWindowStates(); synchronized (mLock) { return findWindowIdLocked(userId, token); } diff --git a/services/core/java/com/android/server/wm/WindowManagerInternal.java b/services/core/java/com/android/server/wm/WindowManagerInternal.java index 42fad6d14fb9..f8bc26a7d91d 100644 --- a/services/core/java/com/android/server/wm/WindowManagerInternal.java +++ b/services/core/java/com/android/server/wm/WindowManagerInternal.java @@ -433,6 +433,14 @@ public abstract class WindowManagerInternal { public abstract IBinder getFocusedWindowToken(); /** + * Gets the token of the window that has input focus. It is from the focused + * {@link WindowState}. + * + * @return The token. + */ + public abstract IBinder getFocusedWindowTokenFromWindowStates(); + + /** * @return Whether the keyguard is engaged. */ public abstract boolean isKeyguardLocked(); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8ff1130cea52..777d74af3464 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -7677,6 +7677,18 @@ public class WindowManagerService extends IWindowManager.Stub } } + // TODO (b/229837707): Delete this method after changing the solution. + @Override + public IBinder getFocusedWindowTokenFromWindowStates() { + synchronized (mGlobalLock) { + final WindowState windowState = getFocusedWindowLocked(); + if (windowState != null) { + return windowState.mClient.asBinder(); + } + return null; + } + } + @Override public boolean isKeyguardLocked() { return WindowManagerService.this.isKeyguardLocked(); diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java index ca9ab4fa84eb..4f4be6cd634d 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java @@ -543,7 +543,7 @@ public class AccessibilityWindowManagerTest { mWindowInfos.get(Display.DEFAULT_DISPLAY).get(DEFAULT_FOCUSED_INDEX + 1).token; final int eventWindowId = mA11yWindowManager.findWindowIdLocked( USER_SYSTEM_ID, eventWindowToken); - when(mMockWindowManagerInternal.getFocusedWindowToken()) + when(mMockWindowManagerInternal.getFocusedWindowTokenFromWindowStates()) .thenReturn(eventWindowToken); final int noUse = 0; @@ -679,7 +679,7 @@ public class AccessibilityWindowManagerTest { mWindowInfos.get(Display.DEFAULT_DISPLAY).get(DEFAULT_FOCUSED_INDEX).token; final int defaultFocusWindowId = mA11yWindowManager.findWindowIdLocked( USER_SYSTEM_ID, defaultFocusWinToken); - when(mMockWindowManagerInternal.getFocusedWindowToken()) + when(mMockWindowManagerInternal.getFocusedWindowTokenFromWindowStates()) .thenReturn(defaultFocusWinToken); final int newFocusWindowId = getWindowIdFromWindowInfosForDisplay(Display.DEFAULT_DISPLAY, DEFAULT_FOCUSED_INDEX + 1); |