Loading services/core/java/com/android/server/pm/PackageManagerService.java +2 −7 Original line number Diff line number Diff line Loading @@ -2217,10 +2217,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService t.traceBegin("read user settings"); mFirstBoot = !mSettings.readLPw(computer, mInjector.getUserManagerInternal().getUsers( /* excludePartial= */ true, /* excludeDying= */ false, /* excludePreCreated= */ false)); mInjector.getUserManagerInternal().getUsers(/* excludeDying= */ false)); t.traceEnd(); if (mFirstBoot) { Loading Loading @@ -4384,9 +4381,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService int[] grantPermissionsUserIds = EMPTY_INT_ARRAY; final List<UserInfo> livingUsers = mInjector.getUserManagerInternal().getUsers( /* excludePartial= */ true, /* excludeDying= */ true, /* excludePreCreated= */ false); /* excludeDying= */ true); final int livingUserCount = livingUsers.size(); for (int i = 0; i < livingUserCount; i++) { final int userId = livingUsers.get(i).id; Loading services/core/java/com/android/server/pm/UserManagerInternal.java +0 −8 Original line number Diff line number Diff line Loading @@ -297,14 +297,6 @@ public abstract class UserManagerInternal { */ public abstract @NonNull List<UserInfo> getUsers(boolean excludeDying); /** * Internal implementation of getUsers does not check permissions. * This improves performance for calls from inside system server which already have permissions * checked. */ public abstract @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated); /** * Returns a list of the users that are associated with the specified user, including the user * itself. This includes the user, its profiles, its parent, and its parent's other profiles, Loading services/core/java/com/android/server/pm/UserManagerService.java +11 −19 Original line number Diff line number Diff line Loading @@ -1588,16 +1588,15 @@ public class UserManagerService extends IUserManager.Stub { @Override public @NonNull List<UserInfo> getUsers(boolean excludeDying) { checkCreateUsersPermission("query users"); return getUsersInternal(/* excludePartial= */ true, excludeDying, /* excludePreCreated= */ true, /* resolveNullNames= */ true); return getUsersInternal(/* excludePartial= */ true, excludeDying, /* resolveNullNames= */ true); } // Used by cmd users @NonNull List<UserInfo> getUsersWithUnresolvedNames(boolean excludePartial, boolean excludeDying, boolean excludePreCreated) { boolean excludeDying) { checkCreateUsersPermission("get users with unresolved names"); return getUsersInternal(excludePartial, excludeDying, excludePreCreated, /* resolveNullNames= */ false); return getUsersInternal(excludePartial, excludeDying, /* resolveNullNames= */ false); } /** Loading @@ -1606,7 +1605,7 @@ public class UserManagerService extends IUserManager.Stub { @Deprecated @VisibleForTesting List<UserInfo> getUsersInternal(boolean excludePartial, boolean excludeDying, boolean excludePreCreated, boolean resolveNullNames) { boolean resolveNullNames) { synchronized (mUsersLock) { ArrayList<UserInfo> users = new ArrayList<>(mUsers.size()); final int userSize = mUsers.size(); Loading @@ -1614,7 +1613,8 @@ public class UserManagerService extends IUserManager.Stub { UserInfo ui = mUsers.valueAt(i).info; if ((excludePartial && ui.partial) || (excludeDying && mRemovingUserIds.get(ui.id)) || (excludePreCreated && ui.preCreated)) { // NOTE: preCreated users are not supported anymore || ui.preCreated) { continue; } var user = resolveNullNames ? userWithName(ui) : ui; Loading Loading @@ -5309,8 +5309,7 @@ public class UserManagerService extends IUserManager.Stub { /** Returns the oldest Full Admin user, or null is if there none. */ private @Nullable UserInfo getEarliestCreatedFullUser() { List<UserInfo> users = getUsersInternal(/* excludePartial= */ true, /* excludeDying= */ true, /* excludePreCreated= */ true, /* resolveNullNames= */ false); /* excludeDying= */ true, /* resolveNullNames= */ false); UserInfo earliestUser = null; long earliestCreationTime = Long.MAX_VALUE; for (int i = 0; i < users.size(); i++) { Loading Loading @@ -6622,8 +6621,7 @@ public class UserManagerService extends IUserManager.Stub { private int onPullAtom(int atomTag, List<StatsEvent> data) { if (atomTag == FrameworkStatsLog.USER_INFO) { final List<UserInfo> users = getUsersInternal(/* excludePartial= */ true, /* excludeDying= */ true, /* excludePreCreated= */ true, /* resolveNullNames= */ false); /* excludeDying= */ true, /* resolveNullNames= */ false); final int size = users.size(); if (size > 1) { for (int idx = 0; idx < size; idx++) { Loading Loading @@ -8336,14 +8334,8 @@ public class UserManagerService extends IUserManager.Stub { @Override public @NonNull List<UserInfo> getUsers(boolean excludeDying) { return getUsers(/*excludePartial= */ true, excludeDying, /* excludePreCreated= */ true); } @Override public @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated) { return UserManagerService.this.getUsersInternal(excludePartial, excludeDying, excludePreCreated, /* resolveNullNames= */ true); return UserManagerService.this.getUsersInternal(/*excludePartial= */ true, excludeDying, /* resolveNullNames= */ true); } @Override Loading services/core/java/com/android/server/pm/UserManagerServiceShellCommand.java +1 −2 Original line number Diff line number Diff line Loading @@ -191,8 +191,7 @@ public class UserManagerServiceShellCommand extends ShellCommand { } final IActivityManager am = ActivityManager.getService(); final List<UserInfo> users = mService.getUsersWithUnresolvedNames( /* excludePartial= */ !all, /* excludeDying= */ false, /* excludePreCreated= */ !all); /* excludePartial= */ !all, /* excludeDying= */ false); if (users == null) { pw.println("Error: couldn't get users"); return 1; Loading services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt +1 −1 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) { android.util.Pair(PackageAbiHelper.Abis("", ""), PackageAbiHelper.NativeLibraryPaths("", false, "", "")) } whenever(mocks.userManagerInternal.getUsers(true, false, false)).thenReturn(DEFAULT_USERS) whenever(mocks.userManagerInternal.getUsers(false)).thenReturn(DEFAULT_USERS) whenever(mocks.userManagerService.userIds).thenReturn(intArrayOf(0)) whenever(mocks.userManagerService.exists(0)).thenReturn(true) whenever(mocks.packageAbiHelper.deriveNativeLibraryPaths(any(AndroidPackage::class.java), Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +2 −7 Original line number Diff line number Diff line Loading @@ -2217,10 +2217,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService t.traceBegin("read user settings"); mFirstBoot = !mSettings.readLPw(computer, mInjector.getUserManagerInternal().getUsers( /* excludePartial= */ true, /* excludeDying= */ false, /* excludePreCreated= */ false)); mInjector.getUserManagerInternal().getUsers(/* excludeDying= */ false)); t.traceEnd(); if (mFirstBoot) { Loading Loading @@ -4384,9 +4381,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService int[] grantPermissionsUserIds = EMPTY_INT_ARRAY; final List<UserInfo> livingUsers = mInjector.getUserManagerInternal().getUsers( /* excludePartial= */ true, /* excludeDying= */ true, /* excludePreCreated= */ false); /* excludeDying= */ true); final int livingUserCount = livingUsers.size(); for (int i = 0; i < livingUserCount; i++) { final int userId = livingUsers.get(i).id; Loading
services/core/java/com/android/server/pm/UserManagerInternal.java +0 −8 Original line number Diff line number Diff line Loading @@ -297,14 +297,6 @@ public abstract class UserManagerInternal { */ public abstract @NonNull List<UserInfo> getUsers(boolean excludeDying); /** * Internal implementation of getUsers does not check permissions. * This improves performance for calls from inside system server which already have permissions * checked. */ public abstract @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated); /** * Returns a list of the users that are associated with the specified user, including the user * itself. This includes the user, its profiles, its parent, and its parent's other profiles, Loading
services/core/java/com/android/server/pm/UserManagerService.java +11 −19 Original line number Diff line number Diff line Loading @@ -1588,16 +1588,15 @@ public class UserManagerService extends IUserManager.Stub { @Override public @NonNull List<UserInfo> getUsers(boolean excludeDying) { checkCreateUsersPermission("query users"); return getUsersInternal(/* excludePartial= */ true, excludeDying, /* excludePreCreated= */ true, /* resolveNullNames= */ true); return getUsersInternal(/* excludePartial= */ true, excludeDying, /* resolveNullNames= */ true); } // Used by cmd users @NonNull List<UserInfo> getUsersWithUnresolvedNames(boolean excludePartial, boolean excludeDying, boolean excludePreCreated) { boolean excludeDying) { checkCreateUsersPermission("get users with unresolved names"); return getUsersInternal(excludePartial, excludeDying, excludePreCreated, /* resolveNullNames= */ false); return getUsersInternal(excludePartial, excludeDying, /* resolveNullNames= */ false); } /** Loading @@ -1606,7 +1605,7 @@ public class UserManagerService extends IUserManager.Stub { @Deprecated @VisibleForTesting List<UserInfo> getUsersInternal(boolean excludePartial, boolean excludeDying, boolean excludePreCreated, boolean resolveNullNames) { boolean resolveNullNames) { synchronized (mUsersLock) { ArrayList<UserInfo> users = new ArrayList<>(mUsers.size()); final int userSize = mUsers.size(); Loading @@ -1614,7 +1613,8 @@ public class UserManagerService extends IUserManager.Stub { UserInfo ui = mUsers.valueAt(i).info; if ((excludePartial && ui.partial) || (excludeDying && mRemovingUserIds.get(ui.id)) || (excludePreCreated && ui.preCreated)) { // NOTE: preCreated users are not supported anymore || ui.preCreated) { continue; } var user = resolveNullNames ? userWithName(ui) : ui; Loading Loading @@ -5309,8 +5309,7 @@ public class UserManagerService extends IUserManager.Stub { /** Returns the oldest Full Admin user, or null is if there none. */ private @Nullable UserInfo getEarliestCreatedFullUser() { List<UserInfo> users = getUsersInternal(/* excludePartial= */ true, /* excludeDying= */ true, /* excludePreCreated= */ true, /* resolveNullNames= */ false); /* excludeDying= */ true, /* resolveNullNames= */ false); UserInfo earliestUser = null; long earliestCreationTime = Long.MAX_VALUE; for (int i = 0; i < users.size(); i++) { Loading Loading @@ -6622,8 +6621,7 @@ public class UserManagerService extends IUserManager.Stub { private int onPullAtom(int atomTag, List<StatsEvent> data) { if (atomTag == FrameworkStatsLog.USER_INFO) { final List<UserInfo> users = getUsersInternal(/* excludePartial= */ true, /* excludeDying= */ true, /* excludePreCreated= */ true, /* resolveNullNames= */ false); /* excludeDying= */ true, /* resolveNullNames= */ false); final int size = users.size(); if (size > 1) { for (int idx = 0; idx < size; idx++) { Loading Loading @@ -8336,14 +8334,8 @@ public class UserManagerService extends IUserManager.Stub { @Override public @NonNull List<UserInfo> getUsers(boolean excludeDying) { return getUsers(/*excludePartial= */ true, excludeDying, /* excludePreCreated= */ true); } @Override public @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated) { return UserManagerService.this.getUsersInternal(excludePartial, excludeDying, excludePreCreated, /* resolveNullNames= */ true); return UserManagerService.this.getUsersInternal(/*excludePartial= */ true, excludeDying, /* resolveNullNames= */ true); } @Override Loading
services/core/java/com/android/server/pm/UserManagerServiceShellCommand.java +1 −2 Original line number Diff line number Diff line Loading @@ -191,8 +191,7 @@ public class UserManagerServiceShellCommand extends ShellCommand { } final IActivityManager am = ActivityManager.getService(); final List<UserInfo> users = mService.getUsersWithUnresolvedNames( /* excludePartial= */ !all, /* excludeDying= */ false, /* excludePreCreated= */ !all); /* excludePartial= */ !all, /* excludeDying= */ false); if (users == null) { pw.println("Error: couldn't get users"); return 1; Loading
services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt +1 −1 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) { android.util.Pair(PackageAbiHelper.Abis("", ""), PackageAbiHelper.NativeLibraryPaths("", false, "", "")) } whenever(mocks.userManagerInternal.getUsers(true, false, false)).thenReturn(DEFAULT_USERS) whenever(mocks.userManagerInternal.getUsers(false)).thenReturn(DEFAULT_USERS) whenever(mocks.userManagerService.userIds).thenReturn(intArrayOf(0)) whenever(mocks.userManagerService.exists(0)).thenReturn(true) whenever(mocks.packageAbiHelper.deriveNativeLibraryPaths(any(AndroidPackage::class.java), Loading