diff options
| author | 2021-11-02 09:07:15 +0000 | |
|---|---|---|
| committer | 2021-11-02 09:07:15 +0000 | |
| commit | d17d71ef77721c79d9c92b398bee56e7746ea6ae (patch) | |
| tree | 71d0bb4a7a9196cbd5c6177faabb8c31f874b060 | |
| parent | 460ec06864284458ebeca1e0cd3a359a4a77692f (diff) | |
| parent | e583e6d6763c80b9b6dd1aeae917aa7ca14a3038 (diff) | |
Merge "Propagate classpath info for staged apex to PackageManager" am: e583e6d676
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1849818
Change-Id: Ie4860b409d9e012c7092a4dda7e10332e2da3066
4 files changed, 29 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java index c2c35b736eb7..08a72151aa37 100644 --- a/services/core/java/com/android/server/pm/StagingManager.java +++ b/services/core/java/com/android/server/pm/StagingManager.java @@ -1255,6 +1255,9 @@ public class StagingManager { info.diskImagePath = ai.modulePath; info.versionCode = ai.versionCode; info.versionName = ai.versionName; + info.hasBootClassPathJars = ai.hasBootClassPathJars; + info.hasDex2OatBootClassPathJars = ai.hasDex2OatBootClassPathJars; + info.hasSystemServerClassPathJars = ai.hasSystemServerClassPathJars; return info; } } diff --git a/tests/StagedInstallTest/Android.bp b/tests/StagedInstallTest/Android.bp index 7a564fcaa99e..a5852b52ff19 100644 --- a/tests/StagedInstallTest/Android.bp +++ b/tests/StagedInstallTest/Android.bp @@ -31,6 +31,7 @@ android_test_helper_app { ], test_suites: ["general-tests"], java_resources: [ + ":apex.apexd_test_classpath", ":com.android.apex.apkrollback.test_v2", ":StagedInstallTestApexV2", ":StagedInstallTestApexV2_WrongSha", @@ -54,6 +55,7 @@ java_test_host { "cts-install-lib-host", ], data: [ + ":apex.apexd_test", ":com.android.apex.apkrollback.test_v1", ":StagedInstallTestApexV2", ":StagedInstallTestApexV2_WrongSha", diff --git a/tests/StagedInstallTest/app/src/com/android/tests/stagedinstallinternal/StagedInstallInternalTest.java b/tests/StagedInstallTest/app/src/com/android/tests/stagedinstallinternal/StagedInstallInternalTest.java index c610641932df..f0ab63eb41b5 100644 --- a/tests/StagedInstallTest/app/src/com/android/tests/stagedinstallinternal/StagedInstallInternalTest.java +++ b/tests/StagedInstallTest/app/src/com/android/tests/stagedinstallinternal/StagedInstallInternalTest.java @@ -74,6 +74,11 @@ public class StagedInstallInternalTest { "ApexV2", SHIM_APEX_PACKAGE_NAME, 2, /* isApex= */ true, "com.android.apex.cts.shim.v2.apex"); + private static final String TEST_APEX_PACKAGE_NAME = "com.android.apex.test_package"; + private static final TestApp TEST_APEX_CLASSPATH = new TestApp("TestApex", + TEST_APEX_PACKAGE_NAME, 1, /*isApex=*/true, + "apex.apexd_test_classpath.apex"); + private File mTestStateFile = new File( InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(), "stagedinstall_state"); @@ -439,11 +444,13 @@ public class StagedInstallInternalTest { StagedApexInfo result = getPackageManagerNative().getStagedApexInfo("not found"); assertThat(result).isNull(); // Stage an apex - int sessionId = Install.single(APEX_V2).setStaged().commit(); + int sessionId = Install.single(TEST_APEX_CLASSPATH).setStaged().commit(); waitForSessionReady(sessionId); // Query proper module name - result = getPackageManagerNative().getStagedApexInfo(SHIM_APEX_PACKAGE_NAME); - assertThat(result.moduleName).isEqualTo(SHIM_APEX_PACKAGE_NAME); + result = getPackageManagerNative().getStagedApexInfo(TEST_APEX_PACKAGE_NAME); + assertThat(result.moduleName).isEqualTo(TEST_APEX_PACKAGE_NAME); + assertThat(result.hasBootClassPathJars).isTrue(); + assertThat(result.hasSystemServerClassPathJars).isTrue(); InstallUtils.openPackageInstallerSession(sessionId).abandon(); } diff --git a/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java b/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java index 31021031b47a..cd0078363c4b 100644 --- a/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java +++ b/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java @@ -61,6 +61,7 @@ public class StagedInstallInternalTest extends BaseHostJUnit4Test { private static final String APEX_WRONG_SHA = "com.android.apex.cts.shim.v2_wrong_sha.apex"; private static final String APK_A = "TestAppAv1.apk"; private static final String APK_IN_APEX_TESTAPEX_NAME = "com.android.apex.apkrollback.test"; + private static final String APEXD_TEST_APEX = "apex.apexd_test.apex"; private static final String TEST_VENDOR_APEX_ALLOW_LIST = "/vendor/etc/sysconfig/test-vendor-apex-allow-list.xml"; @@ -480,16 +481,29 @@ public class StagedInstallInternalTest extends BaseHostJUnit4Test { @Test public void testGetStagedModuleNames() throws Exception { + assumeTrue("Device does not support updating APEX", + mHostUtils.isApexUpdateSupported()); + runPhase("testGetStagedModuleNames"); } @Test + @LargeTest public void testGetStagedApexInfo() throws Exception { + assumeTrue("Device does not support updating APEX", + mHostUtils.isApexUpdateSupported()); + + pushTestApex(APEXD_TEST_APEX); + getDevice().reboot(); + runPhase("testGetStagedApexInfo"); } @Test public void testStagedApexObserver() throws Exception { + assumeTrue("Device does not support updating APEX", + mHostUtils.isApexUpdateSupported()); + runPhase("testStagedApexObserver"); } |