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);
}