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

Commit 5768b236 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix incorrect foreground permissions calculation"

parents 5d2ba489 674633e2
Loading
Loading
Loading
Loading
+17 −32
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ data class LightAppPermGroup(
     * All foreground permissions in the permission group which are requested by the package.
     */
    val foregroundPermNames get() = permissions.mapNotNull { (name, _) ->
        if (name in backgroundPermNames) name else null
        if (name !in backgroundPermNames) name else null
    }

    val foreground = AppPermSubGroup(permissions.filter { it.key in foregroundPermNames },
@@ -101,30 +101,15 @@ data class LightAppPermGroup(
     */
    val isOneTime = permissions.any { it.value.isOneTime }

    val isBackgroundGranted = specialLocationGrant ?: permissions.any {
        backgroundPermNames.contains(it.key) && it.value.isGrantedIncludingAppOp
    }

    val isForegroundGrantedByDefault = permissions.any { !backgroundPermNames.contains(it.key) &&
        it.value.isGrantedByDefault
    }

    val isBackgroundGrantedByDefault = permissions.any { backgroundPermNames.contains(it.key) &&
        it.value.isGrantedByDefault
    }

    val isForegroundGrantedByRole = permissions.any { !backgroundPermNames.contains(it.key) &&
        it.value.isGrantedByRole
    }

    val isBackgroundGrantedByRole = permissions.any { backgroundPermNames.contains(it.key) &&
        it.value.isGrantedByRole
    }
    /**
     * Whether any permissions in this group are granted by default (pregrant)
     */
    val isGrantedByDefault = foreground.isGrantedByDefault || background.isGrantedByDefault

    /**
     * Whether this App Permission Subgroup's permissions are fixed by the user
     * Whether any permissions in this group are granted by being a role holder
     */
    val isUserFixed = permissions.any { it.value.isUserFixed }
    val isGrantedByRole = foreground.isGrantedByRole || background.isGrantedByRole

    /**
     * A subset of the AppPermssionGroup, representing either the background or foreground permissions
@@ -148,6 +133,11 @@ data class LightAppPermGroup(
         */
        val isSystemFixed = permissions.any { it.value.isSystemFixed }

        /**
         * Whether this App Permission Group's permissions are fixed by the user
         */
        val isUserFixed = permissions.any { it.value.isUserFixed }

        /**
         * Whether any of this App Permission SubGroup's permissions are granted
         */
@@ -157,15 +147,10 @@ data class LightAppPermGroup(
         * Whether any of this App Permission SubGroup's permissions are granted by default
         */
        val isGrantedByDefault = permissions.any { it.value.isGrantedByDefault }
    }

        /**
     * Whether any permissions in this group are granted by default (pregrant)
     */
    val isGrantedByDefault = isForegroundGrantedByDefault || isBackgroundGrantedByDefault

    /**
     * Whether any permissions in this group are granted by being a role holder
         * Whether any of this App Permission SubGroup's permissions are granted by their role
         */
    val isGrantedByRole = isForegroundGrantedByRole || isBackgroundGrantedByRole
        val isGrantedByRole = permissions.any { it.value.isGrantedByRole }
    }
}
 No newline at end of file
+7 −6
Original line number Diff line number Diff line
@@ -174,8 +174,9 @@ class AppPermissionViewModel(
                        group.foreground.isGranted
                allowedForegroundState.isChecked = group.foreground.isGranted &&
                        !group.background.isGranted && !group.isOneTime
                askState.isChecked = !group.foreground.isGranted && !group.isUserFixed
                deniedState.isChecked = !group.foreground.isGranted && group.isUserFixed
                val groupUserFixed = group.foreground.isUserFixed || group.background.isUserFixed
                askState.isChecked = !group.foreground.isGranted && !groupUserFixed
                deniedState.isChecked = !group.foreground.isGranted && groupUserFixed

                if (applyFixToForegroundBackground(group, group.foreground.isSystemFixed,
                                group.background.isSystemFixed, allowedAlwaysState,
@@ -200,8 +201,8 @@ class AppPermissionViewModel(
                allowedState.isShown = true

                allowedState.isChecked = group.foreground.isGranted
                askState.isChecked = !group.foreground.isGranted && !group.isUserFixed
                deniedState.isChecked = !group.foreground.isGranted && group.isUserFixed
                askState.isChecked = !group.foreground.isGranted && !group.foreground.isUserFixed
                deniedState.isChecked = !group.foreground.isGranted && group.foreground.isUserFixed

                if (group.foreground.isPolicyFixed || group.foreground.isSystemFixed) {
                    allowedState.isEnabled = false
@@ -420,7 +421,7 @@ class AppPermissionViewModel(
                var newGroup = group
                val oldGroup = group
                if (shouldChangeForeground &&
                    (wasForegroundGranted || userFixed != group.isUserFixed)) {
                    (wasForegroundGranted || userFixed != group.foreground.isUserFixed)) {
                    newGroup = KotlinUtils.revokeForegroundRuntimePermissions(app, newGroup,
                        userFixed)

@@ -431,7 +432,7 @@ class AppPermissionViewModel(
                    }
                }
                if (shouldChangeBackground && group.hasBackgroundGroup &&
                    (wasBackgroundGranted || userFixed != group.isUserFixed)) {
                    (wasBackgroundGranted || userFixed != group.background.isUserFixed)) {
                    newGroup = KotlinUtils.revokeBackgroundRuntimePermissions(app,
                        newGroup, userFixed)