Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac4406b4 authored by Thomas Vannet's avatar Thomas Vannet Committed by Android (Google) Code Review
Browse files

Merge changes from topics "cherrypick-selfrevokemultiuser-emqfc1tlui",...

Merge changes from topics "cherrypick-selfrevokemultiuser-emqfc1tlui", "cherrypick-selfrevokerenameself-lcm1yyzp8i", "presubmit-am-8a6e07e400554464bf71e06db20e4f32", "presubmit-am-d66e407983c84f0f90928a76de0d3ef2" into tm-dev

* changes:
  Rename revokeOwnPermissionsOnKill to revokeSelfPermissionsOnKill
  Self-revocation: Call PermissionControllerManager directly from Context
  Synchronously revoke permissions on OTP session end when kill delay is 0
  Do not leak whether package exists in revokeOwnPermissionsOnKill
parents 1b7b191b c418be38
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -9736,8 +9736,8 @@ package android.content {
    method @Nullable public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler, int);
    method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void removeStickyBroadcast(@RequiresPermission android.content.Intent);
    method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void removeStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);
    method public void revokeOwnPermissionOnKill(@NonNull String);
    method public void revokeOwnPermissionsOnKill(@NonNull java.util.Collection<java.lang.String>);
    method public void revokeSelfPermissionOnKill(@NonNull String);
    method public void revokeSelfPermissionsOnKill(@NonNull java.util.Collection<java.lang.String>);
    method public abstract void revokeUriPermission(android.net.Uri, int);
    method public abstract void revokeUriPermission(String, android.net.Uri, int);
    method public abstract void sendBroadcast(@RequiresPermission android.content.Intent);
+1 −1
Original line number Diff line number Diff line
@@ -10049,9 +10049,9 @@ package android.permission {
    method @BinderThread public void onOneTimePermissionSessionTimeout(@NonNull String);
    method @Deprecated @BinderThread public void onRestoreDelayedRuntimePermissionsBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.function.Consumer<java.lang.Boolean>);
    method @Deprecated @BinderThread public void onRestoreRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.InputStream, @NonNull Runnable);
    method @BinderThread public void onRevokeOwnPermissionsOnKill(@NonNull String, @NonNull java.util.List<java.lang.String>, @NonNull Runnable);
    method @BinderThread public abstract void onRevokeRuntimePermission(@NonNull String, @NonNull String, @NonNull Runnable);
    method @BinderThread public abstract void onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull String, @NonNull java.util.function.Consumer<java.util.Map<java.lang.String,java.util.List<java.lang.String>>>);
    method @BinderThread public void onRevokeSelfPermissionsOnKill(@NonNull String, @NonNull java.util.List<java.lang.String>, @NonNull Runnable);
    method @Deprecated @BinderThread public abstract void onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String, @NonNull String, @NonNull String, int, @NonNull java.util.function.Consumer<java.lang.Boolean>);
    method @BinderThread public void onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String, @NonNull android.permission.AdminPermissionControlParams, @NonNull java.util.function.Consumer<java.lang.Boolean>);
    method @BinderThread public void onStageAndApplyRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.InputStream, @NonNull Runnable);
+4 −2
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ import android.os.Trace;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.storage.StorageManager;
import android.permission.PermissionControllerManager;
import android.permission.PermissionManager;
import android.system.ErrnoException;
import android.system.Os;
@@ -2180,8 +2181,9 @@ class ContextImpl extends Context {
    }

    @Override
    public void revokeOwnPermissionsOnKill(@NonNull Collection<String> permissions) {
        getSystemService(PermissionManager.class).revokeOwnPermissionsOnKill(permissions);
    public void revokeSelfPermissionsOnKill(@NonNull Collection<String> permissions) {
        getSystemService(PermissionControllerManager.class).revokeSelfPermissionsOnKill(
                getPackageName(), new ArrayList<String>(permissions));
    }

    @Override
+11 −10
Original line number Diff line number Diff line
@@ -6508,22 +6508,22 @@ public abstract class Context {


    /**
     * Triggers the asynchronous revocation of a permission.
     * Triggers the asynchronous revocation of a runtime permission. If the permission is not
     * currently granted, nothing happens (even if later granted by the user).
     *
     * @param permName The name of the permission to be revoked.
     * @see #revokeOwnPermissionsOnKill(Collection)
     * @see #revokeSelfPermissionsOnKill(Collection)
     * @throws IllegalArgumentException if the permission is not a runtime permission
     */
    public void revokeOwnPermissionOnKill(@NonNull String permName) {
        revokeOwnPermissionsOnKill(Collections.singletonList(permName));
    public void revokeSelfPermissionOnKill(@NonNull String permName) {
        revokeSelfPermissionsOnKill(Collections.singletonList(permName));
    }

    /**
     * Triggers the revocation of one or more permissions for the calling package. A package is only
     * able to revoke a permission under the following conditions:
     * <ul>
     * <li>Each permission in {@code permissions} must be granted to the calling package.
     * <li>Each permission in {@code permissions} must be a runtime permission.
     * </ul>
     * able to revoke runtime permissions. If a permission is not currently granted, it is ignored
     * and will not get revoked (even if later granted by the user). Ultimately, you should never
     * make assumptions about a permission status as users may grant or revoke them at any time.
     * <p>
     * Background permissions which have no corresponding foreground permission still granted once
     * the revocation is effective will also be revoked.
@@ -6549,8 +6549,9 @@ public abstract class Context {
     * @param permissions Collection of permissions to be revoked.
     * @see PackageManager#getGroupOfPlatformPermission(String, Executor, Consumer)
     * @see PackageManager#getPlatformPermissionsForGroup(String, Executor, Consumer)
     * @throws IllegalArgumentException if any of the permissions is not a runtime permission
     */
    public void revokeOwnPermissionsOnKill(@NonNull Collection<String> permissions) {
    public void revokeSelfPermissionsOnKill(@NonNull Collection<String> permissions) {
        throw new AbstractMethodError("Must be overridden in implementing class");
    }

+2 −2
Original line number Diff line number Diff line
@@ -1036,8 +1036,8 @@ public class ContextWrapper extends Context {
    }

    @Override
    public void revokeOwnPermissionsOnKill(@NonNull Collection<String> permissions) {
        mBase.revokeOwnPermissionsOnKill(permissions);
    public void revokeSelfPermissionsOnKill(@NonNull Collection<String> permissions) {
        mBase.revokeSelfPermissionsOnKill(permissions);
    }

    @Override
Loading