Merge "Deprecated UserManager.getUsers(excludeDying) / added getAliveUsers()"

This commit is contained in:
Treehugger Robot 2020-12-01 16:52:45 +00:00 committed by Gerrit Code Review
commit c0b44fca8b
6 changed files with 41 additions and 15 deletions

View File

@ -3172,28 +3172,55 @@ public class UserManager {
}
/**
* Returns information for all users on this device, including ones marked for deletion.
* To retrieve only users that are alive, use {@link #getUsers(boolean)}.
* Returns information for all fully-created users on this device, including ones marked for
* deletion.
*
* <p>To retrieve only users that are not marked for deletion, use {@link #getAliveUsers()}.
*
* <p>To retrieve *all* users (including partial and pre-created users), use
* {@link #getUsers(boolean, boolean, boolean)) getUsers(false, false, false)}.
*
* <p>To retrieve a more specific list of users, use
* {@link #getUsers(boolean, boolean, boolean)}.
*
* @return the list of users that were created.
*
* @return the list of users that exist on the device.
* @hide
*/
@UnsupportedAppUsage
@RequiresPermission(android.Manifest.permission.MANAGE_USERS)
public List<UserInfo> getUsers() {
return getUsers(/* excludeDying= */ false);
return getUsers(/*excludePartial= */ true, /* excludeDying= */ false,
/* excludePreCreated= */ true);
}
/**
* Returns information for all users on this device. Requires
* {@link android.Manifest.permission#MANAGE_USERS} permission.
* Returns information for all "usable" users on this device (i.e, it excludes users that are
* marked for deletion, pre-created users, etc...).
*
* <p>To retrieve all fully-created users, use {@link #getUsers()}.
*
* <p>To retrieve a more specific list of users, use
* {@link #getUsers(boolean, boolean, boolean)}.
*
* @param excludeDying specify if the list should exclude users being
* removed.
* @return the list of users that were created.
* @hide
*/
@RequiresPermission(android.Manifest.permission.MANAGE_USERS)
public @NonNull List<UserInfo> getAliveUsers() {
return getUsers(/*excludePartial= */ true, /* excludeDying= */ true,
/* excludePreCreated= */ true);
}
/**
* @deprecated use {@link #getAliveUsers()} for {@code getUsers(true)}, or
* {@link #getUsers()} for @code getUsers(false)}.
*
* @hide
*/
@Deprecated
@UnsupportedAppUsage
@RequiresPermission(android.Manifest.permission.MANAGE_USERS)
public @NonNull List<UserInfo> getUsers(boolean excludeDying) {
return getUsers(/*excludePartial= */ true, excludeDying,
/* excludePreCreated= */ true);

View File

@ -174,7 +174,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
netdPermsUids.put(uid, netdPermsUids.get(uid) | otherNetdPerms);
}
List<UserInfo> users = mUserManager.getUsers(true); // exclude dying users
List<UserInfo> users = mUserManager.getAliveUsers();
if (users != null) {
for (UserInfo user : users) {
mUsers.add(user.id);

View File

@ -1500,7 +1500,7 @@ public class Vpn {
final long token = Binder.clearCallingIdentity();
List<UserInfo> users;
try {
users = UserManager.get(mContext).getUsers(true);
users = UserManager.get(mContext).getAliveUsers();
} finally {
Binder.restoreCallingIdentity(token);
}

View File

@ -1233,7 +1233,7 @@ public class ConnectivityServiceTest {
MockitoAnnotations.initMocks(this);
when(mMetricsService.defaultNetworkMetrics()).thenReturn(mDefaultNetworkMetrics);
when(mUserManager.getUsers(eq(true))).thenReturn(
when(mUserManager.getAliveUsers()).thenReturn(
Arrays.asList(new UserInfo[] {
new UserInfo(VPN_USER, "", 0),
}));

View File

@ -123,7 +123,7 @@ public class PermissionMonitorTest {
MockitoAnnotations.initMocks(this);
when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mContext.getSystemService(eq(Context.USER_SERVICE))).thenReturn(mUserManager);
when(mUserManager.getUsers(eq(true))).thenReturn(
when(mUserManager.getAliveUsers()).thenReturn(
Arrays.asList(new UserInfo[] {
new UserInfo(MOCK_USER1, "", 0),
new UserInfo(MOCK_USER2, "", 0),

View File

@ -1325,15 +1325,14 @@ public class VpnTest {
* @see UserManagerService#getUsers(boolean)
*/
doAnswer(invocation -> {
final boolean excludeDying = (boolean) invocation.getArguments()[0];
final ArrayList<UserInfo> result = new ArrayList<>(users.length);
for (UserInfo ui : users) {
if (!excludeDying || (ui.isEnabled() && !ui.partial)) {
if (ui.isEnabled() && !ui.partial) {
result.add(ui);
}
}
return result;
}).when(mUserManager).getUsers(anyBoolean());
}).when(mUserManager).getAliveUsers();
doAnswer(invocation -> {
final int id = (int) invocation.getArguments()[0];