Loading services/core/java/com/android/server/pm/Settings.java +3 −3 Original line number Diff line number Diff line Loading @@ -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); Loading services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java +40 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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) Loading Loading @@ -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*/, Loading Loading
services/core/java/com/android/server/pm/Settings.java +3 −3 Original line number Diff line number Diff line Loading @@ -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); Loading
services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java +40 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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) Loading Loading @@ -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*/, Loading