Check for NameNotFoundException when querying for PackageInfo

PackageManager.getPackageInfo will throw NameNotFoundException if package was/is being removed.

Test: atest FullScreenIntentPermissionPreferenceControllerTest
Bug: 296163845
Change-Id: I3242ac7e68fa7ed99fe99c7de7cd97aaf87948ee
This commit is contained in:
Valentin Iftime
2023-09-28 17:37:19 +02:00
parent a191396363
commit 68916a9bbf
2 changed files with 24 additions and 4 deletions

View File

@@ -30,6 +30,7 @@ import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET
import android.content.pm.PackageManager.GET_PERMISSIONS
import android.content.pm.PackageManager.NameNotFoundException
import android.os.UserHandle
import android.permission.PermissionManager.PERMISSION_GRANTED
import android.permission.PermissionManager.PERMISSION_HARD_DENIED
@@ -133,6 +134,14 @@ class FullScreenIntentPermissionPreferenceControllerTest {
assertTrue(controller.isAvailable)
}
@Test
fun testIsAvailable_notWhenPackageNotFound() {
setPackageInfoNotFound()
initController()
assertFalse(controller.isAvailable)
}
@Test
fun testIsEnabled_notWhenDisabledByAdmin() {
setPermissionRequestedInManifest()
@@ -242,6 +251,12 @@ class FullScreenIntentPermissionPreferenceControllerTest {
})
}
private fun setPackageInfoNotFound() {
whenever(packageManager.getPackageInfo(TEST_PACKAGE, GET_PERMISSIONS)).thenThrow(
NameNotFoundException(TEST_PACKAGE)
)
}
private fun setPermissionResult(@PermissionResult result: Int) {
ShadowPermissionChecker.setResult(TEST_PACKAGE, USE_FULL_SCREEN_INTENT, result)
}