Merge "ScrollCapture: Ignore canReceiveKeys when given a specific task ID" into sc-dev
This commit is contained in:
@@ -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 */
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -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();
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user