Loading core/java/android/os/UserManager.java +7 −3 Original line number Diff line number Diff line Loading @@ -6368,8 +6368,12 @@ public class UserManager { Settings.Global.DEVICE_DEMO_MODE, 0) > 0; } /** @hide */ public static final void invalidateUserSerialNumberCache() { /** * This method is used to invalidate caches, when user was added or removed. * @hide */ public static final void invalidateCacheOnUserListChange() { UserManagerCache.invalidateUserSerialNumber(); } Loading @@ -6382,7 +6386,7 @@ public class UserManager { * @hide */ @UnsupportedAppUsage @CachedProperty(modsFlagOnOrNone = {}) @CachedProperty(modsFlagOnOrNone = {}, api = "user_manager_users") public int getUserSerialNumber(@UserIdInt int userId) { // Read only flag should is to fix early access to this API // cacheUserSerialNumber to be removed after the Loading services/core/java/com/android/server/pm/UserManagerService.java +26 −8 Original line number Diff line number Diff line Loading @@ -1101,7 +1101,7 @@ public class UserManagerService extends IUserManager.Stub { if (android.multiuser.Flags.cachesNotInvalidatedAtStartReadOnly()) { UserManager.invalidateIsUserUnlockedCache(); UserManager.invalidateQuietModeEnabledCache(); UserManager.invalidateUserSerialNumberCache(); UserManager.invalidateCacheOnUserListChange(); } } Loading Loading @@ -4448,7 +4448,7 @@ public class UserManagerService extends IUserManager.Stub { if (userData != null) { synchronized (mUsersLock) { mUsers.put(userData.info.id, userData); addUserDataLU(userData); if (mNextSerialNumber < 0 || mNextSerialNumber <= userData.info.id) { mNextSerialNumber = userData.info.id + 1; Loading Loading @@ -5724,7 +5724,7 @@ public class UserManagerService extends IUserManager.Stub { userData.info = userInfo; userData.userProperties = new UserProperties( userTypeDetails.getDefaultUserPropertiesReference()); mUsers.put(userId, userData); addUserDataLU(userData); } writeUserLP(userData); writeUserListLP(); Loading Loading @@ -6138,7 +6138,7 @@ public class UserManagerService extends IUserManager.Stub { final UserData userData = new UserData(); userData.info = userInfo; synchronized (mUsersLock) { mUsers.put(userInfo.id, userData); addUserDataLU(userData); } updateUserIds(); return userData; Loading @@ -6148,8 +6148,7 @@ public class UserManagerService extends IUserManager.Stub { @VisibleForTesting void removeUserInfo(@UserIdInt int userId) { synchronized (mUsersLock) { UserManager.invalidateUserSerialNumberCache(); mUsers.remove(userId); removeUserDataLU(userId); } } Loading Loading @@ -6579,8 +6578,7 @@ public class UserManagerService extends IUserManager.Stub { // Remove this user from the list synchronized (mUsersLock) { UserManager.invalidateUserSerialNumberCache(); mUsers.remove(userId); removeUserDataLU(userId); mIsUserManaged.delete(userId); } synchronized (mUserStates) { Loading Loading @@ -6968,6 +6966,26 @@ public class UserManagerService extends IUserManager.Stub { return userInfo.creationTime; } /** * Adding user data to mUsers list in one place to invalidate related caches. */ @GuardedBy("mUsersLock") private void addUserDataLU(UserData userData) { if (android.multiuser.Flags.invalidateCacheOnUsersChangedReadOnly()) { UserManager.invalidateCacheOnUserListChange(); } mUsers.put(userData.info.id, userData); } /** * Removing user data to mUsers list in one place to invalidate related caches. */ @GuardedBy("mUsersLock") private void removeUserDataLU(@UserIdInt int userId) { UserManager.invalidateCacheOnUserListChange(); mUsers.remove(userId); } /** * Caches the list of user ids in an array, adjusting the array size when necessary. */ Loading Loading
core/java/android/os/UserManager.java +7 −3 Original line number Diff line number Diff line Loading @@ -6368,8 +6368,12 @@ public class UserManager { Settings.Global.DEVICE_DEMO_MODE, 0) > 0; } /** @hide */ public static final void invalidateUserSerialNumberCache() { /** * This method is used to invalidate caches, when user was added or removed. * @hide */ public static final void invalidateCacheOnUserListChange() { UserManagerCache.invalidateUserSerialNumber(); } Loading @@ -6382,7 +6386,7 @@ public class UserManager { * @hide */ @UnsupportedAppUsage @CachedProperty(modsFlagOnOrNone = {}) @CachedProperty(modsFlagOnOrNone = {}, api = "user_manager_users") public int getUserSerialNumber(@UserIdInt int userId) { // Read only flag should is to fix early access to this API // cacheUserSerialNumber to be removed after the Loading
services/core/java/com/android/server/pm/UserManagerService.java +26 −8 Original line number Diff line number Diff line Loading @@ -1101,7 +1101,7 @@ public class UserManagerService extends IUserManager.Stub { if (android.multiuser.Flags.cachesNotInvalidatedAtStartReadOnly()) { UserManager.invalidateIsUserUnlockedCache(); UserManager.invalidateQuietModeEnabledCache(); UserManager.invalidateUserSerialNumberCache(); UserManager.invalidateCacheOnUserListChange(); } } Loading Loading @@ -4448,7 +4448,7 @@ public class UserManagerService extends IUserManager.Stub { if (userData != null) { synchronized (mUsersLock) { mUsers.put(userData.info.id, userData); addUserDataLU(userData); if (mNextSerialNumber < 0 || mNextSerialNumber <= userData.info.id) { mNextSerialNumber = userData.info.id + 1; Loading Loading @@ -5724,7 +5724,7 @@ public class UserManagerService extends IUserManager.Stub { userData.info = userInfo; userData.userProperties = new UserProperties( userTypeDetails.getDefaultUserPropertiesReference()); mUsers.put(userId, userData); addUserDataLU(userData); } writeUserLP(userData); writeUserListLP(); Loading Loading @@ -6138,7 +6138,7 @@ public class UserManagerService extends IUserManager.Stub { final UserData userData = new UserData(); userData.info = userInfo; synchronized (mUsersLock) { mUsers.put(userInfo.id, userData); addUserDataLU(userData); } updateUserIds(); return userData; Loading @@ -6148,8 +6148,7 @@ public class UserManagerService extends IUserManager.Stub { @VisibleForTesting void removeUserInfo(@UserIdInt int userId) { synchronized (mUsersLock) { UserManager.invalidateUserSerialNumberCache(); mUsers.remove(userId); removeUserDataLU(userId); } } Loading Loading @@ -6579,8 +6578,7 @@ public class UserManagerService extends IUserManager.Stub { // Remove this user from the list synchronized (mUsersLock) { UserManager.invalidateUserSerialNumberCache(); mUsers.remove(userId); removeUserDataLU(userId); mIsUserManaged.delete(userId); } synchronized (mUserStates) { Loading Loading @@ -6968,6 +6966,26 @@ public class UserManagerService extends IUserManager.Stub { return userInfo.creationTime; } /** * Adding user data to mUsers list in one place to invalidate related caches. */ @GuardedBy("mUsersLock") private void addUserDataLU(UserData userData) { if (android.multiuser.Flags.invalidateCacheOnUsersChangedReadOnly()) { UserManager.invalidateCacheOnUserListChange(); } mUsers.put(userData.info.id, userData); } /** * Removing user data to mUsers list in one place to invalidate related caches. */ @GuardedBy("mUsersLock") private void removeUserDataLU(@UserIdInt int userId) { UserManager.invalidateCacheOnUserListChange(); mUsers.remove(userId); } /** * Caches the list of user ids in an array, adjusting the array size when necessary. */ Loading