CarUserManager.removeUser() should not throw STATUS_TARGET_USER_IS_LAST_ADMIN_USER
Bug: 159735133
Test: atest CarServiceUnitTest:com.android.car.user.CarUserService
Change-Id: I7f02aa5c1118923339ceac2a2b8e19142a667739
diff --git a/service/src/com/android/car/user/CarUserService.java b/service/src/com/android/car/user/CarUserService.java
index 50cbba4..604a59c 100644
--- a/service/src/com/android/car/user/CarUserService.java
+++ b/service/src/com/android/car/user/CarUserService.java
@@ -999,7 +999,8 @@
halUser.flags = UserHalHelper.convertFlags(userInfo);
UsersInfo usersInfo = UserHalHelper.newUsersInfo(mUserManager);
- // Do not delete last admin user.
+ // check if the user is last admin user.
+ boolean isLastAdmin = false;
if (UserHalHelper.isAdmin(halUser.flags)) {
int size = usersInfo.existingUsers.size();
int totalAdminUsers = 0;
@@ -1009,8 +1010,7 @@
}
}
if (totalAdminUsers == 1) {
- return logAndGetResults(userId,
- UserRemovalResult.STATUS_TARGET_USER_IS_LAST_ADMIN_USER);
+ isLastAdmin = true;
}
}
@@ -1027,7 +1027,13 @@
mHal.removeUser(request);
}
- return logAndGetResults(userId, UserRemovalResult.STATUS_SUCCESSFUL);
+ if (isLastAdmin) {
+ Log.w(TAG_USER, "Last admin user successfully removed. User Id: " + userId);
+ }
+
+ return logAndGetResults(userId,
+ isLastAdmin ? UserRemovalResult.STATUS_SUCCESSFUL_LAST_ADMIN_REMOVED
+ : UserRemovalResult.STATUS_SUCCESSFUL);
}
private UserRemovalResult logAndGetResults(@UserIdInt int userId,