diff options
| author | 2021-07-28 18:27:15 +0000 | |
|---|---|---|
| committer | 2021-07-28 18:27:15 +0000 | |
| commit | fe8265d540148252ef18c818befd4b814538705c (patch) | |
| tree | ac9e34cf3161d4dbcc9a846d13762867ada7663a | |
| parent | 11b8259c10d14b7987bd9ee954250380fb73691f (diff) | |
| parent | 7ee0307aed1692851281bedb0f1841d02d0f51c5 (diff) | |
Merge "Prevents scroll capture from targetting secure windows" into sc-dev am: 7ee0307aed
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15374948
Change-Id: Ib82bb7493168be0477f6631f41eca24e7bead5b9
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 5 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java | 26 |
2 files changed, 30 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index bd4140c0dabd..369e58cf36e6 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -61,6 +61,7 @@ import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; +import static android.view.WindowManager.LayoutParams.FLAG_SECURE; import static android.view.WindowManager.LayoutParams.FLAG_SPLIT_TOUCH; import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN; @@ -5854,7 +5855,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp return false; /* continue */ } } - + if (nextWindow.isSecureLocked()) { + return false; /* continue */ + } return true; /* stop, match found */ } }); diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java index 277048f1b687..1191035a77ff 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -42,6 +42,7 @@ import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_B import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW; import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR; import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; +import static android.view.WindowManager.LayoutParams.FLAG_SECURE; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; @@ -1736,6 +1737,31 @@ public class DisplayContentTests extends WindowTestsBase { } @Test + public void testFindScrollCaptureTargetWindow_secure() { + DisplayContent display = createNewDisplay(); + Task rootTask = createTask(display); + Task task = createTaskInRootTask(rootTask, 0 /* userId */); + WindowState secureWindow = createWindow(null, TYPE_APPLICATION, "Secure Window"); + secureWindow.mAttrs.flags |= FLAG_SECURE; + + WindowState result = display.findScrollCaptureTargetWindow(null, + ActivityTaskManager.INVALID_TASK_ID); + assertNull(result); + } + + @Test + public void testFindScrollCaptureTargetWindow_secureTaskId() { + DisplayContent display = createNewDisplay(); + Task rootTask = createTask(display); + Task task = createTaskInRootTask(rootTask, 0 /* userId */); + WindowState secureWindow = createWindow(null, TYPE_APPLICATION, "Secure Window"); + secureWindow.mAttrs.flags |= FLAG_SECURE; + + WindowState result = display.findScrollCaptureTargetWindow(null, task.mTaskId); + assertNull(result); + } + + @Test public void testFindScrollCaptureTargetWindow_taskId() { DisplayContent display = createNewDisplay(); Task rootTask = createTask(display); |