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

Commit 2189aec6 authored by Hai Zhang's avatar Hai Zhang
Browse files

Make MutateStateScope extend GetStateScope.

So that we can get and mutate state atomically.

Bug: 252884423
Test: presubmit
Change-Id: Id176b7211843085246933ca1c3397f6513e19cfe
parent c7482b1a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -129,11 +129,11 @@ abstract class WritableState {
    }
}

class GetStateScope(
open class GetStateScope(
    val state: AccessState
)

class MutateStateScope(
    val oldState: AccessState,
    val newState: AccessState
)
) : GetStateScope(newState)
+5 −6
Original line number Diff line number Diff line
@@ -555,7 +555,7 @@ class UidPermissionPolicy : SchemePolicy() {
                newFlags = newFlags or PermissionFlags.LEGACY_GRANTED
                // Explicitly check against the old state to determine if this permission is new.
                val isNewPermission =
                    getPermissionFlags(appId, userId, permissionName, oldState) == 0
                    getOldStatePermissionFlags(appId, userId, permissionName) == 0
                if (isNewPermission) {
                    newFlags = newFlags or PermissionFlags.IMPLICIT
                }
@@ -651,7 +651,7 @@ class UidPermissionPolicy : SchemePolicy() {
            }
            // Explicitly check against the old state to determine if this permission is new.
            val isNewPermission =
                getPermissionFlags(appId, userId, implicitPermissionName, oldState) == 0
                getOldStatePermissionFlags(appId, userId, implicitPermissionName) == 0
            if (!isNewPermission) {
                return@implicitPermissions
            }
@@ -1023,12 +1023,11 @@ class UidPermissionPolicy : SchemePolicy() {
        permissionName: String
    ): Int = getPermissionFlags(state, appId, userId, permissionName)

    private fun MutateStateScope.getPermissionFlags(
    private fun MutateStateScope.getOldStatePermissionFlags(
        appId: Int,
        userId: Int,
        permissionName: String,
        state: AccessState = newState
    ): Int = getPermissionFlags(state, appId, userId, permissionName)
        permissionName: String
    ): Int = getPermissionFlags(oldState, appId, userId, permissionName)

    private fun getPermissionFlags(
        state: AccessState,