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

Commit 8540f01f authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Don't keep pregrants for non-system apps after partial uninstallation" into main

parents 1438156a 218b605b
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -286,14 +286,21 @@ class AppIdPermissionPolicy : SchemePolicy() {
                return@forEach
            }
            var newFlags = oldFlags
            val isSystemOrInstalled =
                packageState.isSystem || packageState.getUserStateOrDefault(userId).isInstalled
            newFlags =
                if (
                    isSystemOrInstalled && (
                        newFlags.hasBits(PermissionFlags.ROLE) ||
                            newFlags.hasBits(PermissionFlags.PREGRANT)
                    )
                ) {
                    newFlags or PermissionFlags.RUNTIME_GRANTED
                } else {
                    newFlags andInv PermissionFlags.RUNTIME_GRANTED
                    newFlags andInv (
                        PermissionFlags.RUNTIME_GRANTED or PermissionFlags.ROLE or
                            PermissionFlags.PREGRANT
                    )
                }
            newFlags = newFlags andInv USER_SETTABLE_MASK
            if (newFlags.hasBits(PermissionFlags.LEGACY_GRANTED)) {
+2 −1
Original line number Diff line number Diff line
@@ -72,7 +72,8 @@ class AppIdPermissionPolicyPermissionResetTest : BasePermissionPolicyTest() {
        } else {
            mockPackageState(
                APP_ID_1,
                mockAndroidPackage(PACKAGE_NAME_1, requestedPermissions = setOf(PERMISSION_NAME_0))
                mockAndroidPackage(PACKAGE_NAME_1, requestedPermissions = setOf(PERMISSION_NAME_0)),
                true
            )
        }
        setPermissionFlags(APP_ID_1, USER_ID_0, PERMISSION_NAME_0, oldFlags)