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

Commit f3109062 authored by Nate Myren's avatar Nate Myren
Browse files

Fix incorrect handling of single permission groups

The system incorrectly handles the situation where a permission group is
comprised of a single permission, by treating it as if it was a normal
permission group. Added special hanlding for these cases.

Fixes: 139440264
Test: Have a single permission permission group (located under the
"Additional permissions" screen in the permission controller. Click
a permission group, then click an app in this group. The app permission
screen should appear.

Change-Id: I7213a6373fd40ff98649a587ee1a6c34eb8f2d77
parent 37994896
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.Application
import android.content.pm.PackageInfo
import android.content.pm.PackageItemInfo
import android.content.pm.PackageManager
import android.content.pm.PermissionGroupInfo
import android.content.pm.PermissionInfo
import android.os.UserHandle
import androidx.lifecycle.MediatorLiveData
@@ -198,16 +199,26 @@ class PermissionGroupLiveData(
            return
        }

        val permInfos = try {
        when (groupInfo) {
            is PermissionGroupInfo -> {
                try {
                    val permInfos =
                        Utils.getPermissionInfosForGroup(context.packageManager, groupName)
                    for (permInfo in permInfos) {
                        permissionInfos[permInfo.name] = permInfo
                    }
                } catch (e: PackageManager.NameNotFoundException) {
                    value = null
                    return
                }

        for (permInfo in permInfos) {
            permissionInfos[permInfo.name] = permInfo
            }
            is PermissionInfo -> permissionInfos[groupName] = groupInfo as PermissionInfo
            else -> {
                value = null
                return
            }
        }

        value = PermissionGroup(groupInfo, permissionInfos)

        addPackageLiveData(groupInfo.packageName,