diff options
| author | 2017-05-19 21:05:23 +0000 | |
|---|---|---|
| committer | 2017-05-19 21:05:23 +0000 | |
| commit | b2d50b4f9260bac241d59b993069604571291610 (patch) | |
| tree | 27e415b6f66973a0b2397711eb899960ba7abfc7 | |
| parent | 0345230f5c74692c9ab7701121224864b1b115d9 (diff) | |
| parent | 9597cec9bec1be5ff1f678b4c0b7a720d455205e (diff) | |
Merge "Update PackageSettingBase.usesStaticLibraries correctly." into oc-dev am: f3bb49b02a
am: 9597cec9be
Change-Id: Ia0d0e00e65e311a755c1db4351c15864e4d50ba6
| -rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 6 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java | 40 |
2 files changed, 43 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 44bcff25b53c..24cbdbff9153 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -987,11 +987,11 @@ final class Settings { // Update static shared library dependencies if needed if (pkg.usesStaticLibraries != null && pkg.usesStaticLibrariesVersions != null && pkg.usesStaticLibraries.size() == pkg.usesStaticLibrariesVersions.length) { - String[] usesStaticLibraries = new String[pkg.usesStaticLibraries.size()]; - pkg.usesStaticLibraries.toArray(usesStaticLibraries); + p.usesStaticLibraries = new String[pkg.usesStaticLibraries.size()]; + pkg.usesStaticLibraries.toArray(p.usesStaticLibraries); p.usesStaticLibrariesVersions = pkg.usesStaticLibrariesVersions; } else { - pkg.usesStaticLibraries = null; + p.usesStaticLibraries = null; p.usesStaticLibrariesVersions = null; } addPackageSettingLPw(p, p.sharedUser); diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java b/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java index 5e4ba7bec713..25ba66ef17db 100644 --- a/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java +++ b/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java @@ -25,9 +25,12 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.nullValue; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import android.annotation.NonNull; @@ -37,6 +40,7 @@ import android.content.pm.PackageUserState; import android.content.pm.UserInfo; import android.os.UserHandle; import android.os.UserManagerInternal; +import android.security.keystore.ArrayUtils; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; @@ -57,6 +61,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.security.PublicKey; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @RunWith(AndroidJUnit4.class) @@ -527,6 +532,41 @@ public class PackageManagerSettingsTests { false /*notLaunched*/, false /*stopped*/, true /*installed*/); } + @Test + public void testInsertPackageSetting() { + final PackageSetting ps = createPackageSetting(0 /*sharedUserId*/, 0 /*pkgFlags*/); + final PackageParser.Package pkg = new PackageParser.Package(PACKAGE_NAME); + pkg.applicationInfo.setCodePath(ps.codePathString); + pkg.applicationInfo.setResourcePath(ps.resourcePathString); + final Settings settings = + new Settings(InstrumentationRegistry.getContext().getFilesDir(), new Object()); + pkg.usesStaticLibraries = new ArrayList<>( + Arrays.asList("foo.bar1", "foo.bar2", "foo.bar3")); + pkg.usesStaticLibrariesVersions = new int[] {2, 4, 6}; + settings.insertPackageSettingLPw(ps, pkg); + assertEquals(pkg, ps.pkg); + assertArrayEquals(pkg.usesStaticLibraries.toArray(new String[0]), ps.usesStaticLibraries); + assertArrayEquals(pkg.usesStaticLibrariesVersions, ps.usesStaticLibrariesVersions); + + pkg.usesStaticLibraries = null; + pkg.usesStaticLibrariesVersions = null; + settings.insertPackageSettingLPw(ps, pkg); + assertEquals(pkg, ps.pkg); + assertNull("Actual: " + Arrays.toString(ps.usesStaticLibraries), ps.usesStaticLibraries); + assertNull("Actual: " + Arrays.toString(ps.usesStaticLibrariesVersions), + ps.usesStaticLibrariesVersions); + } + + private <T> void assertArrayEquals(T[] a, T[] b) { + assertTrue("Expected: " + Arrays.toString(a) + ", actual: " + Arrays.toString(b), + Arrays.equals(a, b)); + } + + private void assertArrayEquals(int[] a, int[] b) { + assertTrue("Expected: " + Arrays.toString(a) + ", actual: " + Arrays.toString(b), + Arrays.equals(a, b)); + } + private void verifyUserState(PackageUserState userState, PackageUserState oldUserState, boolean userStateChanged) { verifyUserState(userState, oldUserState, userStateChanged, false /*notLaunched*/, |