aboutsummaryrefslogtreecommitdiffstats
path: root/user
diff options
context:
space:
mode:
authorfelipeal <felipeal@google.com>2020-04-09 15:16:52 -0700
committerfelipeal <felipeal@google.com>2020-04-10 09:01:10 -0700
commit09807c28e1a20c998ee58219e1d3640753003d20 (patch)
tree743fb3c34128043c696c0aad71d2cc280c55533b /user
parentc57f0a4d8196989f8b1211955dc57024c36d92f6 (diff)
downloadplatform_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.java41
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);
}
/**