summaryrefslogtreecommitdiff
path: root/core/java/android/permission/PermissionControllerService.java
diff options
context:
space:
mode:
authorEugene Susla <eugenesusla@google.com>2019-12-10 09:51:58 -0800
committerNate Myren <ntmyren@google.com>2020-03-12 14:40:01 -0700
commit4fce75d572b7e8587430f543fad2b4d9ad735b3a (patch)
tree8edc72c5cb2bbc4350835802a63e2a3fa8c3644b /core/java/android/permission/PermissionControllerService.java
parenteaf14b274a7dc1a4cb55964822f6620ee59ed576 (diff)
Update USER_SENSITIVE flags on app install and optimize it
This also parallelizes flag updating. Currently, the broadcast listener is disabled, due to test flake, so it will not update on app install/changes Bug: 141311767 Test: - on first boot go to permissions screen, and ensure system apps categorization makes sense - install app that requests location, and ensure it's not listed as system app in permission screen Change-Id: I37ea4b196313fe9fa71150c21e7cca591067d572
Diffstat (limited to 'core/java/android/permission/PermissionControllerService.java')
-rw-r--r--core/java/android/permission/PermissionControllerService.java18
1 files changed, 12 insertions, 6 deletions
diff --git a/core/java/android/permission/PermissionControllerService.java b/core/java/android/permission/PermissionControllerService.java
index 263b2c7a4ac7..4a42230ad15a 100644
--- a/core/java/android/permission/PermissionControllerService.java
+++ b/core/java/android/permission/PermissionControllerService.java
@@ -218,11 +218,14 @@ public abstract class PermissionControllerService extends Service {
* Called by system to update the
* {@link PackageManager}{@code .FLAG_PERMISSION_USER_SENSITIVE_WHEN_*} flags for permissions.
* <p>
- * This is typically when creating a new user or upgrading either system or
- * permission controller package.
+ *
+ * If uid is -1, updates the permission flags for all packages.
+ *
+ * Typically called by the system when a new app is installed or updated or when creating a
+ * new user or upgrading either system or permission controller package.
*/
@BinderThread
- public void onUpdateUserSensitivePermissionFlags() {
+ public void onUpdateUserSensitivePermissionFlags(int uid, @NonNull Runnable callback) {
throw new AbstractMethodError("Must be overridden in implementing class");
}
@@ -459,11 +462,14 @@ public abstract class PermissionControllerService extends Service {
}
@Override
- public void updateUserSensitive(AndroidFuture callback) {
+ public void updateUserSensitiveForApp(int uid, @NonNull AndroidFuture callback) {
Preconditions.checkNotNull(callback, "callback cannot be null");
- onUpdateUserSensitivePermissionFlags();
- callback.complete(null);
+ try {
+ onUpdateUserSensitivePermissionFlags(uid, () -> callback.complete(null));
+ } catch (Exception e) {
+ callback.completeExceptionally(e);
+ }
}
@Override