Fixing an embedded display as a top focused display
There's no window observer for an embedded display. All windows of an embedded display would be sent to the window observer of its parent display. So when the focused window is at an embedded display, the focused display should be its parent display, not the embedded display. Otherwise the active window and top focused window could not be set if the display of the received windows isn't the top focused display. Besides adding more information for debugging when dumping the accessibility info. Bug: 160388022 Test: a11y CTS & unit tests Test: manual testing for bubble expanded with talkback on Change-Id: I1de53e4132fc935e3f188271c8a716fefc28294a
This commit is contained in:
@@ -747,6 +747,13 @@ public class AccessibilityWindowManager {
|
||||
* Dumps all {@link AccessibilityWindowInfo}s here.
|
||||
*/
|
||||
void dumpLocked(FileDescriptor fd, final PrintWriter pw, String[] args) {
|
||||
pw.append("Global Info [ ");
|
||||
pw.println("Top focused display Id = " + mTopFocusedDisplayId);
|
||||
pw.println(" Active Window Id = " + mActiveWindowId);
|
||||
pw.println(" Top Focused Window Id = " + mTopFocusedWindowId);
|
||||
pw.println(" Accessibility Focused Window Id = " + mAccessibilityFocusedWindowId
|
||||
+ " ]");
|
||||
pw.println();
|
||||
if (mWindows != null) {
|
||||
final int windowCount = mWindows.size();
|
||||
for (int j = 0; j < windowCount; j++) {
|
||||
|
||||
@@ -1357,7 +1357,12 @@ final class AccessibilityController {
|
||||
addedWindows.clear();
|
||||
|
||||
// Gets the top focused display Id and window token for supporting multi-display.
|
||||
topFocusedDisplayId = mService.mRoot.getTopFocusedDisplayContent().getDisplayId();
|
||||
// If this top focused display is an embedded one, using its parent display as the
|
||||
// top focused display.
|
||||
final DisplayContent topFocusedDisplayContent =
|
||||
mService.mRoot.getTopFocusedDisplayContent();
|
||||
topFocusedDisplayId = isEmbeddedDisplay(topFocusedDisplayContent) ? mDisplayId
|
||||
: topFocusedDisplayContent.getDisplayId();
|
||||
topFocusedWindowToken = topFocusedWindowState.mClient.asBinder();
|
||||
}
|
||||
mCallback.onWindowsForAccessibilityChanged(forceSend, topFocusedDisplayId,
|
||||
|
||||
Reference in New Issue
Block a user