diff options
| author | Nate Myren <ntmyren@google.com> | 2020-03-13 19:43:10 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-03-13 19:43:10 +0000 |
| commit | 2585289c30240c50e767ed8181bf01d2cfc2123a (patch) | |
| tree | 097a11328cc273903b2fc8be0b065139e51001b8 /core/java/android | |
| parent | d7886dcbae5d65ec06ac3e90d4d30611184d4937 (diff) | |
| parent | 4fce75d572b7e8587430f543fad2b4d9ad735b3a (diff) | |
Merge "Update USER_SENSITIVE flags on app install and optimize it" into rvc-dev
Diffstat (limited to 'core/java/android')
3 files changed, 28 insertions, 9 deletions
diff --git a/core/java/android/permission/IPermissionController.aidl b/core/java/android/permission/IPermissionController.aidl index 0483514e6297..f01139542541 100644 --- a/core/java/android/permission/IPermissionController.aidl +++ b/core/java/android/permission/IPermissionController.aidl @@ -42,6 +42,6 @@ oneway interface IPermissionController { void setRuntimePermissionGrantStateByDeviceAdmin(String callerPackageName, String packageName, String permission, int grantState, in AndroidFuture callback); void grantOrUpgradeDefaultRuntimePermissions(in AndroidFuture callback); - void updateUserSensitive(in AndroidFuture callback); void notifyOneTimePermissionSessionTimeout(String packageName); + void updateUserSensitiveForApp(int uid, in AndroidFuture callback); } diff --git a/core/java/android/permission/PermissionControllerManager.java b/core/java/android/permission/PermissionControllerManager.java index 2a1857fd0027..f08e3d25632b 100644 --- a/core/java/android/permission/PermissionControllerManager.java +++ b/core/java/android/permission/PermissionControllerManager.java @@ -46,6 +46,7 @@ import android.content.pm.ResolveInfo; import android.os.Binder; import android.os.Bundle; import android.os.Handler; +import android.os.Process; import android.os.UserHandle; import android.util.ArrayMap; import android.util.Log; @@ -626,14 +627,26 @@ public final class PermissionControllerManager { } /** - * @see PermissionControllerService#onUpdateUserSensitive() + * @see PermissionControllerManager#updateUserSensitiveForApp * @hide */ public void updateUserSensitive() { + updateUserSensitiveForApp(Process.INVALID_UID); + } + + /** + * @see PermissionControllerService#onUpdateUserSensitiveForApp + * @hide + */ + public void updateUserSensitiveForApp(int uid) { mRemoteService.postAsync(service -> { AndroidFuture<Void> future = new AndroidFuture<>(); - service.updateUserSensitive(future); + service.updateUserSensitiveForApp(uid, future); return future; + }).whenComplete((res, err) -> { + if (err != null) { + Log.e(TAG, "Error updating user_sensitive flags for uid " + uid, err); + } }); } 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 |
