Prevent a11y seeing behind tasks w/modal windows.

Bug: 30279147
Change-Id: Iee714031894bec0d5b25e0d0feaf918536e5b124
This commit is contained in:
Phil Weaver
2016-07-27 18:03:10 -07:00
parent d7a59636b7
commit ac9ad70086

View File

@@ -1071,14 +1071,15 @@ final class AccessibilityController {
Region.Op.REVERSE_DIFFERENCE);
}
// We figured out what is touchable for the entire screen - done.
if (unaccountedSpace.isEmpty()) {
break;
}
// If a window is modal it prevents other windows from being touched
if ((flags & (WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL)) == 0) {
// Account for all space in the task, whether the windows in it are
// touchable or not. The modal window blocks all touches from the task's
// area.
unaccountedSpace.op(windowState.getDisplayFrameLw(), unaccountedSpace,
Region.Op.REVERSE_DIFFERENCE);
if (task != null) {
// If the window is associated with a particular task, we can skip the
// rest of the windows for that task.
@@ -1090,6 +1091,10 @@ final class AccessibilityController {
break;
}
}
// We figured out what is touchable for the entire screen - done.
if (unaccountedSpace.isEmpty()) {
break;
}
}
// Always report the focused window.