summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinthewaves <inthewaves@pm.me>2020-09-16 17:30:37 -0700
committerSemavi Ulusoy <doc.divxm@gmail.com>2021-08-26 16:38:59 +0300
commitde17fca1a2101c1fd09c7c6edb3f4fb456a259fc (patch)
tree856fbd33b89bef18480b9bec58cf167bb970d143
parent55b1267de872934b425a7e6bf736026f4971e0b4 (diff)
don't auto revoke Network and Sensors
These shouldn't be automatically removed since apps are currently granted these by default for compatibility. Users have to explicitly remove them rather than granting them. Apps would need to be aware of them and request them from the user to treat them like the standard permissions. Change-Id: I060947a3b78d3dea7f9632346ba91eb41f44e5d6
-rw-r--r--src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt3
-rw-r--r--src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt6
-rw-r--r--src/com/android/permissioncontroller/permission/utils/Utils.java11
3 files changed, 16 insertions, 4 deletions
diff --git a/src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt b/src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt
index d84b7c9a3..0d74a8c2f 100644
--- a/src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt
+++ b/src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt
@@ -29,6 +29,7 @@ import com.android.permissioncontroller.permission.service.ExemptServicesLiveDat
import com.android.permissioncontroller.permission.service.isAutoRevokeEnabled
import com.android.permissioncontroller.permission.service.isPackageAutoRevokeExempt
import com.android.permissioncontroller.permission.service.isPackageAutoRevokePermanentlyExempt
+import com.android.permissioncontroller.permission.utils.Utils
import kotlinx.coroutines.Job
/**
@@ -91,7 +92,7 @@ class AutoRevokeStateLiveData private constructor(
permState.permFlags and (FLAG_PERMISSION_GRANTED_BY_DEFAULT or
FLAG_PERMISSION_GRANTED_BY_ROLE) != 0
} ?: false
- if (!default) {
+ if (!default && !Utils.isSpecialRuntimePermissionGroup(groupName)) {
revocableGroups.add(groupName)
}
}
diff --git a/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt b/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt
index 8dd8e8f77..d7f8f229f 100644
--- a/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt
+++ b/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt
@@ -239,8 +239,7 @@ class AutoRevokeOnBootReceiver : BroadcastReceiver() {
private suspend fun revokePermissionsOnUnusedApps(
context: Context,
sessionId: Long = INVALID_SESSION_ID
-):
- List<Pair<String, UserHandle>> {
+): List<Pair<String, UserHandle>> {
if (!isAutoRevokeEnabled(context)) {
return emptyList()
}
@@ -361,7 +360,8 @@ private suspend fun revokePermissionsOnUnusedApps(
granted &&
!group.isGrantedByDefault &&
!group.isGrantedByRole &&
- group.isUserSensitive) {
+ group.isUserSensitive &&
+ !Utils.isSpecialRuntimePermissionGroup(groupName)) {
val revocablePermissions = group.permissions.keys.toList()
diff --git a/src/com/android/permissioncontroller/permission/utils/Utils.java b/src/com/android/permissioncontroller/permission/utils/Utils.java
index 2c55aed22..90acf9223 100644
--- a/src/com/android/permissioncontroller/permission/utils/Utils.java
+++ b/src/com/android/permissioncontroller/permission/utils/Utils.java
@@ -663,6 +663,17 @@ public final class Utils {
}
/**
+ * Is the permission group a special runtime permission group?
+ * These are treated as a runtime permission even for legacy apps. They
+ * need to be granted by default for all apps to maintain compatibility.
+ *
+ * @return whether the permission group is a special runtime permission group.
+ */
+ public static boolean isSpecialRuntimePermissionGroup(@NonNull String permissionGroup) {
+ return SPECIAL_RUNTIME_PERMISSIONS.containsValue(permissionGroup);
+ }
+
+ /**
* Should UI show this permission.
*
* <p>If the user cannot change the group, it should not be shown.