diff options
-rw-r--r-- | shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java index d4cc6ef32..9464c2f77 100644 --- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java +++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java @@ -10,6 +10,7 @@ import static android.os.Build.VERSION_CODES.R; import static org.robolectric.shadow.api.Shadow.directlyOn; import android.Manifest.permission; +import android.annotation.UserIdInt; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.UserInfo; @@ -174,8 +175,8 @@ public class ShadowUserManager { protected boolean isManagedProfile() { if (enforcePermissions && !hasManageUsersPermission()) { throw new SecurityException( - "You need MANAGE_USERS permission to: check if specified user a " + - "managed profile outside your profile group"); + "You need MANAGE_USERS permission to: check if specified user a " + + "managed profile outside your profile group"); } return managedProfile; } @@ -277,6 +278,16 @@ public class ShadowUserManager { return userProfiles.inverse().get(serialNumber); } + /** + * @see #addProfile(int, int, String, int) + * @see #addUser(int, String, int) + */ + @Implementation + protected int getUserSerialNumber(@UserIdInt int userHandle) { + Long result = userProfiles.get(UserHandle.of(userHandle)); + return result != null ? result.intValue() : -1; + } + private boolean hasManageUsersPermission() { return context.getPackageManager().checkPermission(permission.MANAGE_USERS, context.getPackageName()) == PackageManager.PERMISSION_GRANTED; } @@ -426,8 +437,8 @@ public class ShadowUserManager { UserState state = userState.get(handle.getIdentifier()); if (state == UserState.STATE_RUNNING_LOCKED - || state == UserState.STATE_RUNNING_UNLOCKED - || state == UserState.STATE_RUNNING_UNLOCKING) { + || state == UserState.STATE_RUNNING_UNLOCKED + || state == UserState.STATE_RUNNING_UNLOCKING) { return true; } else { return false; @@ -443,9 +454,9 @@ public class ShadowUserManager { UserState state = userState.get(handle.getIdentifier()); if (state == UserState.STATE_RUNNING_LOCKED - || state == UserState.STATE_RUNNING_UNLOCKED - || state == UserState.STATE_RUNNING_UNLOCKING - || state == UserState.STATE_STOPPING) { + || state == UserState.STATE_RUNNING_UNLOCKED + || state == UserState.STATE_RUNNING_UNLOCKING + || state == UserState.STATE_STOPPING) { return true; } else { return false; @@ -533,16 +544,16 @@ public class ShadowUserManager { */ public void addUser(int id, String name, int flags) { UserHandle userHandle = - id == UserHandle.USER_SYSTEM ? Process.myUserHandle() : new UserHandle(id); + id == UserHandle.USER_SYSTEM ? Process.myUserHandle() : new UserHandle(id); addUserProfile(userHandle); setSerialNumberForUser(userHandle, (long) id); profiles.putIfAbsent(id, new ArrayList<>()); userInfoMap.put(id, new UserInfo(id, name, flags)); userPidMap.put( - id, - id == UserHandle.USER_SYSTEM - ? Process.myUid() - : id * UserHandle.PER_USER_RANGE + ShadowProcess.getRandomApplicationUid()); + id, + id == UserHandle.USER_SYSTEM + ? Process.myUid() + : id * UserHandle.PER_USER_RANGE + ShadowProcess.getRandomApplicationUid()); } @Resetter @@ -554,4 +565,4 @@ public class ShadowUserManager { userPidMap.put(UserHandle.USER_SYSTEM, Process.myUid()); } } -} +}
\ No newline at end of file |