summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mark Renouf <mrenouf@google.com> 2021-07-26 21:31:18 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-07-26 21:31:18 +0000
commit3daec282d77c293774f28de766bb7b1aeadfb294 (patch)
tree82cb93be984820194fc5a436c550a937cdf69f58
parent2316e65fb6a1de5d75547e2d48c1b7228ebe8991 (diff)
parentf1bc1631ccaa91fc36ef5cf50c45d769956c6b52 (diff)
Merge "Prevents scroll capture from targetting secure windows"
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java5
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java26
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 fef82acdc2eb..a7c9c1628fff 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.LAST_APPLICATION_WINDOW;
import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN;
import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;
@@ -5839,7 +5840,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 a0b5fed54848..3f68d400d52f 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;
@@ -1748,6 +1749,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);