Fixing a bug in maximum users allowed logic on the device.
We need to use CarUserManagerHelper.getMaxSupportedUsers instead of
UserManager.getMaxSupportedUsers() to correctly take user 0 into account
in headles system user model.
Bug: 80197830
Test: atest CarUserManagerHelperTest
Change-Id: I167aa03d2c6ed03dc225cb4686a07395518752b8
diff --git a/car-lib/src/android/car/user/CarUserManagerHelper.java b/car-lib/src/android/car/user/CarUserManagerHelper.java
index 94c701d..ddd5546 100644
--- a/car-lib/src/android/car/user/CarUserManagerHelper.java
+++ b/car-lib/src/android/car/user/CarUserManagerHelper.java
@@ -427,14 +427,14 @@
*/
public boolean isUserLimitReached() {
int countNonGuestUsers = getAllUsersExceptGuests().size();
- int maxSupportedUsers = UserManager.getMaxSupportedUsers();
+ int maxSupportedUsers = getMaxSupportedUsers();
if (countNonGuestUsers > maxSupportedUsers) {
Log.e(TAG, "There are more users on the device than allowed.");
return true;
}
- return getAllUsersExceptGuests().size() == UserManager.getMaxSupportedUsers();
+ return getAllUsersExceptGuests().size() == maxSupportedUsers;
}
private int getManagedProfilesCount() {
diff --git a/tests/carservice_unit_test/src/com/android/car/CarUserManagerHelperTest.java b/tests/carservice_unit_test/src/com/android/car/CarUserManagerHelperTest.java
index da7cc2c..c7fb3fd 100644
--- a/tests/carservice_unit_test/src/com/android/car/CarUserManagerHelperTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/CarUserManagerHelperTest.java
@@ -313,6 +313,25 @@
}
@Test
+ public void testHeadlessSystemUser_IsUserLimitReached() {
+ SystemProperties.set("android.car.systemuser.headless", "true");
+ UserInfo user1 = createUserInfoForId(10);
+ UserInfo user2 =
+ new UserInfo(/* id= */ 11, /* name = */ "user11", UserInfo.FLAG_MANAGED_PROFILE);
+ UserInfo user3 =
+ new UserInfo(/* id= */ 12, /* name = */ "user12", UserInfo.FLAG_MANAGED_PROFILE);
+ UserInfo user4 = createUserInfoForId(13);
+
+ mockGetUsers(mSystemUser, user1, user2, user3, user4);
+
+ SystemProperties.set("fw.max_users", "6");
+ assertThat(mCarUserManagerHelper.isUserLimitReached()).isFalse();
+
+ SystemProperties.set("fw.max_users", "5");
+ assertThat(mCarUserManagerHelper.isUserLimitReached()).isTrue();
+ }
+
+ @Test
public void testIsUserLimitReachedIgnoresGuests() {
SystemProperties.set("fw.max_users", "5");