Merge "Update PackageSettingBase.usesStaticLibraries correctly." into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f3bb49b02a
@@ -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);
|
||||
|
||||
@@ -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*/,
|
||||
|
||||
Reference in New Issue
Block a user