ImageWriter: Add abandoned surface exception test
Queueing or dequeueing an image from an image writer should
throw an IllegalStateException if the input surface is
abandoned.
Bug: 22279111
Change-Id: I7848d69d5c70ce91999eb7f803abc8e2ba6494d7
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageWriterTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageWriterTest.java
index b081660..be96aeb 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageWriterTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageWriterTest.java
@@ -131,6 +131,50 @@
}
}
+ public void testAbandonedSurfaceExceptions() throws Exception {
+ final int READER_WIDTH = 1920;
+ final int READER_HEIGHT = 1080;
+ final int READER_FORMAT = ImageFormat.YUV_420_888;
+
+ // Verify that if the image writer's input surface is abandoned, dequeueing an image
+ // throws IllegalStateException
+ ImageReader reader = ImageReader.newInstance(READER_WIDTH, READER_HEIGHT, READER_FORMAT,
+ MAX_NUM_IMAGES);
+ ImageWriter writer = ImageWriter.newInstance(reader.getSurface(), MAX_NUM_IMAGES);
+
+ // Close image reader to abandon the input surface.
+ reader.close();
+
+ Image image;
+ try {
+ image = writer.dequeueInputImage();
+ fail("Should get an IllegalStateException");
+ } catch (IllegalStateException e) {
+ // Expected
+ } finally {
+ writer.close();
+ }
+
+ // Verify that if the image writer's input surface is abandoned, queueing an image
+ // throws IllegalStateException
+ reader = ImageReader.newInstance(READER_WIDTH, READER_HEIGHT, READER_FORMAT,
+ MAX_NUM_IMAGES);
+ writer = ImageWriter.newInstance(reader.getSurface(), MAX_NUM_IMAGES);
+ image = writer.dequeueInputImage();
+
+ // Close image reader to abandon the input surface.
+ reader.close();
+
+ try {
+ writer.queueInputImage(image);
+ fail("Should get an IllegalStateException");
+ } catch (IllegalStateException e) {
+ // Expected
+ } finally {
+ writer.close();
+ }
+ }
+
private void readerWriterFormatTestByCamera(int format) throws Exception {
List<Size> sizes = getSortedSizesForFormat(mCamera.getId(), mCameraManager, format, null);
Size maxSize = sizes.get(0);