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(