Merge "Modify conditions for preventing updated system apps from being downgraded"

This commit is contained in:
Oli Lan
2022-06-30 12:37:53 +00:00
committed by Android (Google) Code Review
2 changed files with 21 additions and 8 deletions

View File

@@ -163,7 +163,8 @@ final class DeletePackageHelper {
return PackageManager.DELETE_FAILED_INTERNAL_ERROR;
}
if (PackageManagerServiceUtils.isSystemApp(uninstalledPs)) {
if (PackageManagerServiceUtils.isUpdatedSystemApp(uninstalledPs)
&& ((deleteFlags & PackageManager.DELETE_SYSTEM_APP) == 0)) {
UserInfo userInfo = mUserManagerInternal.getUserInfo(userId);
if (userInfo == null || (!userInfo.isAdmin() && !mUserManagerInternal.getUserInfo(
mUserManagerInternal.getProfileParentId(userId)).isAdmin())) {

View File

@@ -70,13 +70,12 @@ class DeletePackageHelperTest {
@Test
fun deleteSystemPackageFailsIfNotAdminAndNotProfile() {
val ps = mPms.mSettings.getPackageLPr("a.data.package")
whenever(PackageManagerServiceUtils.isSystemApp(ps)).thenReturn(true)
whenever(PackageManagerServiceUtils.isUpdatedSystemApp(ps)).thenReturn(true)
whenever(mUserManagerInternal.getUserInfo(1)).thenReturn(UserInfo(1, "test", 0))
whenever(mUserManagerInternal.getProfileParentId(1)).thenReturn(1)
val dph = DeletePackageHelper(mPms)
val result = dph.deletePackageX("a.data.package", 1L, 1,
PackageManager.DELETE_SYSTEM_APP, false)
val result = dph.deletePackageX("a.data.package", 1L, 1, 0, false)
assertThat(result).isEqualTo(PackageManager.DELETE_FAILED_USER_RESTRICTED)
}
@@ -86,7 +85,7 @@ class DeletePackageHelperTest {
val userId = 1
val parentId = 5
val ps = mPms.mSettings.getPackageLPr("a.data.package")
whenever(PackageManagerServiceUtils.isSystemApp(ps)).thenReturn(true)
whenever(PackageManagerServiceUtils.isUpdatedSystemApp(ps)).thenReturn(true)
whenever(mUserManagerInternal.getUserInfo(userId)).thenReturn(
UserInfo(userId, "test", UserInfo.FLAG_PROFILE))
whenever(mUserManagerInternal.getProfileParentId(userId)).thenReturn(parentId)
@@ -94,8 +93,7 @@ class DeletePackageHelperTest {
UserInfo(userId, "testparent", 0))
val dph = DeletePackageHelper(mPms)
val result = dph.deletePackageX("a.data.package", 1L, userId,
PackageManager.DELETE_SYSTEM_APP, false)
val result = dph.deletePackageX("a.data.package", 1L, userId, 0, false)
assertThat(result).isEqualTo(PackageManager.DELETE_FAILED_USER_RESTRICTED)
}
@@ -132,4 +130,18 @@ class DeletePackageHelperTest {
assertThat(result).isEqualTo(PackageManager.DELETE_SUCCEEDED)
}
}
@Test
fun deleteSystemPackageSucceedsIfNotAdminButDeleteSystemAppSpecified() {
val ps = mPms.mSettings.getPackageLPr("a.data.package")
whenever(PackageManagerServiceUtils.isUpdatedSystemApp(ps)).thenReturn(true)
whenever(mUserManagerInternal.getUserInfo(1)).thenReturn(UserInfo(1, "test", 0))
whenever(mUserManagerInternal.getProfileParentId(1)).thenReturn(1)
val dph = DeletePackageHelper(mPms)
val result = dph.deletePackageX("a.data.package", 1L, 1,
PackageManager.DELETE_SYSTEM_APP, false)
assertThat(result).isEqualTo(PackageManager.DELETE_SUCCEEDED)
}
}