[cts] use splits for loading progress tests

This mitigates on-device digesters that read all base apk and trigger
full loading.

background.jpg copied from cts/tests/tests/content/HelloWorldApp/

BUG: 181820354
Fixes: 181820354
Test: atest com.android.tests.loadingprogress.host.IncrementalLoadingProgressTest
Change-Id: Ia903fd6708f4e2f46cf6466ad4e3fdbf2c24bd9c
diff --git a/hostsidetests/packagemanager/installedloadingprogess/deviceside/src/com/android/tests/loadingprogress/device/LoadingProgressTest.java b/hostsidetests/packagemanager/installedloadingprogess/deviceside/src/com/android/tests/loadingprogress/device/LoadingProgressTest.java
index aa8c3a0..4344b89 100644
--- a/hostsidetests/packagemanager/installedloadingprogess/deviceside/src/com/android/tests/loadingprogress/device/LoadingProgressTest.java
+++ b/hostsidetests/packagemanager/installedloadingprogess/deviceside/src/com/android/tests/loadingprogress/device/LoadingProgressTest.java
@@ -40,6 +40,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.io.File;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.List;
@@ -89,11 +90,15 @@
     public void testReadAllBytes() throws Exception {
         ApplicationInfo appInfo = mLauncherApps.getApplicationInfo(
                 TEST_PACKAGE_NAME, /* flags= */ 0, mUser);
-        String codePath = appInfo.sourceDir;
-        assertTrue(codePath.toLowerCase().endsWith(".apk"));
-        byte[] apkContentBytes = Files.readAllBytes(Paths.get(codePath));
-        assertNotNull(apkContentBytes);
-        assertTrue(apkContentBytes.length > 0);
+        final String codePath = appInfo.sourceDir;
+        final String apkDir = codePath.substring(0, codePath.lastIndexOf('/'));
+        for (String apkName : new File(apkDir).list()) {
+            final String apkPath = apkDir + "/" + apkName;
+            assertTrue(new File(apkPath).exists());
+            byte[] apkContentBytes = Files.readAllBytes(Paths.get(apkPath));
+            assertNotNull(apkContentBytes);
+            assertTrue(apkContentBytes.length > 0);
+        }
     }
 
     @Test
@@ -110,7 +115,9 @@
             if (activity.getComponentName().getPackageName().equals(
                     TEST_PACKAGE_NAME)) {
                 foundTestApp = true;
-                assertTrue(progressCondition.test(activity.getLoadingProgress()));
+                final float progress = activity.getLoadingProgress();
+                assertTrue("progress <" + progress + "> does not meet requirement",
+                        progressCondition.test(progress));
             }
             assertTrue(activity.getUser().equals(mUser));
         }
diff --git a/hostsidetests/packagemanager/installedloadingprogess/hostside/src/com/android/tests/loadingprogress/host/IncrementalLoadingProgressTest.java b/hostsidetests/packagemanager/installedloadingprogess/hostside/src/com/android/tests/loadingprogress/host/IncrementalLoadingProgressTest.java
index a8d9255..7211dd1 100644
--- a/hostsidetests/packagemanager/installedloadingprogess/hostside/src/com/android/tests/loadingprogress/host/IncrementalLoadingProgressTest.java
+++ b/hostsidetests/packagemanager/installedloadingprogess/hostside/src/com/android/tests/loadingprogress/host/IncrementalLoadingProgressTest.java
@@ -34,7 +34,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -54,6 +53,8 @@
     private static final String DEVICE_TEST_PACKAGE_NAME =
             "com.android.tests.loadingprogress.device";
     private static final String TEST_APK = "CtsInstalledLoadingProgressTestsApp.apk";
+    private static final String TEST_SPLIT_APK =
+            "CtsInstalledLoadingProgressTestsApp_hdpi-v4.apk";
     private static final String TEST_APP_PACKAGE_NAME = "com.android.tests.loadingprogress.app";
     private static final String TEST_CLASS_NAME = DEVICE_TEST_PACKAGE_NAME + ".LoadingProgressTest";
     private static final String IDSIG_SUFFIX = ".idsig";
@@ -67,13 +68,21 @@
                 "pm has-feature android.software.incremental_delivery")));
         getDevice().uninstallPackage(TEST_APP_PACKAGE_NAME);
         CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(getBuild());
-        final File apk = buildHelper.getTestFile(TEST_APK);
-        assertNotNull(apk);
-        final File v4Signature = buildHelper.getTestFile(TEST_APK + IDSIG_SUFFIX);
-        assertNotNull(v4Signature);
+        final File base_apk = buildHelper.getTestFile(TEST_APK);
+        assertNotNull(base_apk);
+        final File base_v4Signature = buildHelper.getTestFile(
+                TEST_APK + IDSIG_SUFFIX);
+        assertNotNull(base_v4Signature);
+        final File split_apk = buildHelper.getTestFile(TEST_SPLIT_APK);
+        assertNotNull(split_apk);
+        final File split_v4Signature = buildHelper.getTestFile(
+                TEST_SPLIT_APK + IDSIG_SUFFIX);
+        assertNotNull(split_v4Signature);
         mSession = new IncrementalInstallSession.Builder()
-                .addApk(Paths.get(apk.getAbsolutePath()),
-                        Paths.get(v4Signature.getAbsolutePath()))
+                .addApk(Paths.get(base_apk.getAbsolutePath()),
+                        Paths.get(base_v4Signature.getAbsolutePath()))
+                .addApk(Paths.get(split_apk.getAbsolutePath()),
+                        Paths.get(split_v4Signature.getAbsolutePath()))
                 .addExtraArgs("-t")
                 .build();
 
@@ -110,7 +119,6 @@
 
     @LargeTest
     @Test
-    @Ignore("b/181820354")
     public void testOnPackageLoadingProgressChangedCalledWithPartialLoaded() throws Exception {
         assertTrue(runDeviceTests(DEVICE_TEST_PACKAGE_NAME, TEST_CLASS_NAME,
                 "testOnPackageLoadingProgressChangedCalledWithPartialLoaded"));
@@ -125,7 +133,6 @@
 
     @LargeTest
     @Test
-    @Ignore("b/181820354")
     public void testLoadingProgressPersistsAfterReboot() throws Exception {
         // Wait for loading progress to update
         RunUtil.getDefault().sleep(WAIT_FOR_LOADING_PROGRESS_UPDATE_MS);
diff --git a/hostsidetests/packagemanager/installedloadingprogess/testdata/Android.bp b/hostsidetests/packagemanager/installedloadingprogess/testdata/Android.bp
index 3c53888..b208d74 100644
--- a/hostsidetests/packagemanager/installedloadingprogess/testdata/Android.bp
+++ b/hostsidetests/packagemanager/installedloadingprogess/testdata/Android.bp
@@ -41,4 +41,7 @@
         "general-tests",
     ],
     v4_signature: true,
+    package_splits: [
+        "hdpi-v4",
+    ],
 }
diff --git a/hostsidetests/packagemanager/installedloadingprogess/testdata/res/drawable-hdpi/background.jpg b/hostsidetests/packagemanager/installedloadingprogess/testdata/res/drawable-hdpi/background.jpg
new file mode 100644
index 0000000..1c466ae
--- /dev/null
+++ b/hostsidetests/packagemanager/installedloadingprogess/testdata/res/drawable-hdpi/background.jpg
Binary files differ
diff --git a/hostsidetests/packagemanager/installedloadingprogess/testdata/res/layout/activity_main.xml b/hostsidetests/packagemanager/installedloadingprogess/testdata/res/layout/activity_main.xml
new file mode 100644
index 0000000..34c7a12
--- /dev/null
+++ b/hostsidetests/packagemanager/installedloadingprogess/testdata/res/layout/activity_main.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2021 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              xmlns:app="http://schemas.android.com/apk/res-auto"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:background="@drawable/background">
+</LinearLayout>
+
diff --git a/hostsidetests/packagemanager/installedloadingprogess/testdata/src/com/android/tests/loadingprogress/app/MainActivity.java b/hostsidetests/packagemanager/installedloadingprogess/testdata/src/com/android/tests/loadingprogress/app/MainActivity.java
index 0f0974c..7d16dea 100644
--- a/hostsidetests/packagemanager/installedloadingprogess/testdata/src/com/android/tests/loadingprogress/app/MainActivity.java
+++ b/hostsidetests/packagemanager/installedloadingprogess/testdata/src/com/android/tests/loadingprogress/app/MainActivity.java
@@ -23,6 +23,7 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
         finish();
     }
 }
\ No newline at end of file