Merge "Expand uninstallForAll to Admins" into main

This commit is contained in:
Adam Bookatz
2025-01-02 11:01:50 -08:00
committed by Android (Google) Code Review
3 changed files with 22 additions and 2 deletions

View File

@@ -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;

View File

@@ -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(

View File

@@ -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))