Loading core/java/android/os/IUserManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ interface IUserManager { UserInfo getPrimaryUser(); int getMainUserId(); int getCommunalProfileId(); int getPreviousFullUserToEnterForeground(); int getPreviousUserToEnterForeground(); List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated); List<UserInfo> getProfiles(int userId, boolean enabledOnly); int[] getProfileIds(int userId, boolean enabledOnly); Loading core/java/android/os/UserManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -5250,7 +5250,7 @@ public class UserManager { }) public @Nullable UserHandle getPreviousForegroundUser() { try { final int previousUser = mService.getPreviousFullUserToEnterForeground(); final int previousUser = mService.getPreviousUserToEnterForeground(); if (previousUser == UserHandle.USER_NULL) { return null; } Loading services/core/java/com/android/server/pm/UserManagerService.java +5 −5 Original line number Diff line number Diff line Loading @@ -1013,7 +1013,7 @@ public class UserManagerService extends IUserManager.Stub { if (user != null) { user.startRealtime = SystemClock.elapsedRealtime(); if (targetUser.getUserIdentifier() == UserHandle.USER_SYSTEM && targetUser.isFull()) { && user.info.supportsSwitchTo()) { mUms.setLastEnteredForegroundTimeToNow(user); } } Loading Loading @@ -1454,7 +1454,7 @@ public class UserManagerService extends IUserManager.Stub { private @UserIdInt int getPreviousOrFirstSwitchableUser() throws UserManager.CheckedUserOperationException { // Return the previous foreground user, if there is one. final int previousUser = getPreviousFullUserToEnterForeground(); final int previousUser = getPreviousUserToEnterForeground(); if (previousUser != UserHandle.USER_NULL) { Slogf.i(LOG_TAG, "Boot user is previous user %d", previousUser); return previousUser; Loading Loading @@ -1487,7 +1487,7 @@ public class UserManagerService extends IUserManager.Stub { } @Override public @CanBeNULL @UserIdInt int getPreviousFullUserToEnterForeground() { public @CanBeNULL @UserIdInt int getPreviousUserToEnterForeground() { checkQueryOrCreateUsersPermission("get previous user"); int previousUser = UserHandle.USER_NULL; long latestEnteredTime = 0; Loading @@ -1497,8 +1497,8 @@ public class UserManagerService extends IUserManager.Stub { for (int i = 0; i < userSize; i++) { final UserData userData = mUsers.valueAt(i); final int userId = userData.info.id; if (userId != currentUser && userData.info.isFull() && !userData.info.partial && userData.info.isEnabled() && !mRemovingUserIds.get(userId)) { if (userId != currentUser && !userData.info.partial && userData.info.isEnabled() && !mRemovingUserIds.get(userId)) { final long userEnteredTime = userData.mLastEnteredForegroundTimeMillis; if (userEnteredTime > latestEnteredTime) { latestEnteredTime = userEnteredTime; Loading services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceMockedTest.java +25 −25 Original line number Diff line number Diff line Loading @@ -437,80 +437,80 @@ public final class UserManagerServiceMockedTest { } @Test public void testGetPreviousFullUserToEnterForeground() throws Exception { public void testGetPreviousUserToEnterForeground() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); assertWithMessage("getPreviousFullUserToEnterForeground") .that(mUms.getPreviousFullUserToEnterForeground()) assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(OTHER_USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsCurrentUser() throws Exception { public void testGetPreviousUserToEnterForeground_SkipsCurrentUser() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); mockCurrentUser(OTHER_USER_ID); assertWithMessage("getPreviousFullUserToEnterForeground should skip current user") .that(mUms.getPreviousFullUserToEnterForeground()) assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsNonFullUsers() throws Exception { public void testGetPreviousUserToEnterForeground_SkipsPartialUsers() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); mUsers.get(OTHER_USER_ID).info.flags &= ~UserInfo.FLAG_FULL; assertWithMessage("getPreviousFullUserToEnterForeground should skip non-full users") .that(mUms.getPreviousFullUserToEnterForeground()) mUsers.get(OTHER_USER_ID).info.partial = true; assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsPartialUsers() throws Exception { public void testGetPreviousUserToEnterForeground_SkipsDisabledUsers() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); mUsers.get(OTHER_USER_ID).info.partial = true; assertWithMessage("getPreviousFullUserToEnterForeground should skip partial users") .that(mUms.getPreviousFullUserToEnterForeground()) mUsers.get(OTHER_USER_ID).info.flags |= UserInfo.FLAG_DISABLED; assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsDisabledUsers() throws Exception { public void testGetPreviousUserToEnterForeground_SkipsRemovingUsers() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); mUsers.get(OTHER_USER_ID).info.flags |= UserInfo.FLAG_DISABLED; assertWithMessage("getPreviousFullUserToEnterForeground should skip disabled users") .that(mUms.getPreviousFullUserToEnterForeground()) mUms.addRemovingUserId(OTHER_USER_ID); assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsRemovingUsers() throws Exception { public void testGetPreviousUserToEnterForeground_ReturnsHeadlessSystemUser() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); setSystemUserHeadless(true); mockCanSwitchToHeadlessSystemUser(true); setLastForegroundTime(UserHandle.USER_SYSTEM, 2_000_000L); mUms.addRemovingUserId(OTHER_USER_ID); assertWithMessage("getPreviousFullUserToEnterForeground should skip removing users") .that(mUms.getPreviousFullUserToEnterForeground()) .isEqualTo(USER_ID); assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(UserHandle.USER_SYSTEM); } @Test Loading Loading
core/java/android/os/IUserManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ interface IUserManager { UserInfo getPrimaryUser(); int getMainUserId(); int getCommunalProfileId(); int getPreviousFullUserToEnterForeground(); int getPreviousUserToEnterForeground(); List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated); List<UserInfo> getProfiles(int userId, boolean enabledOnly); int[] getProfileIds(int userId, boolean enabledOnly); Loading
core/java/android/os/UserManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -5250,7 +5250,7 @@ public class UserManager { }) public @Nullable UserHandle getPreviousForegroundUser() { try { final int previousUser = mService.getPreviousFullUserToEnterForeground(); final int previousUser = mService.getPreviousUserToEnterForeground(); if (previousUser == UserHandle.USER_NULL) { return null; } Loading
services/core/java/com/android/server/pm/UserManagerService.java +5 −5 Original line number Diff line number Diff line Loading @@ -1013,7 +1013,7 @@ public class UserManagerService extends IUserManager.Stub { if (user != null) { user.startRealtime = SystemClock.elapsedRealtime(); if (targetUser.getUserIdentifier() == UserHandle.USER_SYSTEM && targetUser.isFull()) { && user.info.supportsSwitchTo()) { mUms.setLastEnteredForegroundTimeToNow(user); } } Loading Loading @@ -1454,7 +1454,7 @@ public class UserManagerService extends IUserManager.Stub { private @UserIdInt int getPreviousOrFirstSwitchableUser() throws UserManager.CheckedUserOperationException { // Return the previous foreground user, if there is one. final int previousUser = getPreviousFullUserToEnterForeground(); final int previousUser = getPreviousUserToEnterForeground(); if (previousUser != UserHandle.USER_NULL) { Slogf.i(LOG_TAG, "Boot user is previous user %d", previousUser); return previousUser; Loading Loading @@ -1487,7 +1487,7 @@ public class UserManagerService extends IUserManager.Stub { } @Override public @CanBeNULL @UserIdInt int getPreviousFullUserToEnterForeground() { public @CanBeNULL @UserIdInt int getPreviousUserToEnterForeground() { checkQueryOrCreateUsersPermission("get previous user"); int previousUser = UserHandle.USER_NULL; long latestEnteredTime = 0; Loading @@ -1497,8 +1497,8 @@ public class UserManagerService extends IUserManager.Stub { for (int i = 0; i < userSize; i++) { final UserData userData = mUsers.valueAt(i); final int userId = userData.info.id; if (userId != currentUser && userData.info.isFull() && !userData.info.partial && userData.info.isEnabled() && !mRemovingUserIds.get(userId)) { if (userId != currentUser && !userData.info.partial && userData.info.isEnabled() && !mRemovingUserIds.get(userId)) { final long userEnteredTime = userData.mLastEnteredForegroundTimeMillis; if (userEnteredTime > latestEnteredTime) { latestEnteredTime = userEnteredTime; Loading
services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceMockedTest.java +25 −25 Original line number Diff line number Diff line Loading @@ -437,80 +437,80 @@ public final class UserManagerServiceMockedTest { } @Test public void testGetPreviousFullUserToEnterForeground() throws Exception { public void testGetPreviousUserToEnterForeground() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); assertWithMessage("getPreviousFullUserToEnterForeground") .that(mUms.getPreviousFullUserToEnterForeground()) assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(OTHER_USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsCurrentUser() throws Exception { public void testGetPreviousUserToEnterForeground_SkipsCurrentUser() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); mockCurrentUser(OTHER_USER_ID); assertWithMessage("getPreviousFullUserToEnterForeground should skip current user") .that(mUms.getPreviousFullUserToEnterForeground()) assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsNonFullUsers() throws Exception { public void testGetPreviousUserToEnterForeground_SkipsPartialUsers() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); mUsers.get(OTHER_USER_ID).info.flags &= ~UserInfo.FLAG_FULL; assertWithMessage("getPreviousFullUserToEnterForeground should skip non-full users") .that(mUms.getPreviousFullUserToEnterForeground()) mUsers.get(OTHER_USER_ID).info.partial = true; assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsPartialUsers() throws Exception { public void testGetPreviousUserToEnterForeground_SkipsDisabledUsers() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); mUsers.get(OTHER_USER_ID).info.partial = true; assertWithMessage("getPreviousFullUserToEnterForeground should skip partial users") .that(mUms.getPreviousFullUserToEnterForeground()) mUsers.get(OTHER_USER_ID).info.flags |= UserInfo.FLAG_DISABLED; assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsDisabledUsers() throws Exception { public void testGetPreviousUserToEnterForeground_SkipsRemovingUsers() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); mUsers.get(OTHER_USER_ID).info.flags |= UserInfo.FLAG_DISABLED; assertWithMessage("getPreviousFullUserToEnterForeground should skip disabled users") .that(mUms.getPreviousFullUserToEnterForeground()) mUms.addRemovingUserId(OTHER_USER_ID); assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(USER_ID); } @Test public void testGetPreviousFullUserToEnterForeground_SkipsRemovingUsers() throws Exception { public void testGetPreviousUserToEnterForeground_ReturnsHeadlessSystemUser() throws Exception { addUser(USER_ID); setLastForegroundTime(USER_ID, 1_000_000L); addUser(OTHER_USER_ID); setLastForegroundTime(OTHER_USER_ID, 2_000_000L); setSystemUserHeadless(true); mockCanSwitchToHeadlessSystemUser(true); setLastForegroundTime(UserHandle.USER_SYSTEM, 2_000_000L); mUms.addRemovingUserId(OTHER_USER_ID); assertWithMessage("getPreviousFullUserToEnterForeground should skip removing users") .that(mUms.getPreviousFullUserToEnterForeground()) .isEqualTo(USER_ID); assertWithMessage("getPreviousUserToEnterForeground") .that(mUms.getPreviousUserToEnterForeground()) .isEqualTo(UserHandle.USER_SYSTEM); } @Test Loading