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

Commit 2a828c6b authored by Adam Bookatz's avatar Adam Bookatz Committed by Android (Google) Code Review
Browse files

Merge "Expand uninstallForAll to Admins" into main

parents 1d0c7054 49d3e348
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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(
+20 −0
Original line number Diff line number Diff line
@@ -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))