Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16f6b9a4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Changed UserManager.getVisibleUsers() to return Set instead of List."

parents 11791dcd bc505674
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -32542,7 +32542,7 @@ package android.os {
    method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.QUERY_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public android.content.pm.UserProperties getUserProperties(@NonNull android.os.UserHandle);
    method public android.os.Bundle getUserRestrictions();
    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}, conditional=true) public android.os.Bundle getUserRestrictions(android.os.UserHandle);
    method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}) public java.util.List<android.os.UserHandle> getVisibleUsers();
    method @NonNull @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.INTERACT_ACROSS_USERS"}) public java.util.Set<android.os.UserHandle> getVisibleUsers();
    method public boolean hasUserRestriction(String);
    method public boolean isDemoUser();
    method public static boolean isHeadlessSystemUserMode();
+1 −1
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ interface IUserManager {
    boolean isUserRunning(int userId);
    boolean isUserForeground(int userId);
    boolean isUserVisible(int userId);
    List<UserHandle> getVisibleUsers();
    int[] getVisibleUsers();
    boolean isUserNameSet(int userId);
    boolean hasRestrictedProfiles(int userId);
    boolean requestQuietModeEnabled(String callingPackage, boolean enableQuietMode, int userId, in IntentSender target, int flags);
+9 −2
Original line number Diff line number Diff line
@@ -2904,12 +2904,19 @@ public class UserManager {
     */
    @RequiresPermission(anyOf = {Manifest.permission.MANAGE_USERS,
            Manifest.permission.INTERACT_ACROSS_USERS})
    public @NonNull List<UserHandle> getVisibleUsers() {
    public @NonNull Set<UserHandle> getVisibleUsers() {
        ArraySet<UserHandle> result = new ArraySet<>();
        try {
            return mService.getVisibleUsers();
            int[] visibleUserIds = mService.getVisibleUsers();
            if (visibleUserIds != null) {
                for (int userId : visibleUserIds) {
                    result.add(UserHandle.of(userId));
                }
            }
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
        return result;
    }

    /**
+5 −4
Original line number Diff line number Diff line
@@ -1782,7 +1782,7 @@ public class UserManagerService extends IUserManager.Stub {
    }

    @Override
    public List<UserHandle> getVisibleUsers() {
    public int[] getVisibleUsers() {
        if (!hasManageUsersOrPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)) {
            throw new SecurityException("Caller needs MANAGE_USERS or INTERACT_ACROSS_USERS "
                    + "permission to get list of visible users");
@@ -1790,18 +1790,19 @@ public class UserManagerService extends IUserManager.Stub {
        final long ident = Binder.clearCallingIdentity();
        try {
            // TODO(b/2399825580): refactor into UserDisplayAssigner
            IntArray visibleUsers;
            synchronized (mUsersLock) {
                int usersSize = mUsers.size();
                ArrayList<UserHandle> visibleUsers = new ArrayList<>(usersSize);
                visibleUsers = new IntArray();
                for (int i = 0; i < usersSize; i++) {
                    UserInfo ui = mUsers.valueAt(i).info;
                    if (!ui.partial && !ui.preCreated && !mRemovingUserIds.get(ui.id)
                            && mUserVisibilityMediator.isUserVisible(ui.id)) {
                        visibleUsers.add(UserHandle.of(ui.id));
                        visibleUsers.add(ui.id);
                    }
                }
                return visibleUsers;
            }
            return visibleUsers.toArray();
        } finally {
            Binder.restoreCallingIdentity(ident);
        }