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

Commit 9eb10803 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Add state of auto-revoke toggle to dump

Test: dumpsys permissionmgr
Bug: 151252163
Change-Id: I1ad67f1d1043082bba30f48d25d2da4f711e531f
parent e0da5ad5
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ import com.android.permissioncontroller.R
import com.android.permissioncontroller.permission.data.AllPackageInfosLiveData
import com.android.permissioncontroller.permission.data.AppOpLiveData
import com.android.permissioncontroller.permission.data.AutoRevokeManifestExemptPackagesLiveData
import com.android.permissioncontroller.permission.data.AutoRevokeStateLiveData
import com.android.permissioncontroller.permission.data.DataRepositoryForPackage
import com.android.permissioncontroller.permission.data.LightAppPermGroupLiveData
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData
@@ -743,6 +744,7 @@ private class AutoRevokeDumpLiveData(context: Context) :
        val firstInstallTime: Long,
        val lastTimeVisible: Long?,
        val isAutoRevokeManifestExempt: Boolean,
        val isAutoRevokeEnabled: Boolean,
        val implementedServices: List<String>,
        val groups: List<AutoRevokeDumpGroupData>
    ) {
@@ -752,6 +754,7 @@ private class AutoRevokeDumpLiveData(context: Context) :
                    .setPackageName(packageName)
                    .setFirstInstallTime(firstInstallTime)
                    .setIsAutoRevokeManifestExempt(isAutoRevokeManifestExempt)
                    .setIsAutoRevokeEnabled(isAutoRevokeEnabled)

            lastTimeVisible?.let { dump.lastTimeVisible = lastTimeVisible }

@@ -815,6 +818,13 @@ private class AutoRevokeDumpLiveData(context: Context) :
    private var pkgPermGroupNames:
            MutableMap<Pair<UserHandle, String>, PackagePermissionsLiveData>? = null

    /**
     * Group names for packages
     * map<user, pkg-name> -> auto-revoke state. {@code null} before step 1
     */
    private var pkgAutoRevokeState:
            MutableMap<Pair<UserHandle, String>, AutoRevokeStateLiveData>? = null

    /**
     * Group state for packages
     * map<(user, pkg-name) -> map<perm-group-name -> group>>, value {@code null} before step 2
@@ -847,6 +857,8 @@ private class AutoRevokeDumpLiveData(context: Context) :
        addSource(packages) {
            pkgPermGroupNames?.values?.forEach { removeSource(it) }
            pkgPermGroupNames = null
            pkgAutoRevokeState?.values?.forEach { removeSource(it) }
            pkgAutoRevokeState = null
            pkgPermGroups.values.forEach { it?.values?.forEach { removeSource(it) } }

            updateIfActive()
@@ -885,6 +897,7 @@ private class AutoRevokeDumpLiveData(context: Context) :
        // pkgPermGroupNames step 1, packages is loaded, nothing else
        if (packages.isInitialized && pkgPermGroupNames == null) {
            pkgPermGroupNames = mutableMapOf()
            pkgAutoRevokeState = mutableMapOf()

            for ((user, userPkgs) in packages.value!!) {
                for (pkg in userPkgs) {
@@ -897,6 +910,13 @@ private class AutoRevokeDumpLiveData(context: Context) :

                        updateIfActive()
                    }

                    val newPkgAutoRevokeState = AutoRevokeStateLiveData[pkg.packageName, user]
                    pkgAutoRevokeState!![user to pkg.packageName] = newPkgAutoRevokeState

                    addSource(newPkgAutoRevokeState) {
                        updateIfActive()
                    }
                }
            }
        }
@@ -934,7 +954,8 @@ private class AutoRevokeDumpLiveData(context: Context) :
                pkgPermGroupNames?.size == pkgPermGroups.size &&
                pkgPermGroups.values.all { it?.values?.all { it.isInitialized } == true } &&
                services?.values?.all { it.isInitialized } == true &&
                autoRevokeManifestExemptPackages?.values?.all { it.isInitialized } == true) {
                autoRevokeManifestExemptPackages?.values?.all { it.isInitialized } == true &&
                pkgAutoRevokeState?.values?.all { it.isInitialized } == true) {
            val users = mutableListOf<AutoRevokeDumpUserData>()

            for ((user, userPkgs) in packages.value!!) {
@@ -967,6 +988,8 @@ private class AutoRevokeDumpLiveData(context: Context) :
                                    ?.find { it.packageName == pkg.packageName }?.lastTimeVisible,
                            autoRevokeManifestExemptPackages!![user]!!.value!!
                                    .contains(pkg.packageName),
                            pkgAutoRevokeState!![user to pkg.packageName]!!.value
                                    ?.isEnabledForApp == true,
                            services!![user]?.value!![pkg.packageName] ?: emptyList(),
                            groups))
                }
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ message PackageProto {
  repeated PermissionGroupProto groups = 6;
  repeated string implemented_services = 7;
  optional bool is_auto_revoke_manifest_exempt = 8;
  optional bool is_auto_revoke_enabled = 9;
}

message PermissionGroupProto {