From 07653f0b460832ba7cfc7041b552b38e4e850974 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Mon, 14 Oct 2019 15:37:44 -0700 Subject: [PATCH] Fixed guest check so it allows multiple pre-created users. Also fixed shell cmd so it does not require name for pre-created users Bug: 111451156 Bug: 132111956 Test: adb shell pm create-user --pre-create-only --guest # couple times Change-Id: Ie256d55bdfe685f040d16223fcc70f2f2b7969da (cherry picked from commit e35f5b01f816ba41e20292e3410a055f9204ac7e) --- .../com/android/server/pm/PackageManagerShellCommand.java | 6 +++++- .../core/java/com/android/server/pm/UserManagerService.java | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 52a3714cfb38f..3a6784585092f 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -2279,10 +2279,14 @@ class PackageManagerShellCommand extends ShellCommand { } } String arg = getNextArg(); - if (arg == null) { + if (arg == null && !preCreateOnly) { getErrPrintWriter().println("Error: no user name specified."); return 1; } + if (arg != null && preCreateOnly) { + getErrPrintWriter().println("Warning: name is ignored for pre-created users"); + } + name = arg; UserInfo info; IUserManager um = IUserManager.Stub.asInterface( diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 338811efd4ea1..fd5f7ebc82488 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -2805,7 +2805,7 @@ public class UserManagerService extends IUserManager.Stub { return null; } // If we're adding a guest and there already exists one, bail. - if (isGuest && findCurrentGuestUser() != null) { + if (isGuest && !preCreate && findCurrentGuestUser() != null) { Log.e(LOG_TAG, "Cannot add guest user. Guest user already exists."); return null; } @@ -3044,7 +3044,8 @@ public class UserManagerService extends IUserManager.Stub { final int size = mUsers.size(); for (int i = 0; i < size; i++) { final UserInfo user = mUsers.valueAt(i).info; - if (user.isGuest() && !user.guestToRemove && !mRemovingUserIds.get(user.id)) { + if (user.isGuest() && !user.guestToRemove && !user.preCreated + && !mRemovingUserIds.get(user.id)) { return user; } }