summaryrefslogtreecommitdiff
path: root/services/permission/java
diff options
context:
space:
mode:
Diffstat (limited to 'services/permission/java')
-rw-r--r--services/permission/java/com/android/server/permission/access/permission/PermissionService.kt18
1 files changed, 18 insertions, 0 deletions
diff --git a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
index dd36c38c1bd4..acd0a3cbbb98 100644
--- a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
@@ -241,6 +241,9 @@ class PermissionService(
): PermissionInfo =
@Suppress("DEPRECATION")
PermissionInfo(permissionInfo).apply {
+ // All Permission objects are registered so the PermissionInfo generated for it should
+ // also have FLAG_INSTALLED.
+ this.flags = this.flags or PermissionInfo.FLAG_INSTALLED
if (!flags.hasBits(PackageManager.GET_META_DATA)) {
metaData = null
}
@@ -322,6 +325,21 @@ class PermissionService(
return permission.getGidsForUser(userId)
}
+ override fun getInstalledPermissions(packageName: String): Set<String> {
+ requireNotNull(packageName) { "packageName cannot be null" }
+
+ val permissions = service.getState {
+ with(policy) { getPermissions() }
+ }
+ return permissions.mapNotNullIndexedToSet { _, _, permission ->
+ if (permission.packageName == packageName) {
+ permission.name
+ } else {
+ null
+ }
+ }
+ }
+
override fun addPermission(permissionInfo: PermissionInfo, async: Boolean): Boolean {
val permissionName = permissionInfo.name
requireNotNull(permissionName) { "permissionName cannot be null" }