Installer API v2 tests: DataLoaderParams.

Bug: b/155113454
Fixes: 155113454

Test: atest PackageManagerShellCommandTest

Change-Id: I7e89590f13d3648e32e3e367aac42d866204f79a
diff --git a/tests/tests/content/src/android/content/pm/cts/PackageManagerShellCommandTest.java b/tests/tests/content/src/android/content/pm/cts/PackageManagerShellCommandTest.java
index 41c5d07..9c8d881 100644
--- a/tests/tests/content/src/android/content/pm/cts/PackageManagerShellCommandTest.java
+++ b/tests/tests/content/src/android/content/pm/cts/PackageManagerShellCommandTest.java
@@ -24,6 +24,12 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import android.app.UiAutomation;
+import android.content.ComponentName;
+import android.content.pm.DataLoaderParams;
+import android.content.pm.PackageInstaller;
+import android.content.pm.PackageInstaller.SessionParams;
+import android.content.pm.PackageManager;
 import android.os.ParcelFileDescriptor;
 import android.os.incremental.IncrementalManager;
 import android.platform.test.annotations.AppModeFull;
@@ -82,6 +88,14 @@
     private boolean mIncremental = false;
     private String mInstall = "";
 
+    private static PackageInstaller getPackageInstaller() {
+        return InstrumentationRegistry.getContext().getPackageManager().getPackageInstaller();
+    }
+
+    private static UiAutomation getUiAutomation() {
+        return InstrumentationRegistry.getInstrumentation().getUiAutomation();
+    }
+
     private static String executeShellCommand(String command) throws IOException {
         final ParcelFileDescriptor stdout =
                 InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
@@ -389,6 +403,69 @@
         assertFalse(isAppInstalled(TEST_APP_PACKAGE));
     }
 
+    @Test
+    public void testDataLoaderParamsApiV1() throws Exception {
+        if (!mStreaming) {
+            return;
+        }
+
+        getUiAutomation().adoptShellPermissionIdentity();
+        try {
+            final PackageInstaller installer = getPackageInstaller();
+
+            final SessionParams params = new SessionParams(SessionParams.MODE_FULL_INSTALL);
+            params.installFlags |= PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS;
+            params.installFlags |= PackageManager.INSTALL_ALLOW_TEST;
+            params.installFlags |= PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS;
+
+            final int sessionId = installer.createSession(params);
+            PackageInstaller.Session session = installer.openSession(sessionId);
+
+            assertEquals(null, session.getDataLoaderParams());
+
+            installer.abandonSession(sessionId);
+        } finally {
+            getUiAutomation().dropShellPermissionIdentity();
+        }
+    }
+
+    @Test
+    public void testDataLoaderParamsApiV2() throws Exception {
+        if (!mStreaming) {
+            return;
+        }
+
+        getUiAutomation().adoptShellPermissionIdentity();
+        try {
+            final PackageInstaller installer = getPackageInstaller();
+
+            final SessionParams params = new SessionParams(SessionParams.MODE_FULL_INSTALL);
+            params.installFlags |= PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS;
+            params.installFlags |= PackageManager.INSTALL_ALLOW_TEST;
+            params.installFlags |= PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS;
+
+            final ComponentName componentName = new ComponentName("foo", "bar");
+            final String args = "args";
+            params.setDataLoaderParams(
+                    mIncremental ? DataLoaderParams.forIncremental(componentName, args)
+                            : DataLoaderParams.forStreaming(componentName, args));
+
+            final int sessionId = installer.createSession(params);
+            PackageInstaller.Session session = installer.openSession(sessionId);
+
+            DataLoaderParams dataLoaderParams = session.getDataLoaderParams();
+            assertEquals(mIncremental ? DATA_LOADER_TYPE_INCREMENTAL : DATA_LOADER_TYPE_STREAMING,
+                    dataLoaderParams.getType());
+            assertEquals("foo", dataLoaderParams.getComponentName().getPackageName());
+            assertEquals("bar", dataLoaderParams.getComponentName().getClassName());
+            assertEquals("args", dataLoaderParams.getArguments());
+
+            installer.abandonSession(sessionId);
+        } finally {
+            getUiAutomation().dropShellPermissionIdentity();
+        }
+    }
+
     private String createUpdateSession(String packageName) throws IOException {
         return createSession("-p " + packageName);
     }