Merge "Allow provisioning state transition _PROFILE_FINALIZED->_USER_UNMANAGED" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
43799d4d09
@@ -96,6 +96,7 @@ import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_REMOVE_N
|
|||||||
import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_SETTING_PROFILE_OWNER_FAILED;
|
import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_SETTING_PROFILE_OWNER_FAILED;
|
||||||
import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_SET_DEVICE_OWNER_FAILED;
|
import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_SET_DEVICE_OWNER_FAILED;
|
||||||
import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_STARTING_PROFILE_FAILED;
|
import static android.app.admin.DevicePolicyManager.PROVISIONING_RESULT_STARTING_PROFILE_FAILED;
|
||||||
|
import static android.app.admin.DevicePolicyManager.STATE_USER_UNMANAGED;
|
||||||
import static android.app.admin.DevicePolicyManager.WIPE_EUICC;
|
import static android.app.admin.DevicePolicyManager.WIPE_EUICC;
|
||||||
import static android.app.admin.DevicePolicyManager.WIPE_EXTERNAL_STORAGE;
|
import static android.app.admin.DevicePolicyManager.WIPE_EXTERNAL_STORAGE;
|
||||||
import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA;
|
import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA;
|
||||||
@@ -8735,7 +8736,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
|||||||
|
|
||||||
final CallerIdentity caller = getCallerIdentity();
|
final CallerIdentity caller = getCallerIdentity();
|
||||||
if (userHandle != mOwners.getDeviceOwnerUserId() && !mOwners.hasProfileOwner(userHandle)
|
if (userHandle != mOwners.getDeviceOwnerUserId() && !mOwners.hasProfileOwner(userHandle)
|
||||||
&& getManagedUserId(userHandle) == -1) {
|
&& getManagedUserId(userHandle) == -1
|
||||||
|
&& newState != STATE_USER_UNMANAGED) {
|
||||||
// No managed device, user or profile, so setting provisioning state makes no sense.
|
// No managed device, user or profile, so setting provisioning state makes no sense.
|
||||||
throw new IllegalStateException("Not allowed to change provisioning state unless a "
|
throw new IllegalStateException("Not allowed to change provisioning state unless a "
|
||||||
+ "device or profile owner is set.");
|
+ "device or profile owner is set.");
|
||||||
@@ -8798,6 +8800,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
|||||||
case DevicePolicyManager.STATE_USER_SETUP_FINALIZED:
|
case DevicePolicyManager.STATE_USER_SETUP_FINALIZED:
|
||||||
// Cannot transition out of finalized.
|
// Cannot transition out of finalized.
|
||||||
break;
|
break;
|
||||||
|
case DevicePolicyManager.STATE_USER_PROFILE_FINALIZED:
|
||||||
|
// Should only move to an unmanaged state after removing the work profile.
|
||||||
|
if (newState == DevicePolicyManager.STATE_USER_UNMANAGED) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Didn't meet any of the accepted state transition checks above, throw appropriate error.
|
// Didn't meet any of the accepted state transition checks above, throw appropriate error.
|
||||||
|
|||||||
@@ -3178,6 +3178,16 @@ public class DevicePolicyManagerTest extends DpmTestBase {
|
|||||||
DevicePolicyManager.STATE_USER_UNMANAGED));
|
DevicePolicyManager.STATE_USER_UNMANAGED));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSetUserProvisioningState_profileFinalized_canTransitionToUserUnmanaged()
|
||||||
|
throws Exception {
|
||||||
|
setupProfileOwner();
|
||||||
|
|
||||||
|
exerciseUserProvisioningTransitions(CALLER_USER_HANDLE,
|
||||||
|
DevicePolicyManager.STATE_USER_PROFILE_FINALIZED,
|
||||||
|
DevicePolicyManager.STATE_USER_UNMANAGED);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetUserProvisioningState_illegalTransitionToAnotherInProgressState()
|
public void testSetUserProvisioningState_illegalTransitionToAnotherInProgressState()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user