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

Commit 62cd2413 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "updateUserSensitive asynchronously"

parents 8819d3b3 27455541
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5708,6 +5708,7 @@ package android.permission {
    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 abstract void onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String, @NonNull String, @NonNull String, int, @NonNull java.util.function.Consumer<java.lang.Boolean>);
    method @BinderThread public void onUpdateUserSensitive();
    field public static final String SERVICE_INTERFACE = "android.permission.PermissionControllerService";
  }
+1 −0
Original line number Diff line number Diff line
@@ -42,4 +42,5 @@ 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);
}
+12 −0
Original line number Diff line number Diff line
@@ -599,4 +599,16 @@ public final class PermissionControllerManager {
            }
        }, executor);
    }

    /**
     * @see PermissionControllerService#onUpdateUserSensitive()
     * @hide
     */
    public void updateUserSensitive() {
        mRemoteService.postAsync(service -> {
            AndroidFuture<Void> future = new AndroidFuture<>();
            service.updateUserSensitive(future);
            return future;
        });
    }
}
+20 −0
Original line number Diff line number Diff line
@@ -189,6 +189,18 @@ public abstract class PermissionControllerService extends Service {
    @BinderThread
    public abstract void onGrantOrUpgradeDefaultRuntimePermissions(@NonNull Runnable callback);

    /**
     * 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.
     */
    @BinderThread
    public void onUpdateUserSensitive() {
        throw new AbstractMethodError("Must be overridden in implementing class");
    }

    /**
     * Set the runtime permission state from a device admin.
     *
@@ -380,6 +392,14 @@ public abstract class PermissionControllerService extends Service {

                onGrantOrUpgradeDefaultRuntimePermissions(() -> callback.complete(true));
            }

            @Override
            public void updateUserSensitive(AndroidFuture callback) {
                Preconditions.checkNotNull(callback, "callback cannot be null");

                onUpdateUserSensitive();
                callback.complete(null);
            }
        };
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -65,8 +65,8 @@ import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.pm.permission.PermissionManagerServiceInternal;

import com.android.server.policy.PermissionPolicyInternal.OnInitializedCallback;

import java.util.ArrayList;
import java.util.concurrent.CountDownLatch;

@@ -309,6 +309,8 @@ public final class PermissionPolicyService extends SystemService {
                /* ignore */
            }

            permissionControllerManager.updateUserSensitive();

            packageManagerInternal.setRuntimePermissionsFingerPrint(Build.FINGERPRINT, userId);
        }
    }