diff options
| author | felipeal <felipeal@google.com> | 2020-04-09 15:16:52 -0700 |
|---|---|---|
| committer | felipeal <felipeal@google.com> | 2020-04-10 09:01:10 -0700 |
| commit | 09807c28e1a20c998ee58219e1d3640753003d20 (patch) | |
| tree | 743fb3c34128043c696c0aad71d2cc280c55533b /user | |
| parent | c57f0a4d8196989f8b1211955dc57024c36d92f6 (diff) | |
| download | platform_packages_services_Car-09807c28e1a20c998ee58219e1d3640753003d20.tar.gz platform_packages_services_Car-09807c28e1a20c998ee58219e1d3640753003d20.tar.bz2 platform_packages_services_Car-09807c28e1a20c998ee58219e1d3640753003d20.zip | |
Changed InitialUserSetter.switchUser() to take a replaceGuest parameter.
In most cases the parameter will be true, but on CarPowerManagementService,
the value will be defined by an overlayable config.
Test: atest InitialUserSetterTest CarPowerManagementServiceTest
Bug: 153679319
Bug: 153341476
Change-Id: Ib2ce9a4582b4a31d13b1d673fa7bda6ba087b606
Diffstat (limited to 'user')
| -rw-r--r-- | user/car-user-lib/src/android/car/userlib/InitialUserSetter.java | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/user/car-user-lib/src/android/car/userlib/InitialUserSetter.java b/user/car-user-lib/src/android/car/userlib/InitialUserSetter.java index 21d42d9a4..3a83846a1 100644 --- a/user/car-user-lib/src/android/car/userlib/InitialUserSetter.java +++ b/user/car-user-lib/src/android/car/userlib/InitialUserSetter.java @@ -119,7 +119,7 @@ public final class InitialUserSetter { } else { if (DBG) Log.d(TAG, "executeDefaultBehavior(): switching to initial user"); int userId = mHelper.getInitialUser(mSupportsOverrideUserIdProperty); - switchUser(userId, fallback); + switchUser(userId, /* replaceGuest= */ true, fallback); } } @@ -141,11 +141,11 @@ public final class InitialUserSetter { * Switches to the given user, falling back to {@link #fallbackDefaultBehavior(String)} if it * fails. */ - public void switchUser(@UserIdInt int userId) { - switchUser(userId, /* fallback= */ true); + public void switchUser(@UserIdInt int userId, boolean replaceGuest) { + switchUser(userId, replaceGuest, /* fallback= */ true); } - private void switchUser(@UserIdInt int userId, boolean fallback) { + private void switchUser(@UserIdInt int userId, boolean replaceGuest, boolean fallback) { if (DBG) Log.d(TAG, "switchUser(): userId=" + userId); UserInfo user = mUm.getUserInfo(userId); @@ -154,19 +154,27 @@ public final class InitialUserSetter { return; } - UserInfo actualUser = replaceGuestIfNeeded(user); + UserInfo actualUser = user; - if (actualUser == null) { - fallbackDefaultBehavior(fallback, "could not replace guest " + user.toFullString()); - return; + if (user.isGuest()) { + if (!replaceGuest) { + if (DBG) { + Log.d(TAG, "not switching to guest user when replaceGuest is false"); + } + unlockSystemUserIfNecessary(user.id); + return; + } + actualUser = replaceGuestIfNeeded(user); + + if (actualUser == null) { + fallbackDefaultBehavior(fallback, "could not replace guest " + user.toFullString()); + return; + } } int actualUserId = actualUser.id; - // If system user is the only user to unlock, it will be handled when boot is complete. - if (actualUserId != UserHandle.USER_SYSTEM) { - unlockSystemUser(); - } + unlockSystemUserIfNecessary(actualUserId); int currentUserId = ActivityManager.getCurrentUser(); if (actualUserId != currentUserId) { @@ -186,6 +194,13 @@ public final class InitialUserSetter { } } + private void unlockSystemUserIfNecessary(@UserIdInt int userId) { + // If system user is the only user to unlock, it will be handled when boot is complete. + if (userId != UserHandle.USER_SYSTEM) { + unlockSystemUser(); + } + } + // TODO(b/151758646): move to CarUserManagerHelper /** * Replaces {@code user} by a new guest, if necessary. @@ -257,7 +272,7 @@ public final class InitialUserSetter { return; } - switchUser(result.first.id, fallback); + switchUser(result.first.id, /* replaceGuest= */ false, fallback); } /** |
