diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 2c29343a00e04..2c0e6416b4556 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -1075,7 +1075,7 @@ package android.app.admin { } public class DevicePolicyManager { - method @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public int checkProvisioningPreCondition(@NonNull String, @NonNull String); + method @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public int checkProvisioningPrecondition(@NonNull String, @NonNull String); method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public android.os.UserHandle createAndProvisionManagedProfile(@NonNull android.app.admin.ManagedProfileProvisioningParams) throws android.app.admin.ProvisioningException; method @Nullable public android.content.Intent createProvisioningIntentFromNfcIntent(@NonNull android.content.Intent); method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public boolean getBluetoothContactSharingDisabled(@NonNull android.os.UserHandle); @@ -1128,21 +1128,6 @@ package android.app.admin { field public static final String ACTION_SET_PROFILE_OWNER = "android.app.action.SET_PROFILE_OWNER"; field @Deprecated public static final String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE"; field @RequiresPermission(android.Manifest.permission.LAUNCH_DEVICE_MANAGER_SETUP) public static final String ACTION_UPDATE_DEVICE_MANAGEMENT_ROLE_HOLDER = "android.app.action.UPDATE_DEVICE_MANAGEMENT_ROLE_HOLDER"; - field public static final int CODE_ACCOUNTS_NOT_EMPTY = 6; // 0x6 - field public static final int CODE_CANNOT_ADD_MANAGED_PROFILE = 11; // 0xb - field public static final int CODE_DEVICE_ADMIN_NOT_SUPPORTED = 13; // 0xd - field public static final int CODE_HAS_DEVICE_OWNER = 1; // 0x1 - field public static final int CODE_HAS_PAIRED = 8; // 0x8 - field public static final int CODE_MANAGED_USERS_NOT_SUPPORTED = 9; // 0x9 - field public static final int CODE_NONSYSTEM_USER_EXISTS = 5; // 0x5 - field public static final int CODE_NOT_SYSTEM_USER = 7; // 0x7 - field public static final int CODE_OK = 0; // 0x0 - field public static final int CODE_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS = 15; // 0xf - field public static final int CODE_SYSTEM_USER = 10; // 0xa - field public static final int CODE_UNKNOWN_ERROR = -1; // 0xffffffff - field public static final int CODE_USER_HAS_PROFILE_OWNER = 2; // 0x2 - field public static final int CODE_USER_NOT_RUNNING = 3; // 0x3 - field public static final int CODE_USER_SETUP_COMPLETED = 4; // 0x4 field public static final String EXTRA_FORCE_UPDATE_ROLE_HOLDER = "android.app.extra.FORCE_UPDATE_ROLE_HOLDER"; field public static final String EXTRA_LOST_MODE_LOCATION = "android.app.extra.LOST_MODE_LOCATION"; field public static final String EXTRA_PROFILE_OWNER_NAME = "android.app.extra.PROFILE_OWNER_NAME"; @@ -1185,6 +1170,21 @@ package android.app.admin { field public static final int STATE_USER_SETUP_FINALIZED = 3; // 0x3 field public static final int STATE_USER_SETUP_INCOMPLETE = 1; // 0x1 field public static final int STATE_USER_UNMANAGED = 0; // 0x0 + field public static final int STATUS_ACCOUNTS_NOT_EMPTY = 6; // 0x6 + field public static final int STATUS_CANNOT_ADD_MANAGED_PROFILE = 11; // 0xb + field public static final int STATUS_DEVICE_ADMIN_NOT_SUPPORTED = 13; // 0xd + field public static final int STATUS_HAS_DEVICE_OWNER = 1; // 0x1 + field public static final int STATUS_HAS_PAIRED = 8; // 0x8 + field public static final int STATUS_MANAGED_USERS_NOT_SUPPORTED = 9; // 0x9 + field public static final int STATUS_NONSYSTEM_USER_EXISTS = 5; // 0x5 + field public static final int STATUS_NOT_SYSTEM_USER = 7; // 0x7 + field public static final int STATUS_OK = 0; // 0x0 + field public static final int STATUS_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS = 15; // 0xf + field public static final int STATUS_SYSTEM_USER = 10; // 0xa + field public static final int STATUS_UNKNOWN_ERROR = -1; // 0xffffffff + field public static final int STATUS_USER_HAS_PROFILE_OWNER = 2; // 0x2 + field public static final int STATUS_USER_NOT_RUNNING = 3; // 0x3 + field public static final int STATUS_USER_SETUP_COMPLETED = 4; // 0x4 } public static final class DevicePolicyResources.Strings { diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 29b8248dc8f27..9757b2ff318f9 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -525,7 +525,6 @@ package android.app.admin { method @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_ADMINS) public void setNextOperationSafety(int, int); field public static final String ACTION_DATA_SHARING_RESTRICTION_APPLIED = "android.app.action.DATA_SHARING_RESTRICTION_APPLIED"; field public static final String ACTION_DEVICE_POLICY_CONSTANTS_CHANGED = "android.app.action.DEVICE_POLICY_CONSTANTS_CHANGED"; - field @Deprecated public static final int CODE_SPLIT_SYSTEM_USER_DEVICE_SYSTEM_USER = 14; // 0xe field public static final int DEVICE_OWNER_TYPE_DEFAULT = 0; // 0x0 field public static final int DEVICE_OWNER_TYPE_FINANCED = 1; // 0x1 field public static final int OPERATION_CLEAR_APPLICATION_USER_DATA = 23; // 0x17 @@ -569,6 +568,7 @@ package android.app.admin { field public static final int OPERATION_SWITCH_USER = 2; // 0x2 field public static final int OPERATION_UNINSTALL_CA_CERT = 40; // 0x28 field public static final int OPERATION_WIPE_DATA = 8; // 0x8 + field @Deprecated public static final int STATUS_SPLIT_SYSTEM_USER_DEVICE_SYSTEM_USER = 14; // 0xe } public static final class SecurityLog.SecurityEvent implements android.os.Parcelable { diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 9a7093ec18061..753df3d66b3a2 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -2523,7 +2523,7 @@ public class DevicePolicyManager { public @interface UserProvisioningState {} /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Unknown error code returned for {@link #ACTION_PROVISION_MANAGED_DEVICE}, * {@link #ACTION_PROVISION_MANAGED_PROFILE} and {@link #ACTION_PROVISION_MANAGED_USER}. @@ -2531,10 +2531,10 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_UNKNOWN_ERROR = -1; + public static final int STATUS_UNKNOWN_ERROR = -1; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_DEVICE}, * {@link #ACTION_PROVISION_MANAGED_PROFILE} and {@link #ACTION_PROVISION_MANAGED_USER} @@ -2543,10 +2543,10 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_OK = 0; + public static final int STATUS_OK = 0; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_DEVICE} when the device already has a * device owner. @@ -2554,10 +2554,10 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_HAS_DEVICE_OWNER = 1; + public static final int STATUS_HAS_DEVICE_OWNER = 1; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_DEVICE} when the user has a profile owner * and for {@link #ACTION_PROVISION_MANAGED_PROFILE} when the profile owner is already set. @@ -2565,20 +2565,20 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_USER_HAS_PROFILE_OWNER = 2; + public static final int STATUS_USER_HAS_PROFILE_OWNER = 2; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_DEVICE} when the user isn't running. * * @hide */ @SystemApi - public static final int CODE_USER_NOT_RUNNING = 3; + public static final int STATUS_USER_NOT_RUNNING = 3; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_DEVICE} if the device has already been * setup and for {@link #ACTION_PROVISION_MANAGED_USER} if the user has already been setup. @@ -2586,7 +2586,7 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_USER_SETUP_COMPLETED = 4; + public static final int STATUS_USER_SETUP_COMPLETED = 4; /** * Code used to indicate that the device also has a user other than the system user. @@ -2594,7 +2594,7 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_NONSYSTEM_USER_EXISTS = 5; + public static final int STATUS_NONSYSTEM_USER_EXISTS = 5; /** * Code used to indicate that device has an account that prevents provisioning. @@ -2602,20 +2602,20 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_ACCOUNTS_NOT_EMPTY = 6; + public static final int STATUS_ACCOUNTS_NOT_EMPTY = 6; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_DEVICE} if the user is not a system user. * * @hide */ @SystemApi - public static final int CODE_NOT_SYSTEM_USER = 7; + public static final int STATUS_NOT_SYSTEM_USER = 7; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_DEVICE} and * {@link #ACTION_PROVISION_MANAGED_USER} when the device is a watch and is already paired. @@ -2623,10 +2623,10 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_HAS_PAIRED = 8; + public static final int STATUS_HAS_PAIRED = 8; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_PROFILE} and * {@link #ACTION_PROVISION_MANAGED_USER} on devices which do not support managed users. @@ -2635,10 +2635,10 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_MANAGED_USERS_NOT_SUPPORTED = 9; + public static final int STATUS_MANAGED_USERS_NOT_SUPPORTED = 9; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_USER} if the user is a system user and * for {@link #ACTION_PROVISION_MANAGED_DEVICE} on devices running headless system user mode @@ -2647,10 +2647,10 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_SYSTEM_USER = 10; + public static final int STATUS_SYSTEM_USER = 10; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_PROFILE} when the user cannot have more * managed profiles. @@ -2658,19 +2658,10 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_CANNOT_ADD_MANAGED_PROFILE = 11; + public static final int STATUS_CANNOT_ADD_MANAGED_PROFILE = 11; /** - * TODO (b/137101239): clean up split system user codes - * - * @hide - * @deprecated not used anymore but can't be removed since it's a @TestApi. - **/ - @Deprecated - public static final int CODE_NOT_SYSTEM_USER_SPLIT = 12; - - /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_DEVICE}, * {@link #ACTION_PROVISION_MANAGED_PROFILE} on devices which do not support device @@ -2679,21 +2670,21 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_DEVICE_ADMIN_NOT_SUPPORTED = 13; + public static final int STATUS_DEVICE_ADMIN_NOT_SUPPORTED = 13; /** * TODO (b/137101239): clean up split system user codes - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * * @hide * @deprecated not used anymore but can't be removed since it's a @TestApi. */ @Deprecated @TestApi - public static final int CODE_SPLIT_SYSTEM_USER_DEVICE_SYSTEM_USER = 14; + public static final int STATUS_SPLIT_SYSTEM_USER_DEVICE_SYSTEM_USER = 14; /** - * Result code for {@link #checkProvisioningPreCondition}. + * Result code for {@link #checkProvisioningPrecondition}. * *

Returned for {@link #ACTION_PROVISION_MANAGED_DEVICE} and * {@link #ACTION_PROVISION_MANAGED_PROFILE} on devices which do not support provisioning. @@ -2701,24 +2692,24 @@ public class DevicePolicyManager { * @hide */ @SystemApi - public static final int CODE_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS = 15; + public static final int STATUS_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS = 15; /** - * Result codes for {@link #checkProvisioningPreCondition} indicating all the provisioning pre + * Result codes for {@link #checkProvisioningPrecondition} indicating all the provisioning pre * conditions. * * @hide */ @Retention(RetentionPolicy.SOURCE) - @IntDef(prefix = { "CODE_" }, value = { - CODE_UNKNOWN_ERROR, CODE_OK, CODE_HAS_DEVICE_OWNER, CODE_USER_HAS_PROFILE_OWNER, - CODE_USER_NOT_RUNNING, CODE_USER_SETUP_COMPLETED, CODE_NOT_SYSTEM_USER, CODE_HAS_PAIRED, - CODE_MANAGED_USERS_NOT_SUPPORTED, CODE_SYSTEM_USER, CODE_CANNOT_ADD_MANAGED_PROFILE, - CODE_NOT_SYSTEM_USER_SPLIT, CODE_DEVICE_ADMIN_NOT_SUPPORTED, - CODE_SPLIT_SYSTEM_USER_DEVICE_SYSTEM_USER, - CODE_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS + @IntDef(prefix = { "STATUS_" }, value = { + STATUS_UNKNOWN_ERROR, STATUS_OK, STATUS_HAS_DEVICE_OWNER, STATUS_USER_HAS_PROFILE_OWNER, + STATUS_USER_NOT_RUNNING, STATUS_USER_SETUP_COMPLETED, STATUS_NOT_SYSTEM_USER, + STATUS_HAS_PAIRED, STATUS_MANAGED_USERS_NOT_SUPPORTED, STATUS_SYSTEM_USER, + STATUS_CANNOT_ADD_MANAGED_PROFILE, STATUS_DEVICE_ADMIN_NOT_SUPPORTED, + STATUS_SPLIT_SYSTEM_USER_DEVICE_SYSTEM_USER, + STATUS_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS }) - public @interface ProvisioningPreCondition {} + public @interface ProvisioningPrecondition {} /** * Disable all configurable SystemUI features during LockTask mode. This includes, @@ -11996,15 +11987,16 @@ public class DevicePolicyManager { * {@link #ACTION_PROVISION_MANAGED_PROFILE} * @param packageName The package of the component that would be set as device, user, or profile * owner. - * @return A {@link ProvisioningPreCondition} value indicating whether provisioning is allowed. + * @return An int constant value indicating whether provisioning is allowed. * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) - public @ProvisioningPreCondition int checkProvisioningPreCondition( + @ProvisioningPrecondition + public int checkProvisioningPrecondition( @NonNull String action, @NonNull String packageName) { try { - return mService.checkProvisioningPreCondition(action, packageName); + return mService.checkProvisioningPrecondition(action, packageName); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } @@ -14689,7 +14681,7 @@ public class DevicePolicyManager { * {@link ManagedProfileProvisioningParams#getProfileAdminComponentName()} as the profile * owner. * - *

The method {@link #checkProvisioningPreCondition} must be returning {@link #CODE_OK} + *

The method {@link #checkProvisioningPrecondition} must be returning {@link #STATUS_OK} * before calling this method. * * @param provisioningParams Params required to provision a managed profile, @@ -14733,7 +14725,7 @@ public class DevicePolicyManager { * Provisions a managed device and sets the {@code deviceAdminComponentName} as the device * owner. * - *

The method {@link #checkProvisioningPreCondition} must be returning {@link #CODE_OK} + *

The method {@link #checkProvisioningPrecondition} must be returning {@link #STATUS_OK} * before calling this method. * * @param provisioningParams Params required to provision a fully managed device, diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl index 0b9d51f0bdda3..9d28ddefda7b2 100644 --- a/core/java/android/app/admin/IDevicePolicyManager.aidl +++ b/core/java/android/app/admin/IDevicePolicyManager.aidl @@ -373,7 +373,7 @@ interface IDevicePolicyManager { String permission, int grantState, in RemoteCallback resultReceiver); int getPermissionGrantState(in ComponentName admin, in String callerPackage, String packageName, String permission); boolean isProvisioningAllowed(String action, String packageName); - int checkProvisioningPreCondition(String action, String packageName); + int checkProvisioningPrecondition(String action, String packageName); void setKeepUninstalledPackages(in ComponentName admin, in String callerPackage, in List packageList); List getKeepUninstalledPackages(in ComponentName admin, in String callerPackage); boolean isManagedProfile(in ComponentName admin); diff --git a/core/java/android/app/admin/ProvisioningException.java b/core/java/android/app/admin/ProvisioningException.java index 57a2c50165a05..a457b5fa3937b 100644 --- a/core/java/android/app/admin/ProvisioningException.java +++ b/core/java/android/app/admin/ProvisioningException.java @@ -46,7 +46,7 @@ public class ProvisioningException extends AndroidException { /** * Service-specific error code for {@link DevicePolicyManager#provisionFullyManagedDevice} and * {@link DevicePolicyManager#createAndProvisionManagedProfile}: - * Indicates the call to {@link DevicePolicyManager#checkProvisioningPreCondition} returned an + * Indicates the call to {@link DevicePolicyManager#checkProvisioningPrecondition} returned an * error code. */ public static final int ERROR_PRE_CONDITION_FAILED = 1; diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 091d879a1876f..33e97aa5eaf29 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -31,20 +31,6 @@ import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_DEV import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE; import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_USER; import static android.app.admin.DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED; -import static android.app.admin.DevicePolicyManager.CODE_ACCOUNTS_NOT_EMPTY; -import static android.app.admin.DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE; -import static android.app.admin.DevicePolicyManager.CODE_DEVICE_ADMIN_NOT_SUPPORTED; -import static android.app.admin.DevicePolicyManager.CODE_HAS_DEVICE_OWNER; -import static android.app.admin.DevicePolicyManager.CODE_HAS_PAIRED; -import static android.app.admin.DevicePolicyManager.CODE_MANAGED_USERS_NOT_SUPPORTED; -import static android.app.admin.DevicePolicyManager.CODE_NONSYSTEM_USER_EXISTS; -import static android.app.admin.DevicePolicyManager.CODE_NOT_SYSTEM_USER; -import static android.app.admin.DevicePolicyManager.CODE_OK; -import static android.app.admin.DevicePolicyManager.CODE_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS; -import static android.app.admin.DevicePolicyManager.CODE_SYSTEM_USER; -import static android.app.admin.DevicePolicyManager.CODE_USER_HAS_PROFILE_OWNER; -import static android.app.admin.DevicePolicyManager.CODE_USER_NOT_RUNNING; -import static android.app.admin.DevicePolicyManager.CODE_USER_SETUP_COMPLETED; import static android.app.admin.DevicePolicyManager.DELEGATION_APP_RESTRICTIONS; import static android.app.admin.DevicePolicyManager.DELEGATION_BLOCK_UNINSTALL; import static android.app.admin.DevicePolicyManager.DELEGATION_CERT_INSTALL; @@ -101,6 +87,20 @@ import static android.app.admin.DevicePolicyManager.PRIVATE_DNS_SET_ERROR_FAILUR import static android.app.admin.DevicePolicyManager.PRIVATE_DNS_SET_NO_ERROR; import static android.app.admin.DevicePolicyManager.PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER; import static android.app.admin.DevicePolicyManager.STATE_USER_UNMANAGED; +import static android.app.admin.DevicePolicyManager.STATUS_ACCOUNTS_NOT_EMPTY; +import static android.app.admin.DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE; +import static android.app.admin.DevicePolicyManager.STATUS_DEVICE_ADMIN_NOT_SUPPORTED; +import static android.app.admin.DevicePolicyManager.STATUS_HAS_DEVICE_OWNER; +import static android.app.admin.DevicePolicyManager.STATUS_HAS_PAIRED; +import static android.app.admin.DevicePolicyManager.STATUS_MANAGED_USERS_NOT_SUPPORTED; +import static android.app.admin.DevicePolicyManager.STATUS_NONSYSTEM_USER_EXISTS; +import static android.app.admin.DevicePolicyManager.STATUS_NOT_SYSTEM_USER; +import static android.app.admin.DevicePolicyManager.STATUS_OK; +import static android.app.admin.DevicePolicyManager.STATUS_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS; +import static android.app.admin.DevicePolicyManager.STATUS_SYSTEM_USER; +import static android.app.admin.DevicePolicyManager.STATUS_USER_HAS_PROFILE_OWNER; +import static android.app.admin.DevicePolicyManager.STATUS_USER_NOT_RUNNING; +import static android.app.admin.DevicePolicyManager.STATUS_USER_SETUP_COMPLETED; import static android.app.admin.DevicePolicyManager.WIPE_EUICC; import static android.app.admin.DevicePolicyManager.WIPE_EXTERNAL_STORAGE; import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA; @@ -9658,7 +9658,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final int code = checkDeviceOwnerProvisioningPreConditionLocked(owner, /* deviceOwnerUserId= */ deviceOwnerUserId, /* callingUserId*/ caller.getUserId(), isAdb(caller), hasIncompatibleAccountsOrNonAdb); - if (code != CODE_OK) { + if (code != STATUS_OK) { throw new IllegalStateException( computeProvisioningErrorString(code, deviceOwnerUserId)); } @@ -9666,25 +9666,25 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { private static String computeProvisioningErrorString(int code, @UserIdInt int userId) { switch (code) { - case CODE_OK: + case STATUS_OK: return "OK"; - case CODE_HAS_DEVICE_OWNER: + case STATUS_HAS_DEVICE_OWNER: return "Trying to set the device owner, but device owner is already set."; - case CODE_USER_HAS_PROFILE_OWNER: + case STATUS_USER_HAS_PROFILE_OWNER: return "Trying to set the device owner, but the user already has a profile owner."; - case CODE_USER_NOT_RUNNING: + case STATUS_USER_NOT_RUNNING: return "User " + userId + " not running."; - case CODE_NOT_SYSTEM_USER: + case STATUS_NOT_SYSTEM_USER: return "User " + userId + " is not system user."; - case CODE_USER_SETUP_COMPLETED: + case STATUS_USER_SETUP_COMPLETED: return "Cannot set the device owner if the device is already set-up."; - case CODE_NONSYSTEM_USER_EXISTS: + case STATUS_NONSYSTEM_USER_EXISTS: return "Not allowed to set the device owner because there are already several" + " users on the device."; - case CODE_ACCOUNTS_NOT_EMPTY: + case STATUS_ACCOUNTS_NOT_EMPTY: return "Not allowed to set the device owner because there are already some accounts" + " on the device."; - case CODE_HAS_PAIRED: + case STATUS_HAS_PAIRED: return "Not allowed to set the device owner because this device has already " + "paired."; default: @@ -14159,30 +14159,30 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { mInjector.binderRestoreCallingIdentity(ident); } - return checkProvisioningPreConditionSkipPermission(action, packageName) == CODE_OK; + return checkProvisioningPreconditionSkipPermission(action, packageName) == STATUS_OK; } @Override - public int checkProvisioningPreCondition(String action, String packageName) { + public int checkProvisioningPrecondition(String action, String packageName) { Objects.requireNonNull(packageName, "packageName is null"); Preconditions.checkCallAuthorization( hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); - return checkProvisioningPreConditionSkipPermission(action, packageName); + return checkProvisioningPreconditionSkipPermission(action, packageName); } - private int checkProvisioningPreConditionSkipPermission(String action, + private int checkProvisioningPreconditionSkipPermission(String action, String packageName) { if (!mHasFeature) { logMissingFeatureAction("Cannot check provisioning for action " + action); - return CODE_DEVICE_ADMIN_NOT_SUPPORTED; + return STATUS_DEVICE_ADMIN_NOT_SUPPORTED; } if (!isProvisioningAllowed()) { - return CODE_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS; + return STATUS_PROVISIONING_NOT_ALLOWED_FOR_NON_DEVELOPER_USERS; } final int code = checkProvisioningPreConditionSkipPermissionNoLog(action, packageName); - if (code != CODE_OK) { + if (code != STATUS_OK) { Slogf.d(LOG_TAG, "checkProvisioningPreCondition(" + action + ", " + packageName + ") failed: " + computeProvisioningErrorString(code, mInjector.userHandleGetCallingUserId())); @@ -14230,27 +14230,27 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @UserIdInt int deviceOwnerUserId, @UserIdInt int callingUserId, boolean isAdb, boolean hasIncompatibleAccountsOrNonAdb) { if (mOwners.hasDeviceOwner()) { - return CODE_HAS_DEVICE_OWNER; + return STATUS_HAS_DEVICE_OWNER; } if (mOwners.hasProfileOwner(deviceOwnerUserId)) { - return CODE_USER_HAS_PROFILE_OWNER; + return STATUS_USER_HAS_PROFILE_OWNER; } boolean isHeadlessSystemUserMode = mInjector.userManagerIsHeadlessSystemUserMode(); // System user is always running in headless system user mode. if (!isHeadlessSystemUserMode && !mUserManager.isUserRunning(new UserHandle(deviceOwnerUserId))) { - return CODE_USER_NOT_RUNNING; + return STATUS_USER_NOT_RUNNING; } if (mIsWatch && hasPaired(UserHandle.USER_SYSTEM)) { - return CODE_HAS_PAIRED; + return STATUS_HAS_PAIRED; } if (isHeadlessSystemUserMode) { if (deviceOwnerUserId != UserHandle.USER_SYSTEM) { Slogf.e(LOG_TAG, "In headless system user mode, " + "device owner can only be set on headless system user."); - return CODE_NOT_SYSTEM_USER; + return STATUS_NOT_SYSTEM_USER; } } @@ -14265,7 +14265,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { int maxNumberOfExistingUsers = isHeadlessSystemUserMode ? 2 : 1; if (mUserManager.getUserCount() > maxNumberOfExistingUsers) { - return CODE_NONSYSTEM_USER_EXISTS; + return STATUS_NONSYSTEM_USER_EXISTS; } int currentForegroundUser = getCurrentForegroundUserId(); @@ -14274,23 +14274,23 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { && currentForegroundUser == UserHandle.USER_SYSTEM) { Slogf.wtf(LOG_TAG, "In headless system user mode, " + "current user cannot be system user when setting device owner"); - return CODE_SYSTEM_USER; + return STATUS_SYSTEM_USER; } if (hasIncompatibleAccountsOrNonAdb) { - return CODE_ACCOUNTS_NOT_EMPTY; + return STATUS_ACCOUNTS_NOT_EMPTY; } } - return CODE_OK; + return STATUS_OK; } else { // DO has to be user 0 if (deviceOwnerUserId != UserHandle.USER_SYSTEM) { - return CODE_NOT_SYSTEM_USER; + return STATUS_NOT_SYSTEM_USER; } // Only provision DO before setup wizard completes if (hasUserSetupCompleted(UserHandle.USER_SYSTEM)) { - return CODE_USER_SETUP_COMPLETED; + return STATUS_USER_SETUP_COMPLETED; } - return CODE_OK; + return STATUS_OK; } } @@ -14311,11 +14311,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { private int checkManagedProfileProvisioningPreCondition(String packageName, @UserIdInt int callingUserId) { if (!hasFeatureManagedUsers()) { - return CODE_MANAGED_USERS_NOT_SUPPORTED; + return STATUS_MANAGED_USERS_NOT_SUPPORTED; } if (getProfileOwnerAsUser(callingUserId) != null) { // Managed user cannot have a managed profile. - return CODE_USER_HAS_PROFILE_OWNER; + return STATUS_USER_HAS_PROFILE_OWNER; } final long ident = mInjector.binderClearCallingIdentity(); @@ -14334,7 +14334,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { callingUserId); // The check is called from inside a managed profile. A managed profile cannot // be provisioned from within another managed profile. - return CODE_CANNOT_ADD_MANAGED_PROFILE; + return STATUS_CANNOT_ADD_MANAGED_PROFILE; } // If there's a device owner, the restriction on adding a managed profile must be set. @@ -14346,19 +14346,19 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (addingProfileRestricted) { Slogf.i(LOG_TAG, "Adding a profile is restricted: User %s Has device owner? %b", callingUserHandle, hasDeviceOwner); - return CODE_CANNOT_ADD_MANAGED_PROFILE; + return STATUS_CANNOT_ADD_MANAGED_PROFILE; } // Bail out if we are trying to provision a work profile but one already exists. if (!mUserManager.canAddMoreManagedProfiles( callingUserId, /* allowedToRemoveOne= */ false)) { Slogf.i(LOG_TAG, "A work profile already exists."); - return CODE_CANNOT_ADD_MANAGED_PROFILE; + return STATUS_CANNOT_ADD_MANAGED_PROFILE; } } finally { mInjector.binderRestoreCallingIdentity(ident); } - return CODE_OK; + return STATUS_OK; } private void checkIsDeviceOwner(CallerIdentity caller) { @@ -17697,9 +17697,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { UserInfo userInfo = null; final long identity = Binder.clearCallingIdentity(); try { - final int result = checkProvisioningPreConditionSkipPermission( + final int result = checkProvisioningPreconditionSkipPermission( ACTION_PROVISION_MANAGED_PROFILE, admin.getPackageName()); - if (result != CODE_OK) { + if (result != STATUS_OK) { throw new ServiceSpecificException( ERROR_PRE_CONDITION_FAILED, "Provisioning preconditions failed with result: " + result); @@ -18076,9 +18076,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final long identity = Binder.clearCallingIdentity(); try { - int result = checkProvisioningPreConditionSkipPermission( + int result = checkProvisioningPreconditionSkipPermission( ACTION_PROVISION_MANAGED_DEVICE, deviceAdmin.getPackageName()); - if (result != CODE_OK) { + if (result != STATUS_OK) { throw new ServiceSpecificException( ERROR_PRE_CONDITION_FAILED, "Provisioning preconditions failed with result: " + result); diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java index fe110e5398cab..2398e367ebfe4 100644 --- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java @@ -3575,11 +3575,11 @@ public class DevicePolicyManagerTest extends DpmTestBase { setup_DeviceAdminFeatureOff(); mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE, - DevicePolicyManager.CODE_DEVICE_ADMIN_NOT_SUPPORTED); + DevicePolicyManager.STATUS_DEVICE_ADMIN_NOT_SUPPORTED); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE, - DevicePolicyManager.CODE_DEVICE_ADMIN_NOT_SUPPORTED); + DevicePolicyManager.STATUS_DEVICE_ADMIN_NOT_SUPPORTED); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_DEVICE_ADMIN_NOT_SUPPORTED); + DevicePolicyManager.STATUS_DEVICE_ADMIN_NOT_SUPPORTED); } private void setup_ManagedProfileFeatureOff() throws Exception { @@ -3611,11 +3611,11 @@ public class DevicePolicyManagerTest extends DpmTestBase { setup_ManagedProfileFeatureOff(); mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE, - DevicePolicyManager.CODE_OK); + DevicePolicyManager.STATUS_OK); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE, - DevicePolicyManager.CODE_OK); + DevicePolicyManager.STATUS_OK); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_MANAGED_USERS_NOT_SUPPORTED); + DevicePolicyManager.STATUS_MANAGED_USERS_NOT_SUPPORTED); } private void setup_firstBoot_systemUser() throws Exception { @@ -3653,15 +3653,15 @@ public class DevicePolicyManagerTest extends DpmTestBase { when(getServices().userManagerForMock.isHeadlessSystemUserMode()).thenReturn(false); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE, - DevicePolicyManager.CODE_OK); + DevicePolicyManager.STATUS_OK); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE, - DevicePolicyManager.CODE_OK); + DevicePolicyManager.STATUS_OK); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_OK); + DevicePolicyManager.STATUS_OK); when(getServices().userManagerForMock.isHeadlessSystemUserMode()).thenReturn(true); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE, - DevicePolicyManager.CODE_OK); + DevicePolicyManager.STATUS_OK); } private void setup_systemUserSetupComplete_systemUser() throws Exception { @@ -3708,11 +3708,11 @@ public class DevicePolicyManagerTest extends DpmTestBase { setup_systemUserSetupComplete_systemUser(); mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE, - DevicePolicyManager.CODE_USER_SETUP_COMPLETED); + DevicePolicyManager.STATUS_USER_SETUP_COMPLETED); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE, - DevicePolicyManager.CODE_USER_SETUP_COMPLETED); + DevicePolicyManager.STATUS_USER_SETUP_COMPLETED); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_OK); + DevicePolicyManager.STATUS_OK); } @Test @@ -3722,22 +3722,22 @@ public class DevicePolicyManagerTest extends DpmTestBase { mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE, - DevicePolicyManager.CODE_HAS_DEVICE_OWNER); + DevicePolicyManager.STATUS_HAS_DEVICE_OWNER); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE, - DevicePolicyManager.CODE_HAS_DEVICE_OWNER); + DevicePolicyManager.STATUS_HAS_DEVICE_OWNER); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_MANAGED_DEVICE, false); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_FINANCED_DEVICE, false); // COMP mode NOT is allowed. assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, false); // And other DPCs can NOT provision a managed profile. assertCheckProvisioningPreCondition( DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, DpmMockContext.ANOTHER_PACKAGE_NAME, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, false, DpmMockContext.ANOTHER_PACKAGE_NAME, DpmMockContext.ANOTHER_UID); } @@ -3759,13 +3759,13 @@ public class DevicePolicyManagerTest extends DpmTestBase { eq(UserHandle.getUserHandleForUid(mContext.binder.callingUid)))) .thenReturn(UserManager.RESTRICTION_SOURCE_SYSTEM); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, false); assertCheckProvisioningPreCondition( DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, DpmMockContext.ANOTHER_PACKAGE_NAME, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, false, DpmMockContext.ANOTHER_PACKAGE_NAME, DpmMockContext.ANOTHER_UID); } @@ -3794,12 +3794,12 @@ public class DevicePolicyManagerTest extends DpmTestBase { // We can delete the managed profile to create a new one, so provisioning is allowed. assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, false); assertCheckProvisioningPreCondition( DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, DpmMockContext.ANOTHER_PACKAGE_NAME, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, false, DpmMockContext.ANOTHER_PACKAGE_NAME, DpmMockContext.ANOTHER_UID); } @@ -3823,13 +3823,13 @@ public class DevicePolicyManagerTest extends DpmTestBase { assertCheckProvisioningPreCondition( DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, DpmMockContext.ANOTHER_PACKAGE_NAME, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, false, DpmMockContext.ANOTHER_PACKAGE_NAME, DpmMockContext.ANOTHER_UID); // But the device owner can still do it because it has set the restriction itself. assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); assertProvisioningAllowed(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, false); } @@ -3901,7 +3901,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { // COMP mode is NOT allowed. assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); } private void setup_provisionManagedProfileOneAlreadyExist_primaryUser() throws Exception { @@ -3935,14 +3935,14 @@ public class DevicePolicyManagerTest extends DpmTestBase { setup_provisionManagedProfileOneAlreadyExist_primaryUser(); mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS); assertCheckProvisioningPreCondition(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, - DevicePolicyManager.CODE_CANNOT_ADD_MANAGED_PROFILE); + DevicePolicyManager.STATUS_CANNOT_ADD_MANAGED_PROFILE); } @Test public void testCheckProvisioningPreCondition_permission() { // GIVEN the permission MANAGE_PROFILE_AND_DEVICE_OWNERS is not granted assertExpectException(SecurityException.class, /* messageRegex =*/ null, - () -> dpm.checkProvisioningPreCondition( + () -> dpm.checkProvisioningPrecondition( DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE, "some.package")); } @@ -8696,7 +8696,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { private void assertCheckProvisioningPreCondition( String action, String packageName, int provisioningCondition) { assertWithMessage("checkProvisioningPreCondition(%s, %s) returning unexpected result", - action, packageName).that(dpm.checkProvisioningPreCondition(action, packageName)) + action, packageName).that(dpm.checkProvisioningPrecondition(action, packageName)) .isEqualTo(provisioningCondition); }