summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sudheer Shanka <sudheersai@google.com> 2017-05-19 21:05:23 +0000
committer android-build-merger <android-build-merger@google.com> 2017-05-19 21:05:23 +0000
commitb2d50b4f9260bac241d59b993069604571291610 (patch)
tree27e415b6f66973a0b2397711eb899960ba7abfc7
parent0345230f5c74692c9ab7701121224864b1b115d9 (diff)
parent9597cec9bec1be5ff1f678b4c0b7a720d455205e (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.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java40
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*/,