diff --git a/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt b/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt index d6399790d92..e05340271f5 100644 --- a/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt +++ b/src/com/android/settings/spa/app/appinfo/AppInfoSettingsMoreOptions.kt @@ -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 { 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 9e7ec9bcd42..d4a989cc3ab 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 @@ -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)