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

Commit 7b725c49 authored by Shreya Singh's avatar Shreya Singh
Browse files

Log exceptions of illegal provisioning state transitions

Bug: 326441417
Test: Manual
Flag: android.app.admin.flags.user_provisioning_same_state
Change-Id: Ie03d360aa864151837b85a173d6e6d756646f336
parent 1f80f071
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -412,3 +412,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
  }
}
+14 −2
Original line number Diff line number Diff line
@@ -10628,8 +10628,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);
@@ -10640,6 +10648,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: