CTS coverage for different types of adaptive bitmap in Icon.java

Bug: 152618091
Bug: 152617437
Test: atest IconTest
Change-Id: I9f1dee1716802859f56f1500b965ebed4f876447
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/IconTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/IconTest.java
index 745aeca..f281406 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/IconTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/IconTest.java
@@ -31,6 +31,7 @@
 import android.graphics.PorterDuff;
 import android.graphics.cts.ImageViewCtsActivity;
 import android.graphics.cts.R;
+import android.graphics.drawable.AdaptiveIconDrawable;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
 import android.os.Handler;
@@ -76,6 +77,12 @@
     }
 
     @Test
+    public void testAdaptiveBitmapIcon() {
+        verifyAdaptiveIconValidity(Icon.createWithAdaptiveBitmap(
+                Bitmap.createBitmap(16, 16, Bitmap.Config.ARGB_8888)));
+    }
+
+    @Test
     public void testDataIcon() {
         byte[] data = new byte[4];
         data[0] = data[1] = data[2] = data[3] = (byte)255;
@@ -100,6 +107,22 @@
     }
 
     @Test
+    public void testAdaptiveFileIcon() throws IOException {
+        File file = new File(mActivity.getFilesDir(), "testimage.jpg");
+        try {
+            writeSampleImage(file);
+            assertTrue(file.exists());
+
+            verifyAdaptiveIconValidity(Icon.createWithAdaptiveBitmapContentUri(Uri.fromFile(file)));
+
+            verifyAdaptiveIconValidity(
+                    Icon.createWithAdaptiveBitmapContentUri(file.toURI().toString()));
+        } finally {
+            file.delete();
+        }
+    }
+
+    @Test
     public void testResourceIcon() {
         verifyIconValidity(Icon.createWithResource(mActivity, R.drawable.bmp_test));
 
@@ -141,6 +164,13 @@
     }
 
     @Test
+    public void testAdaptiveBitmapIcon_getType() {
+        Icon icon = Icon.createWithAdaptiveBitmap(
+                Bitmap.createBitmap(16, 16, Bitmap.Config.ARGB_8888));
+        assertEquals(Icon.TYPE_ADAPTIVE_BITMAP, icon.getType());
+    }
+
+    @Test
     public void testDataIcon_getType() {
         byte[] data = new byte[4];
         data[0] = data[1] = data[2] = data[3] = (byte) 255;
@@ -173,6 +203,26 @@
     }
 
     @Test
+    public void testAdaptiveFileIcon_getType() throws IOException {
+        File file = new File(mActivity.getFilesDir(), "testimage.jpg");
+        try {
+            writeSampleImage(file);
+            assertTrue(file.exists());
+            String filePath = file.toURI().getPath();
+
+            Icon icon = Icon.createWithAdaptiveBitmapContentUri(Uri.fromFile(file));
+            assertEquals(Icon.TYPE_URI_ADAPTIVE_BITMAP, icon.getType());
+            assertEquals(filePath, icon.getUri().getPath());
+
+            icon = Icon.createWithAdaptiveBitmapContentUri(file.toURI().toString());
+            assertEquals(Icon.TYPE_URI_ADAPTIVE_BITMAP, icon.getType());
+            assertEquals(filePath, icon.getUri().getPath());
+        } finally {
+            file.delete();
+        }
+    }
+
+    @Test
     public void testResourceIcon_getType() {
         Icon icon = Icon.createWithResource("com.android.cts.testpkg", R.drawable.bmp_test);
         assertEquals(Icon.TYPE_RESOURCE, icon.getType());
@@ -212,4 +262,9 @@
 
         parcel.recycle();
     }
+
+    private void verifyAdaptiveIconValidity(Icon icon) {
+        verifyIconValidity(icon);
+        assertTrue(icon.loadDrawable(mActivity) instanceof AdaptiveIconDrawable);
+    }
 }