Revert "Revert "Tolerate fullscreen activities not being fullscreen""

Automerger confusion resulted in this being reverted unintentionally.

Re-land it along with the import fix

This reverts commit 74d090c653733370677141b49596c8ed6c62766a.

Bug: 70254892
Bug: 110450763
Bug: 110872261
Bug: 80309070
Test: Verified it builds

Change-Id: Idab23c6db9bd95a18636dea08a8a299c814c035b
Merged-In: Idab23c6db9bd95a18636dea08a8a299c814c035b
diff --git a/tests/tests/view/src/android/view/cts/surfacevalidator/CapturedActivity.java b/tests/tests/view/src/android/view/cts/surfacevalidator/CapturedActivity.java
index 4077a75..4fc5e04 100644
--- a/tests/tests/view/src/android/view/cts/surfacevalidator/CapturedActivity.java
+++ b/tests/tests/view/src/android/view/cts/surfacevalidator/CapturedActivity.java
@@ -24,6 +24,7 @@
 import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
 import android.graphics.Point;
+import android.graphics.Rect;
 import android.hardware.display.DisplayManager;
 import android.hardware.display.VirtualDisplay;
 import android.media.MediaPlayer;
@@ -106,6 +107,7 @@
 
         mMediaPlayer = MediaPlayer.create(this, R.raw.colors_video);
         mMediaPlayer.setLooping(true);
+
     }
 
     public void dismissPermissionDialog() {
@@ -210,11 +212,20 @@
             display.getRealSize(size);
             display.getMetrics(metrics);
 
+            View decorView = getWindow().getDecorView();
+            Rect boundsToCheck = new Rect(0, 0, decorView.getWidth(), decorView.getHeight());
+            int[] topLeft = decorView.getLocationOnScreen();
+            boundsToCheck.offset(topLeft[0], topLeft[1]);
+
+            if (boundsToCheck.width() < 90 || boundsToCheck.height() < 90) {
+                fail("capture bounds too small to be a fullscreen activity: " + boundsToCheck);
+            }
 
             mSurfacePixelValidator = new SurfacePixelValidator(CapturedActivity.this,
-                    size, animationTestCase.getChecker());
-            Log.d("MediaProjection", "Size is " + size.toString());
-            mVirtualDisplay = mMediaProjection.createVirtualDisplay("ScreenSharingDemo",
+                    size, boundsToCheck, animationTestCase.getChecker());
+            Log.d("MediaProjection", "Size is " + size.toString()
+                    + ", bounds are " + boundsToCheck.toShortString());
+            mVirtualDisplay = mMediaProjection.createVirtualDisplay("CtsCapturedActivity",
                     size.x, size.y,
                     metrics.densityDpi,
                     DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
diff --git a/tests/tests/view/src/android/view/cts/surfacevalidator/PixelCounter.rs b/tests/tests/view/src/android/view/cts/surfacevalidator/PixelCounter.rs
index f58b9cb..12e024c 100644
--- a/tests/tests/view/src/android/view/cts/surfacevalidator/PixelCounter.rs
+++ b/tests/tests/view/src/android/view/cts/surfacevalidator/PixelCounter.rs
@@ -18,11 +18,17 @@
 #pragma rs reduce(countBlackishPixels) accumulator(countBlackishPixelsAccum) combiner(countBlackishPixelsCombiner)
 
 uchar THRESHOLD;
+int BOUNDS[4];
 
-static void countBlackishPixelsAccum(int *accum, uchar4 pixel){
+static void countBlackishPixelsAccum(int *accum, uchar4 pixel, uint32_t x, uint32_t y) {
+
     if (pixel.r < THRESHOLD
             && pixel.g < THRESHOLD
-            && pixel.b < THRESHOLD) {
+            && pixel.b < THRESHOLD
+            && x >= BOUNDS[0]
+            && x < BOUNDS[2]
+            && y >= BOUNDS[1]
+            && y < BOUNDS[3]) {
         *accum += 1;
     }
 }
diff --git a/tests/tests/view/src/android/view/cts/surfacevalidator/SurfacePixelValidator.java b/tests/tests/view/src/android/view/cts/surfacevalidator/SurfacePixelValidator.java
index 9523b32..1a8bc0db 100644
--- a/tests/tests/view/src/android/view/cts/surfacevalidator/SurfacePixelValidator.java
+++ b/tests/tests/view/src/android/view/cts/surfacevalidator/SurfacePixelValidator.java
@@ -18,6 +18,7 @@
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.Point;
+import android.graphics.Rect;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Trace;
@@ -102,7 +103,8 @@
         }
     };
 
-    public SurfacePixelValidator(Context context, Point size, PixelChecker pixelChecker) {
+    public SurfacePixelValidator(Context context, Point size, Rect boundsToCheck,
+            PixelChecker pixelChecker) {
         mWidth = size.x;
         mHeight = size.y;
 
@@ -116,6 +118,8 @@
         mScript = new ScriptC_PixelCounter(mRS);
 
         mInPixelsAllocation = createBufferQueueAllocation();
+        mScript.set_BOUNDS(new int[] {boundsToCheck.left, boundsToCheck.top,
+                boundsToCheck.right, boundsToCheck.bottom});
         mScript.set_THRESHOLD(PIXEL_CHANNEL_THRESHOLD);
 
         mInPixelsAllocation.setOnBufferAvailableListener(