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>
This commit is contained in:
Ryan Lin
2022-05-04 04:35:58 +00:00
committed by Automerger Merge Worker
4 changed files with 23 additions and 3 deletions

View File

@@ -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);
}

View File

@@ -432,6 +432,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.
*/

View File

@@ -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();

View File

@@ -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);