diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java index 1712e85259c..432b71121de 100644 --- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java @@ -572,7 +572,7 @@ public class AppInfoDashboardFragment extends DashboardFragment showIt = false; } else if (mPackageInfo == null || mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) { showIt = false; - } else if (UserHandle.myUserId() != 0) { + } else if (!mUserManager.isAdminUser()) { showIt = false; } else if (mUserManager.getUsers().size() < 2) { showIt = false; diff --git a/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt b/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt index e05340271f5..1a3dd6eaa1b 100644 --- a/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt +++ b/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt @@ -167,7 +167,7 @@ private fun ApplicationInfo.isShowUninstallUpdates(context: Context): Boolean = private fun ApplicationInfo.isShowUninstallForAllUsers( userManager: UserManager, packageManagers: IPackageManagers, -): Boolean = userId == 0 && !isSystemApp && !isInstantApp && +): Boolean = userManager.isUserAdmin(userId) && !isSystemApp && !isInstantApp && isOtherUserHasInstallPackage(userManager, packageManagers) private fun ApplicationInfo.isOtherUserHasInstallPackage( diff --git a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptionsTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptionsTest.kt index d4a989cc3ab..11ba67f75f6 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptionsTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptionsTest.kt @@ -159,6 +159,7 @@ class AppInfoSettingsMoreOptionsTest { packageName = PACKAGE_NAME uid = UID } + whenever(userManager.isUserAdmin(app.userId)).thenReturn(true) whenever(userManager.aliveUsers).thenReturn(listOf(OTHER_USER)) whenever(packageManagers.isPackageInstalledAsUser(PACKAGE_NAME, OTHER_USER_ID)) .thenReturn(true) @@ -171,12 +172,30 @@ class AppInfoSettingsMoreOptionsTest { ) } + @Test + fun uninstallForAllUsers_NotAdminUser_notDisplayed() { + val app = ApplicationInfo().apply { + packageName = PACKAGE_NAME + uid = UID + } + whenever(userManager.isUserAdmin(app.userId)).thenReturn(false) + whenever(userManager.aliveUsers).thenReturn(listOf(OTHER_USER)) + whenever(packageManagers.isPackageInstalledAsUser(PACKAGE_NAME, OTHER_USER_ID)) + .thenReturn(true) + + setContent(app) + composeTestRule.onRoot().performClick() + + composeTestRule.onRoot().assertIsNotDisplayed() + } + @Test fun uninstallForAllUsers_appHiddenNotInQuietModeAndPrimaryUser_displayed() { val app = ApplicationInfo().apply { packageName = PACKAGE_NAME uid = UID } + whenever(userManager.isUserAdmin(app.userId)).thenReturn(true) whenever(userManager.aliveUsers).thenReturn(listOf(OTHER_USER)) whenever(packageManagers .isPackageInstalledAsUser(PACKAGE_NAME, OTHER_USER_ID)) @@ -198,6 +217,7 @@ class AppInfoSettingsMoreOptionsTest { packageName = PACKAGE_NAME uid = UID } + whenever(userManager.isUserAdmin(app.userId)).thenReturn(true) whenever(userManager.aliveUsers).thenReturn(listOf(OTHER_USER)) whenever(packageManagers .isPackageInstalledAsUser(PACKAGE_NAME, OTHER_USER_ID))