Loading core/java/android/app/admin/flags/flags.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -323,3 +323,13 @@ flag { purpose: PURPOSE_BUGFIX } } flag { name: "user_provisioning_same_state" namespace: "enterprise" description: "Handle exceptions while setting same provisioning state." bug: "326441417" metadata { purpose: PURPOSE_BUGFIX } } services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +14 −2 Original line number Diff line number Diff line Loading @@ -10625,8 +10625,16 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { final DevicePolicyData policyData = getUserData(userId); if (transitionCheckNeeded) { // Optional state transition check for non-ADB case. checkUserProvisioningStateTransition(policyData.mUserProvisioningState, try { checkUserProvisioningStateTransition( policyData.mUserProvisioningState, newState); } catch (IllegalStateException e) { Slogf.e(LOG_TAG, "Exception caught while changing provisioning state", e); throw e; } } policyData.mUserProvisioningState = newState; saveSettingsLocked(userId); Loading @@ -10637,6 +10645,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } private void checkUserProvisioningStateTransition(int currentState, int newState) { if (Flags.userProvisioningSameState()) { Preconditions.checkState(newState != currentState, "New state cannot" + " be the same as the current state: [" + newState + "]"); } // Valid transitions for normal use-cases. switch (currentState) { case DevicePolicyManager.STATE_USER_UNMANAGED: Loading
core/java/android/app/admin/flags/flags.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -323,3 +323,13 @@ flag { purpose: PURPOSE_BUGFIX } } flag { name: "user_provisioning_same_state" namespace: "enterprise" description: "Handle exceptions while setting same provisioning state." bug: "326441417" metadata { purpose: PURPOSE_BUGFIX } }
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +14 −2 Original line number Diff line number Diff line Loading @@ -10625,8 +10625,16 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { final DevicePolicyData policyData = getUserData(userId); if (transitionCheckNeeded) { // Optional state transition check for non-ADB case. checkUserProvisioningStateTransition(policyData.mUserProvisioningState, try { checkUserProvisioningStateTransition( policyData.mUserProvisioningState, newState); } catch (IllegalStateException e) { Slogf.e(LOG_TAG, "Exception caught while changing provisioning state", e); throw e; } } policyData.mUserProvisioningState = newState; saveSettingsLocked(userId); Loading @@ -10637,6 +10645,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } private void checkUserProvisioningStateTransition(int currentState, int newState) { if (Flags.userProvisioningSameState()) { Preconditions.checkState(newState != currentState, "New state cannot" + " be the same as the current state: [" + newState + "]"); } // Valid transitions for normal use-cases. switch (currentState) { case DevicePolicyManager.STATE_USER_UNMANAGED: