[Magnifier-85] Test PixelCopy failure behavior
Bug: 132136368
Test: atest CtsWidgetTestCases:android.widget.cts.MagnifierTest
Change-Id: I08472e87bfa1dad839909800bccb4b991c7f1e5f
diff --git a/tests/tests/widget/src/android/widget/cts/MagnifierTest.java b/tests/tests/widget/src/android/widget/cts/MagnifierTest.java
index 3d05bf9..0264665 100644
--- a/tests/tests/widget/src/android/widget/cts/MagnifierTest.java
+++ b/tests/tests/widget/src/android/widget/cts/MagnifierTest.java
@@ -27,6 +27,7 @@
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
+import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Insets;
import android.graphics.Point;
@@ -36,6 +37,8 @@
import android.util.DisplayMetrics;
import android.view.ContextThemeWrapper;
import android.view.Gravity;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
@@ -343,6 +346,22 @@
magnifierPosition.y, PIXEL_COMPARISON_DELTA);
}
+ @Test
+ public void testShow_whenPixelCopyFails() throws Throwable {
+ WidgetTestUtils.runOnMainAndLayoutSync(mActivityRule, () -> {
+ mActivity.setContentView(R.layout.magnifier_activity_centered_surfaceview_layout);
+ }, false /*forceLayout*/);
+ final View view = mActivity.findViewById(R.id.magnifier_centered_view);
+
+ runOnUiThreadAndWaitForCompletion(() -> mMagnifier = new Magnifier.Builder(view).build());
+ // The PixelCopy will fail as no draw has been done so far to the SurfaceView.
+ showMagnifier(0f, 0f);
+
+ assertNull(mMagnifier.getPosition());
+ assertNull(mMagnifier.getSourcePosition());
+ assertNull(mMagnifier.getContent());
+ }
+
//***** Tests for #dismiss() *****//
@Test
@@ -708,7 +727,15 @@
public void testSourcePosition_respectsMaxInSurfaceBounds_forSurfaceView() throws Throwable {
WidgetTestUtils.runOnMainAndLayoutSync(mActivityRule, () -> {
mActivity.setContentView(R.layout.magnifier_activity_centered_surfaceview_layout);
- }, false /*forceLayout*/);
+ }, false /* forceLayout */);
+ WidgetTestUtils.runOnMainAndLayoutSync(mActivityRule, () -> {
+ // Draw something in the SurfaceView for the Magnifier to copy.
+ final View view = mActivity.findViewById(R.id.magnifier_centered_view);
+ final SurfaceHolder surfaceHolder = ((SurfaceView) view).getHolder();
+ final Canvas canvas = surfaceHolder.lockHardwareCanvas();
+ canvas.drawColor(Color.BLUE);
+ surfaceHolder.unlockCanvasAndPost(canvas);
+ }, false /* forceLayout */);
final View view = mActivity.findViewById(R.id.magnifier_centered_view);
final Magnifier.Builder builder = new Magnifier.Builder(view)
.setSize(100, 100)