Add tests for blocking hidden profile visibility in CPA Apis
Also fix a bug in getProfilesExcludingHidden in UMService
Test: atest FrameworksMockingServicesTests:com.android.server.pm.UserManagerServiceTest
Test: atest com.android.server.pm.UserManagerTest
Bug: 316362775
Change-Id: I3901ecdb60a17033734d8c2b7b26fed5d411a2ee
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 796edde..f222fe9 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -1466,7 +1466,7 @@
if (userType != null && !userType.equals(profile.userType)) {
continue;
}
- if (excludeHidden && isProfileHidden(userId)) {
+ if (excludeHidden && isProfileHidden(profile.id)) {
continue;
}
result.add(profile.id);
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
index 656bc71..7bbcd50 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
@@ -722,6 +722,17 @@
Mockito.verify(mKeyguardManager, never()).addKeyguardLockedStateListener(any(), any());
}
+ @Test
+ public void testGetProfileIdsExcludingHidden() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_HIDING_PROFILES);
+ UserInfo privateProfileUser =
+ mUms.createProfileForUserEvenWhenDisallowedWithThrow("TestPrivateProfile",
+ USER_TYPE_PROFILE_PRIVATE, 0, 0, null);
+ for (int id : mUms.getProfileIdsExcludingHidden(0, true)) {
+ assertThat(id).isNotEqualTo(privateProfileUser.id);
+ }
+ }
+
/**
* Returns true if the user's XML file has Default restrictions
* @param userId Id of the user.
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
index df2069e..7f7cc35 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -1729,6 +1729,21 @@
mUserManager.removeUser(userInfo.id);
}
+ @Test
+ @RequiresFlagsEnabled(android.multiuser.Flags.FLAG_ENABLE_HIDING_PROFILES)
+ public void testGetProfileIdsExcludingHidden() throws Exception {
+ int mainUserId = mUserManager.getMainUser().getIdentifier();
+ final UserInfo profile = createProfileForUser("Profile",
+ UserManager.USER_TYPE_PROFILE_PRIVATE, mainUserId);
+
+ final int[] allProfiles = mUserManager.getProfileIds(mainUserId, /* enabledOnly */ false);
+ final int[] profilesExcludingHidden = mUserManager.getProfileIdsExcludingHidden(
+ mainUserId, /* enabledOnly */ false);
+
+ assertThat(allProfiles).asList().contains(profile.id);
+ assertThat(profilesExcludingHidden).asList().doesNotContain(profile.id);
+ }
+
private String generateLongString() {
String partialString = "Test Name Test Name Test Name Test Name Test Name Test Name Test "
+ "Name Test Name Test Name Test Name "; //String of length 100