create systemApi checkPermissionForStartDataDelivery in PermissionManager
This allows us to check attribution for started ops in tests, and support starting in system apps Test: atest CameraMicIndicatorsPermissionTest Bug: 212434116 Change-Id: Iacdf1d339588cd680c20b3fb55ada9cedb2e70b0
This commit is contained in:
@@ -9576,6 +9576,8 @@ package android.permission {
|
||||
method public int checkPermissionForDataDelivery(@NonNull String, @NonNull android.content.AttributionSource, @Nullable String);
|
||||
method public int checkPermissionForDataDeliveryFromDataSource(@NonNull String, @NonNull android.content.AttributionSource, @Nullable String);
|
||||
method public int checkPermissionForPreflight(@NonNull String, @NonNull android.content.AttributionSource);
|
||||
method public int checkPermissionForStartDataDelivery(@NonNull String, @NonNull android.content.AttributionSource, @Nullable String);
|
||||
method public void finishDataDelivery(@NonNull String, @NonNull android.content.AttributionSource);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public java.util.Set<java.lang.String> getAutoRevokeExemptionGrantedPackages();
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public java.util.Set<java.lang.String> getAutoRevokeExemptionRequestedPackages();
|
||||
method @IntRange(from=0) @RequiresPermission(anyOf={android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY, android.Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS}) public int getRuntimePermissionsVersion();
|
||||
|
||||
@@ -33,6 +33,7 @@ import android.annotation.UserIdInt;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityThread;
|
||||
import android.app.AppGlobals;
|
||||
import android.app.AppOpsManager;
|
||||
import android.app.IActivityManager;
|
||||
import android.app.PropertyInvalidatedCache;
|
||||
import android.compat.annotation.ChangeId;
|
||||
@@ -237,6 +238,41 @@ public final class PermissionManager {
|
||||
PermissionChecker.PID_UNKNOWN, attributionSource, message);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Similar to checkPermissionForDataDelivery, except it results in an app op start, rather than
|
||||
* a note. If this method is used, then {@link #finishDataDelivery(String, AttributionSource)}
|
||||
* must be used when access is finished.
|
||||
*
|
||||
* @param permission The permission to check.
|
||||
* @param attributionSource the permission identity
|
||||
* @param message A message describing the reason the permission was checked
|
||||
* @return The permission check result which is either {@link #PERMISSION_GRANTED}
|
||||
* or {@link #PERMISSION_SOFT_DENIED} or {@link #PERMISSION_HARD_DENIED}.
|
||||
*
|
||||
* @see #checkPermissionForDataDelivery(String, AttributionSource, String)
|
||||
*/
|
||||
@PermissionCheckerManager.PermissionResult
|
||||
public int checkPermissionForStartDataDelivery(@NonNull String permission,
|
||||
@NonNull AttributionSource attributionSource, @Nullable String message) {
|
||||
return PermissionChecker.checkPermissionForDataDelivery(mContext, permission,
|
||||
// FIXME(b/199526514): PID should be passed inside AttributionSource.
|
||||
PermissionChecker.PID_UNKNOWN, attributionSource, message, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicate that usage has finished for an {@link AttributionSource} started with
|
||||
* {@link #checkPermissionForStartDataDelivery(String, AttributionSource, String)}
|
||||
*
|
||||
* @param permission The permission to check.
|
||||
* @param attributionSource the permission identity to finish
|
||||
*/
|
||||
public void finishDataDelivery(@NonNull String permission,
|
||||
@NonNull AttributionSource attributionSource) {
|
||||
PermissionChecker.finishDataDelivery(mContext, AppOpsManager.permissionToOp(permission),
|
||||
attributionSource);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a given data access chain described by the given {@link AttributionSource}
|
||||
* has a given permission. Call this method if you are the datasource which would not blame you
|
||||
|
||||
Reference in New Issue
Block a user