Loading core/java/android/os/UserManager.java +25 −6 Original line number Diff line number Diff line Loading @@ -5602,15 +5602,31 @@ public class UserManager { android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS }) @CachedProperty(api = "user_manager_users") public @Nullable UserHandle getProfileParent(@NonNull UserHandle user) { if (android.multiuser.Flags.cacheProfileParentReadOnly()) { final UserHandle userHandle = UserManagerCache.getProfileParent( (UserHandle query) -> { UserInfo info = getProfileParent(query.getIdentifier()); // TODO: Remove when b/372923336 is fixed if (info == null) { return UserHandle.of(UserHandle.USER_NULL); } return UserHandle.of(info.id); }, user); if (userHandle.getIdentifier() == UserHandle.USER_NULL) { return null; } return userHandle; } else { UserInfo info = getProfileParent(user.getIdentifier()); if (info == null) { return null; } return UserHandle.of(info.id); } } /** * Enables or disables quiet mode for a profile. If quiet mode is enabled, apps in the profile Loading Loading @@ -6424,6 +6440,9 @@ public class UserManager { */ public static final void invalidateCacheOnUserListChange() { UserManagerCache.invalidateUserSerialNumber(); if (android.multiuser.Flags.cacheProfileParentReadOnly()) { UserManagerCache.invalidateProfileParent(); } } /** Loading services/core/java/com/android/server/pm/UserManagerService.java +6 −0 Original line number Diff line number Diff line Loading @@ -5790,6 +5790,9 @@ public class UserManagerService extends IUserManager.Stub { } userInfo.partial = false; if (android.multiuser.Flags.invalidateCacheOnUsersChangedReadOnly()) { UserManager.invalidateCacheOnUserListChange(); } synchronized (mPackagesLock) { writeUserLP(userData); } Loading Loading @@ -6382,6 +6385,9 @@ public class UserManagerService extends IUserManager.Stub { // on next startup, in case the runtime stops now before stopping and // removing the user completely. userData.info.partial = true; if (android.multiuser.Flags.invalidateCacheOnUsersChangedReadOnly()) { UserManager.invalidateCacheOnUserListChange(); } // Mark it as disabled, so that it isn't returned any more when // profiles are queried. userData.info.flags |= UserInfo.FLAG_DISABLED; Loading Loading
core/java/android/os/UserManager.java +25 −6 Original line number Diff line number Diff line Loading @@ -5602,15 +5602,31 @@ public class UserManager { android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS }) @CachedProperty(api = "user_manager_users") public @Nullable UserHandle getProfileParent(@NonNull UserHandle user) { if (android.multiuser.Flags.cacheProfileParentReadOnly()) { final UserHandle userHandle = UserManagerCache.getProfileParent( (UserHandle query) -> { UserInfo info = getProfileParent(query.getIdentifier()); // TODO: Remove when b/372923336 is fixed if (info == null) { return UserHandle.of(UserHandle.USER_NULL); } return UserHandle.of(info.id); }, user); if (userHandle.getIdentifier() == UserHandle.USER_NULL) { return null; } return userHandle; } else { UserInfo info = getProfileParent(user.getIdentifier()); if (info == null) { return null; } return UserHandle.of(info.id); } } /** * Enables or disables quiet mode for a profile. If quiet mode is enabled, apps in the profile Loading Loading @@ -6424,6 +6440,9 @@ public class UserManager { */ public static final void invalidateCacheOnUserListChange() { UserManagerCache.invalidateUserSerialNumber(); if (android.multiuser.Flags.cacheProfileParentReadOnly()) { UserManagerCache.invalidateProfileParent(); } } /** Loading
services/core/java/com/android/server/pm/UserManagerService.java +6 −0 Original line number Diff line number Diff line Loading @@ -5790,6 +5790,9 @@ public class UserManagerService extends IUserManager.Stub { } userInfo.partial = false; if (android.multiuser.Flags.invalidateCacheOnUsersChangedReadOnly()) { UserManager.invalidateCacheOnUserListChange(); } synchronized (mPackagesLock) { writeUserLP(userData); } Loading Loading @@ -6382,6 +6385,9 @@ public class UserManagerService extends IUserManager.Stub { // on next startup, in case the runtime stops now before stopping and // removing the user completely. userData.info.partial = true; if (android.multiuser.Flags.invalidateCacheOnUsersChangedReadOnly()) { UserManager.invalidateCacheOnUserListChange(); } // Mark it as disabled, so that it isn't returned any more when // profiles are queried. userData.info.flags |= UserInfo.FLAG_DISABLED; Loading