summaryrefslogtreecommitdiffstats
path: root/services/tests/servicestests
diff options
context:
space:
mode:
authorAdnan Begovic <adnan@cyngn.com>2015-09-15 14:57:28 -0700
committerSteve Kondik <steve@cyngn.com>2015-10-28 13:30:34 -0700
commit6615d36cf0fa7daef6a55373996beb65950a2885 (patch)
tree63e4f01768a69d1d64ae8b9f1475daab7182bef6 /services/tests/servicestests
parenta8ee5c9a1f7524b7434e9dcf6f406a5142cae5a8 (diff)
downloadframeworks_base-6615d36cf0fa7daef6a55373996beb65950a2885.zip
frameworks_base-6615d36cf0fa7daef6a55373996beb65950a2885.tar.gz
frameworks_base-6615d36cf0fa7daef6a55373996beb65950a2885.tar.bz2
prebundled: Handle prebundled packages per-user.
Also add migration step for reading old file to go towards per-user system file structure TICKET: CYNGNOS-1006 Change-Id: I743e8efaa074c9b84291fdc8d3d15763cc39e79d pm: Create per-mcc prebundled install filter. If packages are region locked, avoid installing them for the SKU, otherwise if a package is specified for a mobile country code, allow it to be installed. TICKET: CYNGNOS-912 Change-Id: I69c5be62dff771fc7d3117e9edf65d8ea4150f28 pm: Update PackageManagerSettingsTests. Change-Id: Ib3a23514055935f68f3f3bb4fd2b2d4d495c1132 PackageManager : Extend prebundled logic Instead of specifying which packages to explicitly install, Only install packages if : a) Its in the current mcc's config_region_locked_packages b) Its not region locked by checking config_restrict_to_region_locked_devices Change-Id: I74c13763ef367e16e5e79290a569f3a720b85adc
Diffstat (limited to 'services/tests/servicestests')
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java60
1 files changed, 56 insertions, 4 deletions
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 ed1db6f..993faa9 100644
--- a/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java
+++ b/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java
@@ -23,15 +23,27 @@ import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
import android.content.Context;
import android.content.pm.PackageParser;
+import android.content.res.AssetManager;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.os.SystemProperties;
import android.test.AndroidTestCase;
+import android.test.mock.MockContext;
+import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
+import android.util.DisplayMetrics;
import android.util.Log;
import android.util.LongSparseArray;
import com.android.internal.os.AtomicFile;
import java.lang.reflect.Constructor;
+
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import com.android.internal.R;
+
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -160,6 +172,12 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
folder.delete();
}
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ System.setProperty("dexmaker.dexcache", getContext().getCacheDir().toString());
+ }
+
private void writeOldFiles() {
deleteSystemFolder();
writePackagesXml();
@@ -269,7 +287,7 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
// Write the package files and make sure they're parsed properly the first time
writeOldFiles();
Settings settings = new Settings(getContext().getFilesDir(), new Object());
- assertEquals(true, settings.readLPw(null, null, 0, false));
+ assertEquals(true, settings.readLPw(null, null, 0, false, null));
assertNotNull(settings.peekPackageLPr(PACKAGE_NAME_3));
assertNotNull(settings.peekPackageLPr(PACKAGE_NAME_1));
@@ -289,12 +307,12 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
writeOldFiles();
createUserManagerServiceRef();
Settings settings = new Settings(getContext().getFilesDir(), new Object());
- assertEquals(true, settings.readLPw(null, null, 0, false));
+ assertEquals(true, settings.readLPw(null, null, 0, false, null));
settings.writeLPr();
// Create Settings again to make it read from the new files
settings = new Settings(getContext().getFilesDir(), new Object());
- assertEquals(true, settings.readLPw(null, null, 0, false));
+ assertEquals(true, settings.readLPw(null, null, 0, false, null));
PackageSetting ps = settings.peekPackageLPr(PACKAGE_NAME_2);
assertEquals(COMPONENT_ENABLED_STATE_DISABLED_USER, ps.getEnabled(0));
@@ -305,7 +323,7 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
// Write the package files and make sure they're parsed properly the first time
writeOldFiles();
Settings settings = new Settings(getContext().getFilesDir(), new Object());
- assertEquals(true, settings.readLPw(null, null, 0, false));
+ assertEquals(true, settings.readLPw(null, null, 0, false, null));
// Enable/Disable a package
PackageSetting ps = settings.peekPackageLPr(PACKAGE_NAME_1);
@@ -335,4 +353,38 @@ public class PackageManagerSettingsTests extends AndroidTestCase {
hasEnabled = ps.getEnabledComponents(0) != null && ps.getEnabledComponents(0).size() > 0;
assertEquals(false, hasEnabled);
}
+
+ // Checks if a package that is locked to a different region is rejected
+ // from being installed
+ public void testPrebundledDifferentRegionReject() {
+ Settings settings = new Settings(getContext(), getContext().getFilesDir());
+ String expectedPackageNeededForRegion = "org.cyanogenmod.restricted.package";
+ Resources resources = Mockito.mock(Resources.class);
+ String[] regionRestrictedPackages = new String[] {
+ expectedPackageNeededForRegion
+ };
+ Mockito.when(resources.getStringArray(R.array.config_restrict_to_region_locked_devices))
+ .thenReturn(regionRestrictedPackages);
+ assertFalse(settings.shouldPrebundledPackageBeInstalled(resources,
+ expectedPackageNeededForRegion, resources));
+ }
+
+ // Checks if a package that is locked to the current region is accepted
+ // This also covers the test for a package that needs to be installed on a
+ // non region locked device
+ public void testPrebundledMatchingRegionAccept() {
+ Settings settings = new Settings(getContext(), getContext().getFilesDir());
+ String expectedPackageNeededForRegion = "org.cyanogenmod.restricted.package";
+ Resources resources = Mockito.mock(Resources.class);
+ String[] regionLockedPackages = new String[] {
+ expectedPackageNeededForRegion
+ };
+ Mockito.when(resources.getStringArray(R.array.config_region_locked_packages))
+ .thenReturn(regionLockedPackages);
+
+ Mockito.when(resources.getStringArray(R.array.config_restrict_to_region_locked_devices))
+ .thenReturn(regionLockedPackages);
+ assertTrue(settings.shouldPrebundledPackageBeInstalled(resources,
+ expectedPackageNeededForRegion, resources));
+ }
}