Loading core/java/android/os/IUserManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ interface IUserManager { boolean canAddMoreManagedProfiles(int userId, boolean allowedToRemoveOne); UserInfo getProfileParent(int userId); boolean isSameProfileGroup(int userId, int otherUserHandle); String getUserTypeForUser(int userId); boolean isUserOfType(int userId, in String userType); @UnsupportedAppUsage UserInfo getUserInfo(int userId); String getUserAccount(int userId); Loading core/java/android/os/UserManager.java +14 −18 Original line number Diff line number Diff line Loading @@ -1626,39 +1626,35 @@ public class UserManager { } /** * Returns the calling user's user type. * Returns whether the current user is of the given user type, such as * {@link UserManager#USER_TYPE_FULL_GUEST}. * * // TODO(b/142482943): Decide on the appropriate permission requirements. * * @return the name of the user type, such as {@link UserManager#USER_TYPE_PROFILE_MANAGED}. * @return true if the user is of the given user type. * @hide */ public @NonNull String getUserType() { @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUserOfType(@NonNull String userType) { try { return mService.getUserTypeForUser(UserHandle.myUserId()); return mService.isUserOfType(UserHandle.myUserId(), userType); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } } /** * Returns the given user's user type. * * // TODO(b/142482943): Decide on the appropriate permission requirements. * Requires {@link android.Manifest.permission#MANAGE_USERS} or * {@link android.Manifest.permission#INTERACT_ACROSS_USERS} permission, otherwise the caller * must be in the same profile group of specified user. * Returns whether the given user is of the given user type, such as * {@link UserManager#USER_TYPE_FULL_GUEST}. * * @param userHandle the user handle of the user whose type is being requested. * @return the name of the user's user type, e.g. {@link UserManager#USER_TYPE_PROFILE_MANAGED}, * or {@code null} if there is no such user. * @param userType the name of the user's user type, e.g. * {@link UserManager#USER_TYPE_PROFILE_MANAGED}. * @return true if the userHandle user is of type userType * @hide */ @RequiresPermission(anyOf = {android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional = true) public @Nullable String getUserTypeForUser(@NonNull UserHandle userHandle) { @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUserOfType(@NonNull UserHandle userHandle, @NonNull String userType) { try { return mService.getUserTypeForUser(userHandle.getIdentifier()); return mService.isUserOfType(userHandle.getIdentifier(), userType); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } Loading services/core/java/com/android/server/pm/UserManagerService.java +5 −6 Original line number Diff line number Diff line Loading @@ -1132,14 +1132,13 @@ public class UserManagerService extends IUserManager.Stub { } /** * Returns the user type, e.g. {@link UserManager#USER_TYPE_FULL_GUEST}, of the given userId, * or null if the user doesn't exist. * Returns whether the given user (specified by userId) is of the given user type, such as * {@link UserManager#USER_TYPE_FULL_GUEST}. */ @Override public @Nullable String getUserTypeForUser(@UserIdInt int userId) { // TODO(b/142482943): Decide on the appropriate permission requirements. checkManageOrInteractPermIfCallerInOtherProfileGroup(userId, "getUserTypeForUser"); return getUserTypeNoChecks(userId); public boolean isUserOfType(@UserIdInt int userId, String userType) { checkManageUsersPermission("check user type"); return userType != null && userType.equals(getUserTypeNoChecks(userId)); } /** Loading services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java +13 −13 Original line number Diff line number Diff line Loading @@ -139,18 +139,18 @@ public class UserManagerServiceUserInfoTest { assertEquals("A Name", mUserManagerService.getUserInfo(TEST_ID).name); } /** Test UMS.getUserTypeForUser(). */ /** Test UMS.isUserOfType(). */ @Test public void testGetUserTypeForUser() throws Exception { final String typeSys = mUserManagerService.getUserTypeForUser(UserHandle.USER_SYSTEM); assertTrue("System user was of invalid type " + typeSys, typeSys.equals(USER_TYPE_SYSTEM_HEADLESS) || typeSys.equals(USER_TYPE_FULL_SYSTEM)); public void testIsUserOfType() throws Exception { assertTrue("System user was of invalid type", mUserManagerService.isUserOfType(UserHandle.USER_SYSTEM, USER_TYPE_SYSTEM_HEADLESS) || mUserManagerService.isUserOfType(UserHandle.USER_SYSTEM, USER_TYPE_FULL_SYSTEM)); final int testId = 100; final String typeName = "A type"; UserInfo userInfo = createUser(testId, 0, typeName); mUserManagerService.putUserInfo(userInfo); assertEquals(typeName, mUserManagerService.getUserTypeForUser(testId)); assertTrue(mUserManagerService.isUserOfType(testId, typeName)); } /** Tests upgradeIfNecessaryLP (but without locking) for upgrading from version 8 to 9+. */ Loading @@ -169,22 +169,22 @@ public class UserManagerServiceUserInfoTest { mUserManagerService.upgradeIfNecessaryLP(null, versionToTest - 1); assertEquals(USER_TYPE_PROFILE_MANAGED, mUserManagerService.getUserTypeForUser(100)); assertTrue(mUserManagerService.isUserOfType(100, USER_TYPE_PROFILE_MANAGED)); assertTrue((mUserManagerService.getUserInfo(100).flags & FLAG_PROFILE) != 0); assertEquals(USER_TYPE_FULL_GUEST, mUserManagerService.getUserTypeForUser(101)); assertTrue(mUserManagerService.isUserOfType(101, USER_TYPE_FULL_GUEST)); assertEquals(USER_TYPE_FULL_RESTRICTED, mUserManagerService.getUserTypeForUser(102)); assertTrue(mUserManagerService.isUserOfType(102, USER_TYPE_FULL_RESTRICTED)); assertTrue((mUserManagerService.getUserInfo(102).flags & FLAG_PROFILE) == 0); assertEquals(USER_TYPE_FULL_SECONDARY, mUserManagerService.getUserTypeForUser(103)); assertTrue(mUserManagerService.isUserOfType(103, USER_TYPE_FULL_SECONDARY)); assertTrue((mUserManagerService.getUserInfo(103).flags & FLAG_PROFILE) == 0); assertEquals(USER_TYPE_SYSTEM_HEADLESS, mUserManagerService.getUserTypeForUser(104)); assertTrue(mUserManagerService.isUserOfType(104, USER_TYPE_SYSTEM_HEADLESS)); assertEquals(USER_TYPE_FULL_SYSTEM, mUserManagerService.getUserTypeForUser(105)); assertTrue(mUserManagerService.isUserOfType(105, USER_TYPE_FULL_SYSTEM)); assertEquals(USER_TYPE_FULL_DEMO, mUserManagerService.getUserTypeForUser(106)); assertTrue(mUserManagerService.isUserOfType(106, USER_TYPE_FULL_DEMO)); } /** Creates a UserInfo with the given flags and userType. */ Loading services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -341,8 +341,8 @@ public final class UserManagerTest { assertThat(mUserManager.getUserBadgeNoBackgroundResId(userId)) .isEqualTo(userTypeDetails.getBadgeNoBackground()); assertThat(mUserManager.isProfile(userId)).isEqualTo(userTypeDetails.isProfile()); assertThat(mUserManager.getUserTypeForUser(asHandle(userId))) .isEqualTo(userTypeDetails.getName()); assertThat(mUserManager.isUserOfType(asHandle(userId), userTypeDetails.getName())) .isTrue(); final int badgeIndex = userInfo.profileBadge; assertThat(mUserManager.getUserBadgeColor(userId)).isEqualTo( Loading Loading
core/java/android/os/IUserManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ interface IUserManager { boolean canAddMoreManagedProfiles(int userId, boolean allowedToRemoveOne); UserInfo getProfileParent(int userId); boolean isSameProfileGroup(int userId, int otherUserHandle); String getUserTypeForUser(int userId); boolean isUserOfType(int userId, in String userType); @UnsupportedAppUsage UserInfo getUserInfo(int userId); String getUserAccount(int userId); Loading
core/java/android/os/UserManager.java +14 −18 Original line number Diff line number Diff line Loading @@ -1626,39 +1626,35 @@ public class UserManager { } /** * Returns the calling user's user type. * Returns whether the current user is of the given user type, such as * {@link UserManager#USER_TYPE_FULL_GUEST}. * * // TODO(b/142482943): Decide on the appropriate permission requirements. * * @return the name of the user type, such as {@link UserManager#USER_TYPE_PROFILE_MANAGED}. * @return true if the user is of the given user type. * @hide */ public @NonNull String getUserType() { @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUserOfType(@NonNull String userType) { try { return mService.getUserTypeForUser(UserHandle.myUserId()); return mService.isUserOfType(UserHandle.myUserId(), userType); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } } /** * Returns the given user's user type. * * // TODO(b/142482943): Decide on the appropriate permission requirements. * Requires {@link android.Manifest.permission#MANAGE_USERS} or * {@link android.Manifest.permission#INTERACT_ACROSS_USERS} permission, otherwise the caller * must be in the same profile group of specified user. * Returns whether the given user is of the given user type, such as * {@link UserManager#USER_TYPE_FULL_GUEST}. * * @param userHandle the user handle of the user whose type is being requested. * @return the name of the user's user type, e.g. {@link UserManager#USER_TYPE_PROFILE_MANAGED}, * or {@code null} if there is no such user. * @param userType the name of the user's user type, e.g. * {@link UserManager#USER_TYPE_PROFILE_MANAGED}. * @return true if the userHandle user is of type userType * @hide */ @RequiresPermission(anyOf = {android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional = true) public @Nullable String getUserTypeForUser(@NonNull UserHandle userHandle) { @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUserOfType(@NonNull UserHandle userHandle, @NonNull String userType) { try { return mService.getUserTypeForUser(userHandle.getIdentifier()); return mService.isUserOfType(userHandle.getIdentifier(), userType); } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } Loading
services/core/java/com/android/server/pm/UserManagerService.java +5 −6 Original line number Diff line number Diff line Loading @@ -1132,14 +1132,13 @@ public class UserManagerService extends IUserManager.Stub { } /** * Returns the user type, e.g. {@link UserManager#USER_TYPE_FULL_GUEST}, of the given userId, * or null if the user doesn't exist. * Returns whether the given user (specified by userId) is of the given user type, such as * {@link UserManager#USER_TYPE_FULL_GUEST}. */ @Override public @Nullable String getUserTypeForUser(@UserIdInt int userId) { // TODO(b/142482943): Decide on the appropriate permission requirements. checkManageOrInteractPermIfCallerInOtherProfileGroup(userId, "getUserTypeForUser"); return getUserTypeNoChecks(userId); public boolean isUserOfType(@UserIdInt int userId, String userType) { checkManageUsersPermission("check user type"); return userType != null && userType.equals(getUserTypeNoChecks(userId)); } /** Loading
services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java +13 −13 Original line number Diff line number Diff line Loading @@ -139,18 +139,18 @@ public class UserManagerServiceUserInfoTest { assertEquals("A Name", mUserManagerService.getUserInfo(TEST_ID).name); } /** Test UMS.getUserTypeForUser(). */ /** Test UMS.isUserOfType(). */ @Test public void testGetUserTypeForUser() throws Exception { final String typeSys = mUserManagerService.getUserTypeForUser(UserHandle.USER_SYSTEM); assertTrue("System user was of invalid type " + typeSys, typeSys.equals(USER_TYPE_SYSTEM_HEADLESS) || typeSys.equals(USER_TYPE_FULL_SYSTEM)); public void testIsUserOfType() throws Exception { assertTrue("System user was of invalid type", mUserManagerService.isUserOfType(UserHandle.USER_SYSTEM, USER_TYPE_SYSTEM_HEADLESS) || mUserManagerService.isUserOfType(UserHandle.USER_SYSTEM, USER_TYPE_FULL_SYSTEM)); final int testId = 100; final String typeName = "A type"; UserInfo userInfo = createUser(testId, 0, typeName); mUserManagerService.putUserInfo(userInfo); assertEquals(typeName, mUserManagerService.getUserTypeForUser(testId)); assertTrue(mUserManagerService.isUserOfType(testId, typeName)); } /** Tests upgradeIfNecessaryLP (but without locking) for upgrading from version 8 to 9+. */ Loading @@ -169,22 +169,22 @@ public class UserManagerServiceUserInfoTest { mUserManagerService.upgradeIfNecessaryLP(null, versionToTest - 1); assertEquals(USER_TYPE_PROFILE_MANAGED, mUserManagerService.getUserTypeForUser(100)); assertTrue(mUserManagerService.isUserOfType(100, USER_TYPE_PROFILE_MANAGED)); assertTrue((mUserManagerService.getUserInfo(100).flags & FLAG_PROFILE) != 0); assertEquals(USER_TYPE_FULL_GUEST, mUserManagerService.getUserTypeForUser(101)); assertTrue(mUserManagerService.isUserOfType(101, USER_TYPE_FULL_GUEST)); assertEquals(USER_TYPE_FULL_RESTRICTED, mUserManagerService.getUserTypeForUser(102)); assertTrue(mUserManagerService.isUserOfType(102, USER_TYPE_FULL_RESTRICTED)); assertTrue((mUserManagerService.getUserInfo(102).flags & FLAG_PROFILE) == 0); assertEquals(USER_TYPE_FULL_SECONDARY, mUserManagerService.getUserTypeForUser(103)); assertTrue(mUserManagerService.isUserOfType(103, USER_TYPE_FULL_SECONDARY)); assertTrue((mUserManagerService.getUserInfo(103).flags & FLAG_PROFILE) == 0); assertEquals(USER_TYPE_SYSTEM_HEADLESS, mUserManagerService.getUserTypeForUser(104)); assertTrue(mUserManagerService.isUserOfType(104, USER_TYPE_SYSTEM_HEADLESS)); assertEquals(USER_TYPE_FULL_SYSTEM, mUserManagerService.getUserTypeForUser(105)); assertTrue(mUserManagerService.isUserOfType(105, USER_TYPE_FULL_SYSTEM)); assertEquals(USER_TYPE_FULL_DEMO, mUserManagerService.getUserTypeForUser(106)); assertTrue(mUserManagerService.isUserOfType(106, USER_TYPE_FULL_DEMO)); } /** Creates a UserInfo with the given flags and userType. */ Loading
services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -341,8 +341,8 @@ public final class UserManagerTest { assertThat(mUserManager.getUserBadgeNoBackgroundResId(userId)) .isEqualTo(userTypeDetails.getBadgeNoBackground()); assertThat(mUserManager.isProfile(userId)).isEqualTo(userTypeDetails.isProfile()); assertThat(mUserManager.getUserTypeForUser(asHandle(userId))) .isEqualTo(userTypeDetails.getName()); assertThat(mUserManager.isUserOfType(asHandle(userId), userTypeDetails.getName())) .isTrue(); final int badgeIndex = userInfo.profileBadge; assertThat(mUserManager.getUserBadgeColor(userId)).isEqualTo( Loading