Loading services/core/java/com/android/server/pm/DeletePackageHelper.java +7 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.pm; import static android.Manifest.permission.CONTROL_KEYGUARD; import static android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; Loading Loading @@ -364,6 +365,12 @@ final class DeletePackageHelper { synchronized (mPm.mLock) { final PackageSetting ps = mPm.mSettings.getPackageLPr(packageName); final PackageSetting disabledPs = mPm.mSettings.getDisabledSystemPkgLPr(ps); if (PackageManagerServiceUtils.isSystemApp(ps) && mPm.checkPermission(CONTROL_KEYGUARD, packageName, UserHandle.USER_SYSTEM) == PERMISSION_GRANTED) { Slog.w(TAG, "Attempt to delete keyguard system package " + packageName); return false; } action = mayDeletePackageLocked(outInfo, ps, disabledPs, flags, user); } if (DEBUG_REMOVE) Slog.d(TAG, "deletePackageLI: " + packageName + " user " + user); Loading services/tests/mockingservicestests/src/com/android/server/pm/DeletePackageHelperTest.kt +25 −0 Original line number Diff line number Diff line Loading @@ -16,9 +16,13 @@ package com.android.server.pm import android.Manifest.permission.CONTROL_KEYGUARD import android.content.pm.PackageManager import android.content.pm.PackageManager.PERMISSION_DENIED import android.content.pm.PackageManager.PERMISSION_GRANTED import android.content.pm.UserInfo import android.os.Build import android.os.UserHandle.USER_SYSTEM import android.util.Log import com.android.server.testutils.any import com.android.server.testutils.spy Loading Loading @@ -105,6 +109,8 @@ class DeletePackageHelperTest { whenever(PackageManagerServiceUtils.isSystemApp(ps)).thenReturn(true) whenever(mUserManagerInternal.getUserInfo(1)).thenReturn( UserInfo(1, "test", UserInfo.FLAG_ADMIN)) whenever(mPms.checkPermission(CONTROL_KEYGUARD, "a.data.package", USER_SYSTEM)) .thenReturn(PERMISSION_DENIED) val dph = DeletePackageHelper(mPms) val result = dph.deletePackageX("a.data.package", 1L, 1, Loading @@ -124,6 +130,8 @@ class DeletePackageHelperTest { whenever(mUserManagerInternal.getProfileParentId(userId)).thenReturn(parentId) whenever(mUserManagerInternal.getUserInfo(parentId)).thenReturn( UserInfo(userId, "testparent", UserInfo.FLAG_ADMIN)) whenever(mPms.checkPermission(CONTROL_KEYGUARD, "a.data.package", USER_SYSTEM)) .thenReturn(PERMISSION_DENIED) val dph = DeletePackageHelper(mPms) val result = dph.deletePackageX("a.data.package", 1L, userId, Loading @@ -138,6 +146,9 @@ class DeletePackageHelperTest { whenever(PackageManagerServiceUtils.isUpdatedSystemApp(ps)).thenReturn(true) whenever(mUserManagerInternal.getUserInfo(1)).thenReturn(UserInfo(1, "test", 0)) whenever(mUserManagerInternal.getProfileParentId(1)).thenReturn(1) whenever(PackageManagerServiceUtils.isSystemApp(ps)).thenReturn(true) whenever(mPms.checkPermission(CONTROL_KEYGUARD, "a.data.package", USER_SYSTEM)) .thenReturn(PERMISSION_DENIED) val dph = DeletePackageHelper(mPms) val result = dph.deletePackageX("a.data.package", 1L, 1, Loading @@ -145,4 +156,18 @@ class DeletePackageHelperTest { assertThat(result).isEqualTo(PackageManager.DELETE_SUCCEEDED) } @Test fun deleteSystemPackageWithKeyguard_fails() { val ps = mPms.mSettings.getPackageLPr("a.data.package") whenever(PackageManagerServiceUtils.isSystemApp(ps)).thenReturn(true) whenever(mPms.checkPermission(CONTROL_KEYGUARD, "a.data.package", USER_SYSTEM)) .thenReturn(PERMISSION_GRANTED) val dph = DeletePackageHelper(mPms) val result = dph.deletePackageX("a.data.package", 1L, 1, PackageManager.DELETE_SYSTEM_APP, false) assertThat(result).isEqualTo(PackageManager.DELETE_FAILED_INTERNAL_ERROR) } } Loading
services/core/java/com/android/server/pm/DeletePackageHelper.java +7 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.pm; import static android.Manifest.permission.CONTROL_KEYGUARD; import static android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; Loading Loading @@ -364,6 +365,12 @@ final class DeletePackageHelper { synchronized (mPm.mLock) { final PackageSetting ps = mPm.mSettings.getPackageLPr(packageName); final PackageSetting disabledPs = mPm.mSettings.getDisabledSystemPkgLPr(ps); if (PackageManagerServiceUtils.isSystemApp(ps) && mPm.checkPermission(CONTROL_KEYGUARD, packageName, UserHandle.USER_SYSTEM) == PERMISSION_GRANTED) { Slog.w(TAG, "Attempt to delete keyguard system package " + packageName); return false; } action = mayDeletePackageLocked(outInfo, ps, disabledPs, flags, user); } if (DEBUG_REMOVE) Slog.d(TAG, "deletePackageLI: " + packageName + " user " + user); Loading
services/tests/mockingservicestests/src/com/android/server/pm/DeletePackageHelperTest.kt +25 −0 Original line number Diff line number Diff line Loading @@ -16,9 +16,13 @@ package com.android.server.pm import android.Manifest.permission.CONTROL_KEYGUARD import android.content.pm.PackageManager import android.content.pm.PackageManager.PERMISSION_DENIED import android.content.pm.PackageManager.PERMISSION_GRANTED import android.content.pm.UserInfo import android.os.Build import android.os.UserHandle.USER_SYSTEM import android.util.Log import com.android.server.testutils.any import com.android.server.testutils.spy Loading Loading @@ -105,6 +109,8 @@ class DeletePackageHelperTest { whenever(PackageManagerServiceUtils.isSystemApp(ps)).thenReturn(true) whenever(mUserManagerInternal.getUserInfo(1)).thenReturn( UserInfo(1, "test", UserInfo.FLAG_ADMIN)) whenever(mPms.checkPermission(CONTROL_KEYGUARD, "a.data.package", USER_SYSTEM)) .thenReturn(PERMISSION_DENIED) val dph = DeletePackageHelper(mPms) val result = dph.deletePackageX("a.data.package", 1L, 1, Loading @@ -124,6 +130,8 @@ class DeletePackageHelperTest { whenever(mUserManagerInternal.getProfileParentId(userId)).thenReturn(parentId) whenever(mUserManagerInternal.getUserInfo(parentId)).thenReturn( UserInfo(userId, "testparent", UserInfo.FLAG_ADMIN)) whenever(mPms.checkPermission(CONTROL_KEYGUARD, "a.data.package", USER_SYSTEM)) .thenReturn(PERMISSION_DENIED) val dph = DeletePackageHelper(mPms) val result = dph.deletePackageX("a.data.package", 1L, userId, Loading @@ -138,6 +146,9 @@ class DeletePackageHelperTest { whenever(PackageManagerServiceUtils.isUpdatedSystemApp(ps)).thenReturn(true) whenever(mUserManagerInternal.getUserInfo(1)).thenReturn(UserInfo(1, "test", 0)) whenever(mUserManagerInternal.getProfileParentId(1)).thenReturn(1) whenever(PackageManagerServiceUtils.isSystemApp(ps)).thenReturn(true) whenever(mPms.checkPermission(CONTROL_KEYGUARD, "a.data.package", USER_SYSTEM)) .thenReturn(PERMISSION_DENIED) val dph = DeletePackageHelper(mPms) val result = dph.deletePackageX("a.data.package", 1L, 1, Loading @@ -145,4 +156,18 @@ class DeletePackageHelperTest { assertThat(result).isEqualTo(PackageManager.DELETE_SUCCEEDED) } @Test fun deleteSystemPackageWithKeyguard_fails() { val ps = mPms.mSettings.getPackageLPr("a.data.package") whenever(PackageManagerServiceUtils.isSystemApp(ps)).thenReturn(true) whenever(mPms.checkPermission(CONTROL_KEYGUARD, "a.data.package", USER_SYSTEM)) .thenReturn(PERMISSION_GRANTED) val dph = DeletePackageHelper(mPms) val result = dph.deletePackageX("a.data.package", 1L, 1, PackageManager.DELETE_SYSTEM_APP, false) assertThat(result).isEqualTo(PackageManager.DELETE_FAILED_INTERNAL_ERROR) } }