diff options
| author | Eugene Susla <eugenesusla@google.com> | 2019-12-10 09:51:58 -0800 |
|---|---|---|
| committer | Nate Myren <ntmyren@google.com> | 2020-03-12 14:40:01 -0700 |
| commit | 4fce75d572b7e8587430f543fad2b4d9ad735b3a (patch) | |
| tree | 8edc72c5cb2bbc4350835802a63e2a3fa8c3644b /core/java/android/permission/PermissionControllerService.java | |
| parent | eaf14b274a7dc1a4cb55964822f6620ee59ed576 (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.java | 18 |
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 |
