Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8ea2267 authored by Oli Lan's avatar Oli Lan Committed by Android (Google) Code Review
Browse files

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

parents 6e2ad6aa 02a03d77
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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())) {
+19 −7
Original line number Diff line number Diff line
@@ -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)
    }
}