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

Commit e2b80dfa authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Check for NameNotFoundException when querying for PackageInfo" into main

parents 1d8d403b 68916a9b
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.AppOpsManager
import android.app.AppOpsManager.OP_USE_FULL_SCREEN_INTENT
import android.content.AttributionSource
import android.content.Context
import android.content.pm.PackageManager.NameNotFoundException
import android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET
import android.content.pm.PackageManager.GET_PERMISSIONS
import android.os.UserHandle
@@ -79,6 +80,7 @@ class FullScreenIntentPermissionPreferenceController(
    }

    private fun isPermissionRequested(): Boolean {
        try {
            val packageInfo = packageManager.getPackageInfo(packageName, GET_PERMISSIONS)

            for (requestedPermission in packageInfo.requestedPermissions.orEmpty()) {
@@ -86,6 +88,9 @@ class FullScreenIntentPermissionPreferenceController(
                    return true
                }
            }
        } catch (exception: NameNotFoundException) {
            Log.e(TAG, "isPermissionRequested failed: $exception")
        }

        return false
    }
+15 −0
Original line number Diff line number Diff line
@@ -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)
    }