Disallow work profiles on non-initial users in headless

Modified 'canHaveProfile' method to ensure we allow work profiles only on initial user and not additional users- in both headless and non-headless environment.For that we can use isMain() as on non-headless, the system user(initial) is main,and on headless the first secondary user(initial) is main.

Test: atest
Bug: 266053489
Fix: 266053489

Change-Id: Ia959213b03ea7b36d113fd13e23fca187fe3f59d
This commit is contained in:
shreyacsingh
2023-01-06 00:40:38 +00:00
parent 6b5bf27065
commit dabd1ade44
2 changed files with 9 additions and 5 deletions

View File

@@ -436,11 +436,7 @@ public class UserInfo implements Parcelable {
if (isProfile() || isGuest() || isRestricted()) {
return false;
}
if (UserManager.isHeadlessSystemUserMode()) {
return id != UserHandle.USER_SYSTEM;
} else {
return id == UserHandle.USER_SYSTEM;
}
return isMain();
}
// TODO(b/142482943): Get rid of this (after removing it from all tests) if feasible.

View File

@@ -22,6 +22,7 @@ import static android.content.pm.UserInfo.FLAG_EPHEMERAL;
import static android.content.pm.UserInfo.FLAG_FULL;
import static android.content.pm.UserInfo.FLAG_GUEST;
import static android.content.pm.UserInfo.FLAG_INITIALIZED;
import static android.content.pm.UserInfo.FLAG_MAIN;
import static android.content.pm.UserInfo.FLAG_MANAGED_PROFILE;
import static android.content.pm.UserInfo.FLAG_PROFILE;
import static android.content.pm.UserInfo.FLAG_RESTRICTED;
@@ -206,6 +207,13 @@ public class UserManagerServiceUserInfoTest {
assertFalse("Switching to a profiles should be disabled", userInfo.supportsSwitchTo());
}
/** Test UserInfo.canHaveProfile for main user */
@Test
public void testCanHaveProfile() throws Exception {
UserInfo userInfo = createUser(100, FLAG_MAIN, null);
assertTrue("Main users can have profile", userInfo.canHaveProfile());
}
/** Tests upgradeIfNecessaryLP (but without locking) for upgrading from version 8 to 9+. */
@Test
public void testUpgradeIfNecessaryLP_9() {