summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author josephpv <josephpv@google.com> 2024-07-24 15:04:51 +0000
committer josephpv <josephpv@google.com> 2024-08-02 13:34:23 +0000
commit8115d9965e97b2d5d08352763990b80e81f94e1f (patch)
treeefe90914f922f1ffb2840ed52cdae9db1bb537cc
parentf43ac72092b058b873d3e4fa7f9ae81fe43e09a7 (diff)
Define new error code to send on profile create restrition
With this change a new error code is defined that will be set when profile creation is not allowed due to restrictions enforced on the user. Bug: 340130375 Test: Manual Flag: android.multiuser.show_different_creation_error_for_unsupported_devices Change-Id: I4a8c8fde97c31a132496bba42baa177f9eba18cf
-rw-r--r--core/java/android/os/UserManager.java8
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java8
2 files changed, 14 insertions, 2 deletions
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 392b6eb6d51b..06c516aee8f3 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -2391,10 +2391,15 @@ public class UserManager {
*/
public static final int USER_OPERATION_ERROR_DISABLED_USER = 8;
/**
- * Indicates user operation failed because user is disabled on the device.
+ * Indicates user operation failed because private space is disabled on the device.
* @hide
*/
public static final int USER_OPERATION_ERROR_PRIVATE_PROFILE = 9;
+ /**
+ * Indicates user operation failed because user is restricted on the device.
+ * @hide
+ */
+ public static final int USER_OPERATION_ERROR_USER_RESTRICTED = 10;
/**
* Result returned from various user operations.
@@ -2413,6 +2418,7 @@ public class UserManager {
USER_OPERATION_ERROR_USER_ACCOUNT_ALREADY_EXISTS,
USER_OPERATION_ERROR_DISABLED_USER,
USER_OPERATION_ERROR_PRIVATE_PROFILE,
+ USER_OPERATION_ERROR_USER_RESTRICTED,
})
public @interface UserOperationResult {}
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index c902fb26495a..829ee27287c2 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -29,6 +29,7 @@ import static android.os.UserManager.DEV_CREATE_OVERRIDE_PROPERTY;
import static android.os.UserManager.DISALLOW_USER_SWITCH;
import static android.os.UserManager.SYSTEM_USER_MODE_EMULATION_PROPERTY;
import static android.os.UserManager.USER_OPERATION_ERROR_UNKNOWN;
+import static android.os.UserManager.USER_OPERATION_ERROR_USER_RESTRICTED;
import static android.os.UserManager.USER_TYPE_PROFILE_PRIVATE;
import static com.android.internal.app.SetScreenLockDialogActivity.EXTRA_ORIGIN_USER_ID;
@@ -8039,8 +8040,13 @@ public class UserManagerService extends IUserManager.Stub {
String errorMessage = (message != null ? (message + ": ") : "")
+ restriction + " is enabled.";
Slog.w(LOG_TAG, errorMessage);
- throw new UserManager.CheckedUserOperationException(errorMessage,
+ if (android.multiuser.Flags.showDifferentCreationErrorForUnsupportedDevices()) {
+ throw new UserManager.CheckedUserOperationException(errorMessage,
+ USER_OPERATION_ERROR_USER_RESTRICTED);
+ } else {
+ throw new UserManager.CheckedUserOperationException(errorMessage,
USER_OPERATION_ERROR_UNKNOWN);
+ }
}
}