Introduce API to get CDM profile permissions description string

Bug: 165951651
Test: presubmit
Change-Id: Ic59f7a70f0a1b8b53510fc313e0e3e2155cd3b31
This commit is contained in:
Eugene Susla
2021-01-06 11:18:05 -08:00
parent 65144f2e3d
commit 2959fa471a
3 changed files with 40 additions and 0 deletions

View File

@@ -8409,6 +8409,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);

View File

@@ -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);
}

View File

@@ -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);
}
}
};
}
}