Loading services/core/java/com/android/server/wm/DisplayContent.java +7 −5 Original line number Diff line number Diff line Loading @@ -5661,16 +5661,18 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } return false; /* continue */ } if (taskId != INVALID_TASK_ID) { if (taskId == INVALID_TASK_ID) { if (!nextWindow.canReceiveKeys()) { return false; /* continue */ } } else { Task task = nextWindow.getTask(); if (task == null || !task.isTaskId(taskId)) { return false; /* continue */ } } if (!nextWindow.canReceiveKeys()) { return false; /* continue */ } return true; /* stop */ return true; /* stop, match found */ } }); } Loading services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +28 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ import android.view.MotionEvent; import android.view.Surface; import android.view.SurfaceControl; import android.view.SurfaceControl.Transaction; import android.view.View; import android.view.WindowManager; import androidx.test.filters.SmallTest; Loading Loading @@ -1698,6 +1699,20 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(activityWindow, result); } @Test public void testFindScrollCaptureTargetWindow_cantReceiveKeys() { DisplayContent display = createNewDisplay(); Task stack = createTaskStackOnDisplay(display); Task task = createTaskInStack(stack, 0 /* userId */); WindowState activityWindow = createAppWindow(task, TYPE_APPLICATION, "App Window"); WindowState invisible = createWindow(null, TYPE_APPLICATION, "invisible"); invisible.mViewVisibility = View.INVISIBLE; // make canReceiveKeys return false WindowState result = display.findScrollCaptureTargetWindow(null, ActivityTaskManager.INVALID_TASK_ID); assertEquals(activityWindow, result); } @Test public void testFindScrollCaptureTargetWindow_taskId() { DisplayContent display = createNewDisplay(); Loading @@ -1710,6 +1725,19 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(window, result); } @Test public void testFindScrollCaptureTargetWindow_taskIdCantReceiveKeys() { DisplayContent display = createNewDisplay(); Task stack = createTaskStackOnDisplay(display); Task task = createTaskInStack(stack, 0 /* userId */); WindowState window = createAppWindow(task, TYPE_APPLICATION, "App Window"); window.mViewVisibility = View.INVISIBLE; // make canReceiveKeys return false WindowState behindWindow = createWindow(null, TYPE_SCREENSHOT, display, "Screenshot"); WindowState result = display.findScrollCaptureTargetWindow(null, task.mTaskId); assertEquals(window, result); } @Test public void testEnsureActivitiesVisibleNotRecursive() { final TaskDisplayArea mockTda = mock(TaskDisplayArea.class); Loading Loading
services/core/java/com/android/server/wm/DisplayContent.java +7 −5 Original line number Diff line number Diff line Loading @@ -5661,16 +5661,18 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } return false; /* continue */ } if (taskId != INVALID_TASK_ID) { if (taskId == INVALID_TASK_ID) { if (!nextWindow.canReceiveKeys()) { return false; /* continue */ } } else { Task task = nextWindow.getTask(); if (task == null || !task.isTaskId(taskId)) { return false; /* continue */ } } if (!nextWindow.canReceiveKeys()) { return false; /* continue */ } return true; /* stop */ return true; /* stop, match found */ } }); } Loading
services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +28 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ import android.view.MotionEvent; import android.view.Surface; import android.view.SurfaceControl; import android.view.SurfaceControl.Transaction; import android.view.View; import android.view.WindowManager; import androidx.test.filters.SmallTest; Loading Loading @@ -1698,6 +1699,20 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(activityWindow, result); } @Test public void testFindScrollCaptureTargetWindow_cantReceiveKeys() { DisplayContent display = createNewDisplay(); Task stack = createTaskStackOnDisplay(display); Task task = createTaskInStack(stack, 0 /* userId */); WindowState activityWindow = createAppWindow(task, TYPE_APPLICATION, "App Window"); WindowState invisible = createWindow(null, TYPE_APPLICATION, "invisible"); invisible.mViewVisibility = View.INVISIBLE; // make canReceiveKeys return false WindowState result = display.findScrollCaptureTargetWindow(null, ActivityTaskManager.INVALID_TASK_ID); assertEquals(activityWindow, result); } @Test public void testFindScrollCaptureTargetWindow_taskId() { DisplayContent display = createNewDisplay(); Loading @@ -1710,6 +1725,19 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(window, result); } @Test public void testFindScrollCaptureTargetWindow_taskIdCantReceiveKeys() { DisplayContent display = createNewDisplay(); Task stack = createTaskStackOnDisplay(display); Task task = createTaskInStack(stack, 0 /* userId */); WindowState window = createAppWindow(task, TYPE_APPLICATION, "App Window"); window.mViewVisibility = View.INVISIBLE; // make canReceiveKeys return false WindowState behindWindow = createWindow(null, TYPE_SCREENSHOT, display, "Screenshot"); WindowState result = display.findScrollCaptureTargetWindow(null, task.mTaskId); assertEquals(window, result); } @Test public void testEnsureActivitiesVisibleNotRecursive() { final TaskDisplayArea mockTda = mock(TaskDisplayArea.class); Loading