Add API to disable snapshotting of activities

Test: runtest frameworks-services -c
com.android.server.wm.TaskSnapshotControllerTest
Test: Launch DisableScreenshotsActivity, go to recents, make sure
content is white.
Bug: 31339431

Change-Id: I329925d2fca389e561da3389a67fe888b5bb1033
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index 469a8a7..4ae6dbe 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -152,8 +152,13 @@
         }
     }
 
-    private boolean canSnapshotTask(Task task) {
-        return !StackId.isHomeOrRecentsStack(task.mStack.mStackId);
+    @VisibleForTesting
+    boolean canSnapshotTask(Task task) {
+        // TODO: Figure out what happens when snapshots are disabled. Can we draw a splash screen
+        // instead?
+        final AppWindowToken topChild = task.getTopChild();
+        return !StackId.isHomeOrRecentsStack(task.mStack.mStackId)
+                && topChild != null && !topChild.shouldDisablePreviewScreenshots();
     }
 
     /**