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

Commit 9229860d authored by Manish Singh's avatar Manish Singh
Browse files

Don't show uninstall for all users

when the only profiles that have the package are hidden in quiet mode

Fix: 334041279
Test: atest AppInfoSettingsMoreOptionsTest
Test: manual
Change-Id: Ic8e594eb1db5bed926783a244a24e24c4435f04e
parent 30a03c4e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -175,6 +175,7 @@ private fun ApplicationInfo.isOtherUserHasInstallPackage(
    packageManagers: IPackageManagers,
): Boolean = userManager.aliveUsers
    .filter { it.id != userId }
    .filter { !Utils.shouldHideUser(it.userHandle, userManager) }
    .any { packageManagers.isPackageInstalledAsUser(packageName, it.id) }

private fun ApplicationInfo.shouldShowAccessRestrictedSettings(context: Context): Boolean {
+39 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.Context
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.content.pm.UserInfo
import android.os.UserHandle
import android.os.UserManager
import android.platform.test.annotations.RequiresFlagsDisabled
import android.platform.test.annotations.RequiresFlagsEnabled
@@ -170,6 +171,44 @@ class AppInfoSettingsMoreOptionsTest {
        )
    }

    @Test
    fun uninstallForAllUsers_appHiddenNotInQuietModeAndPrimaryUser_displayed() {
        val app = ApplicationInfo().apply {
            packageName = PACKAGE_NAME
            uid = UID
        }
        whenever(userManager.aliveUsers).thenReturn(listOf(OTHER_USER))
        whenever(packageManagers
                .isPackageInstalledAsUser(PACKAGE_NAME, OTHER_USER_ID))
            .thenReturn(true)
        whenever(Utils.shouldHideUser(UserHandle.of(OTHER_USER_ID), userManager)).thenReturn(false)

        setContent(app)
        composeTestRule.onRoot().performClick()

        composeTestRule.waitUntilExists(
            hasText(context.getString(R.string.uninstall_all_users_text))
        )

    }

    @Test
    fun uninstallForAllUsers_appHiddenInQuietModeAndPrimaryUser_notDisplayed() {
        val app = ApplicationInfo().apply {
            packageName = PACKAGE_NAME
            uid = UID
        }
        whenever(userManager.aliveUsers).thenReturn(listOf(OTHER_USER))
        whenever(packageManagers
                .isPackageInstalledAsUser(PACKAGE_NAME, OTHER_USER_ID))
            .thenReturn(true)
        whenever(Utils.shouldHideUser(UserHandle.of(OTHER_USER_ID), userManager)).thenReturn(true)

        setContent(ApplicationInfo())

        composeTestRule.onRoot().assertIsNotDisplayed()
    }

    @Test
    @RequiresFlagsDisabled(android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS,
        android.permission.flags.Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED)