Merge "Handle PackageManager.NameNotFoundException thrown from PackageManager.isAppArchivable as false" into main

This commit is contained in:
Jakob Schneider
2024-04-16 10:02:32 +00:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 5 deletions

View File

@@ -21,6 +21,7 @@ import android.content.Intent
import android.content.IntentFilter
import android.content.pm.ApplicationInfo
import android.content.pm.PackageInstaller
import android.content.pm.PackageManager
import android.os.UserHandle
import android.util.Log
import android.widget.Toast
@@ -87,11 +88,15 @@ class AppArchiveButton(
}
private fun ApplicationInfo.isActionButtonEnabled(): Boolean {
return !isArchived
&& userPackageManager.isAppArchivable(packageName)
// We apply the same device policy for both the uninstallation and archive
// button.
&& !appButtonRepository.isUninstallBlockedByAdmin(this)
return try {
(!isArchived
&& userPackageManager.isAppArchivable(packageName)
// We apply the same device policy for both the uninstallation and archive
// button.
&& !appButtonRepository.isUninstallBlockedByAdmin(this))
} catch (e: PackageManager.NameNotFoundException) {
false
}
}
private fun onArchiveClicked(app: ApplicationInfo) {

View File

@@ -109,6 +109,19 @@ class AppArchiveButtonTest {
assertThat(enabledActionButton.enabled).isFalse()
}
@Test
fun appArchiveButton_whenPackageIsNotFound_isDisabled() {
val app = ApplicationInfo().apply {
packageName = PACKAGE_NAME
isArchived = false
}
whenever(userPackageManager.isAppArchivable(app.packageName)).thenThrow(PackageManager.NameNotFoundException())
val actionButton = setContent(app)
assertThat(actionButton.enabled).isFalse()
}
@Test
fun appArchiveButton_displaysRightTextAndIcon() {
val app = ApplicationInfo().apply {