/** @deprecated Use {@link #getInternalMutablePackageInfo} instead. It has better name. */ @Deprecated public PackageInfo getPackageInfoForTesting(String packageName) { return getInternalMutablePackageInfo(packageName); }
@Test public void installPackage_defaults() { PackageInfo info = new PackageInfo(); info.packageName = "name"; info.activities = new ActivityInfo[] {new ActivityInfo()}; shadowPackageManager.installPackage(info); PackageInfo installed = shadowPackageManager.getInternalMutablePackageInfo("name"); ActivityInfo activity = installed.activities[0]; assertThat(installed.applicationInfo).isNotNull(); assertThat(installed.applicationInfo.packageName).isEqualTo("name"); assertThat((installed.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) != 0) .named("%s is installed", installed.applicationInfo) .isTrue(); assertThat(activity.packageName).isEqualTo("name"); // this should be really equal in parcel sense as ApplicationInfo doesn't implement equals(). assertThat(activity.applicationInfo).isEqualTo(installed.applicationInfo); assertThat(installed.applicationInfo.processName).isEqualTo("name"); assertThat(activity.name).isNotEmpty(); }
@Test public void deletePackage() throws Exception { // Apps must have the android.permission.DELETE_PACKAGES set to delete packages. PackageManager packageManager = ApplicationProvider.getApplicationContext().getPackageManager(); shadowPackageManager.getInternalMutablePackageInfo( ApplicationProvider.getApplicationContext().getPackageName()) .requestedPermissions = new String[] {android.Manifest.permission.DELETE_PACKAGES}; PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = "test.package"; shadowPackageManager.installPackage(packageInfo); IPackageDeleteObserver mockObserver = mock(IPackageDeleteObserver.class); packageManager.deletePackage(packageInfo.packageName, mockObserver, 0); shadowPackageManager.doPendingUninstallCallbacks(); assertThat(shadowPackageManager.getDeletedPackages()).contains(packageInfo.packageName); verify(mockObserver).packageDeleted(packageInfo.packageName, PackageManager.DELETE_SUCCEEDED); }
@Test @Config(minSdk = LOLLIPOP) public void enforcePermissionChecks() throws Exception { shadowOf(userManager).enforcePermissionChecks(true); try { userManager.isManagedProfile(); fail("Expected exception"); } catch (SecurityException expected) {} Application context = ApplicationProvider.getApplicationContext(); PackageInfo packageInfo = shadowOf(context.getPackageManager()) .getInternalMutablePackageInfo(context.getPackageName()); packageInfo.requestedPermissions = new String[] {permission.MANAGE_USERS}; shadowOf(userManager).setManagedProfile(true); assertThat(userManager.isManagedProfile()).isTrue(); }
/** @deprecated Use {@link #getInternalMutablePackageInfo} instead. It has better name. */ @Deprecated public PackageInfo getPackageInfoForTesting(String packageName) { return getInternalMutablePackageInfo(packageName); }