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

Commit 4af8d824 authored by Felipe Leme's avatar Felipe Leme Committed by Android (Google) Code Review
Browse files

Merge "New device policy API: UnsafeStateException.getReason()." into sc-dev

parents 2cfefc69 9707b617
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -7314,6 +7314,7 @@ package android.app.admin {
    field public static final int RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT = 2; // 0x2
    field public static final int RESET_PASSWORD_REQUIRE_ENTRY = 1; // 0x1
    field public static final int SKIP_SETUP_WIZARD = 1; // 0x1
    field public static final int UNSAFE_OPERATION_REASON_DRIVING_DISTRACTION = 1; // 0x1
    field public static final int WIPE_EUICC = 4; // 0x4
    field public static final int WIPE_EXTERNAL_STORAGE = 1; // 0x1
    field public static final int WIPE_RESET_PROTECTION_DATA = 2; // 0x2
@@ -7467,6 +7468,7 @@ package android.app.admin {
  public final class UnsafeStateException extends java.lang.IllegalStateException implements android.os.Parcelable {
    method public int describeContents();
    method public int getReason();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.UnsafeStateException> CREATOR;
  }
+4 −1
Original line number Diff line number Diff line
@@ -389,7 +389,8 @@ package android.app.admin {
    method public boolean isFactoryResetProtectionPolicySupported();
    method @NonNull public static String operationToString(int);
    method @RequiresPermission("android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS") public void provisionFullyManagedDevice(@NonNull android.app.admin.FullyManagedDeviceProvisioningParams) throws android.app.admin.ProvisioningException;
    method @RequiresPermission("android.permission.MANAGE_DEVICE_ADMINS") public void setNextOperationSafety(int, boolean);
    method @RequiresPermission("android.permission.MANAGE_DEVICE_ADMINS") public void setNextOperationSafety(int, int);
    method @NonNull public static String unsafeOperationReasonToString(int);
    field public static final String ACTION_DATA_SHARING_RESTRICTION_APPLIED = "android.app.action.DATA_SHARING_RESTRICTION_APPLIED";
    field public static final String ACTION_MANAGED_PROFILE_CREATED = "android.app.action.MANAGED_PROFILE_CREATED";
    field public static final String ACTION_PROVISIONED_MANAGED_DEVICE = "android.app.action.PROVISIONED_MANAGED_DEVICE";
@@ -456,6 +457,7 @@ package android.app.admin {
    field public static final int PROVISIONING_RESULT_SETTING_PROFILE_OWNER_FAILED = 4; // 0x4
    field public static final int PROVISIONING_RESULT_SET_DEVICE_OWNER_FAILED = 7; // 0x7
    field public static final int PROVISIONING_RESULT_STARTING_PROFILE_FAILED = 5; // 0x5
    field public static final int UNSAFE_OPERATION_REASON_NONE = -1; // 0xffffffff
  }

  public final class FullyManagedDeviceProvisioningParams implements android.os.Parcelable {
@@ -512,6 +514,7 @@ package android.app.admin {
  }

  public final class UnsafeStateException extends java.lang.IllegalStateException implements android.os.Parcelable {
    ctor public UnsafeStateException(int, int);
    method public int getOperation();
  }

+32 −2
Original line number Diff line number Diff line
@@ -2905,6 +2905,35 @@ public class DevicePolicyManager {
        return DebugUtils.constantToString(DevicePolicyManager.class, PREFIX_OPERATION, operation);
    }
    private static final String PREFIX_UNSAFE_OPERATION_REASON = "UNSAFE_OPERATION_REASON_";
    /** @hide */
    @IntDef(prefix = PREFIX_UNSAFE_OPERATION_REASON, value = {
            UNSAFE_OPERATION_REASON_NONE,
            UNSAFE_OPERATION_REASON_DRIVING_DISTRACTION
    })
    @Retention(RetentionPolicy.SOURCE)
    public static @interface UnsafeOperationReason {
    }
    /** @hide */
    @TestApi
    public static final int UNSAFE_OPERATION_REASON_NONE = -1;
    /**
     * Indicates that a {@link UnsafeStateException} was thrown because the operation would distract
     * the driver of the vehicle.
     */
    public static final int UNSAFE_OPERATION_REASON_DRIVING_DISTRACTION = 1;
    /** @hide */
    @NonNull
    @TestApi
    public static String unsafeOperationReasonToString(@UnsafeOperationReason int reason) {
        return DebugUtils.constantToString(DevicePolicyManager.class,
                PREFIX_UNSAFE_OPERATION_REASON, reason);
    }
    /** @hide */
    public void resetNewUserDisclaimer() {
        if (mService != null) {
@@ -13098,10 +13127,11 @@ public class DevicePolicyManager {
     */
    @TestApi
    @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_ADMINS)
    public void setNextOperationSafety(@DevicePolicyOperation int operation, boolean safe) {
    public void setNextOperationSafety(@DevicePolicyOperation int operation,
            @UnsafeOperationReason int reason) {
        if (mService != null) {
            try {
                mService.setNextOperationSafety(operation, safe);
                mService.setNextOperationSafety(operation, reason);
            } catch (RemoteException re) {
                throw re.rethrowFromSystemServer();
            }
+6 −3
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package android.app.admin;

import android.annotation.NonNull;
import android.app.admin.DevicePolicyManager.DevicePolicyOperation;
import android.app.admin.DevicePolicyManager.UnsafeOperationReason;

import com.android.internal.os.IResultReceiver;

@@ -30,14 +31,16 @@ public interface DevicePolicySafetyChecker {
    /**
     * Returns whether the given {@code operation} can be safely executed at the moment.
     */
    boolean isDevicePolicyOperationSafe(@DevicePolicyOperation int operation);
    @UnsafeOperationReason
    int getUnsafeOperationReason(@DevicePolicyOperation int operation);

    /**
     * Returns a new exception for when the given {@code operation} cannot be safely executed.
     */
    @NonNull
    default UnsafeStateException newUnsafeStateException(@DevicePolicyOperation int operation) {
        return new UnsafeStateException(operation);
    default UnsafeStateException newUnsafeStateException(@DevicePolicyOperation int operation,
            @UnsafeOperationReason int reason) {
        return new UnsafeStateException(operation, reason);
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -491,7 +491,7 @@ interface IDevicePolicyManager {
    void setManagedProfileMaximumTimeOff(in ComponentName admin, long timeoutMs);
    boolean canProfileOwnerResetPasswordWhenLocked(int userId);

    void setNextOperationSafety(int operation, boolean safe);
    void setNextOperationSafety(int operation, int reason);

    String getEnrollmentSpecificId(String callerPackage);
    void setOrganizationIdForUser(in String callerPackage, in String enterpriseId, int userId);
Loading