Merge "Fix invalid active window if accessibility framework doesn't track windows" into tm-dev
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -7681,6 +7681,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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user