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

Commit b0de403a authored by Eugene Susla's avatar Eugene Susla Committed by Android (Google) Code Review
Browse files

Merge "Introduce API to get CDM profile permissions description string"

parents 4d8a62ea 2959fa47
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8358,6 +8358,7 @@ package android.permission {
  public abstract class PermissionControllerService extends android.app.Service {
    ctor public PermissionControllerService();
    method @NonNull @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public String getPrivilegesDescriptionStringForProfile(@NonNull String);
    method @BinderThread public void onApplyStagedRuntimePermissionBackup(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.function.Consumer<java.lang.Boolean>);
    method @NonNull public final android.os.IBinder onBind(android.content.Intent);
    method @BinderThread public abstract void onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int, @NonNull java.util.function.IntConsumer);
+3 −0
Original line number Diff line number Diff line
@@ -44,4 +44,7 @@ oneway interface IPermissionController {
    void grantOrUpgradeDefaultRuntimePermissions(in AndroidFuture callback);
    void notifyOneTimePermissionSessionTimeout(String packageName);
    void updateUserSensitiveForApp(int uid, in AndroidFuture callback);
    void getPrivilegesDescriptionStringForProfile(
            in String deviceProfileName,
            in AndroidFuture<String> callback);
}
+36 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import static com.android.internal.util.Preconditions.checkStringNotEmpty;
import android.Manifest;
import android.annotation.BinderThread;
import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.app.Service;
import android.app.admin.DevicePolicyManager.PermissionGrantState;
@@ -61,6 +62,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
@@ -283,6 +285,22 @@ public abstract class PermissionControllerService extends Service {
        throw new AbstractMethodError("Must be overridden in implementing class");
    }

    /**
     * Get a user-readable sentence, describing the set of privileges that are to be granted to a
     * companion app managing a device of the given profile.
     *
     * @param deviceProfileName the
     *      {@link android.companion.AssociationRequest.DeviceProfile device profile} name
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(Manifest.permission.MANAGE_COMPANION_DEVICES)
    @NonNull
    public String getPrivilegesDescriptionStringForProfile(@NonNull String deviceProfileName) {
        throw new AbstractMethodError("Must be overridden in implementing class");
    }

    @Override
    public final @NonNull IBinder onBind(Intent intent) {
        return new IPermissionController.Stub() {
@@ -517,6 +535,24 @@ public abstract class PermissionControllerService extends Service {

                PermissionControllerService.this.dump(fd, writer, args);
            }

            @Override
            public void getPrivilegesDescriptionStringForProfile(
                    @NonNull String deviceProfileName,
                    @NonNull AndroidFuture<String> callback) {
                checkStringNotEmpty(deviceProfileName);
                Objects.requireNonNull(callback);

                enforceSomePermissionsGrantedToCaller(Manifest.permission.MANAGE_COMPANION_DEVICES);

                try {
                    callback.complete(PermissionControllerService
                            .this
                            .getPrivilegesDescriptionStringForProfile(deviceProfileName));
                } catch (Throwable t) {
                    callback.completeExceptionally(t);
                }
            }
        };
    }
}