Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52820d8c authored by Felipe Leme's avatar Felipe Leme
Browse files

Changed setMainUser() so it checks for create_initial_user flag.

Ideally it should only check for demote_main_user, but then an admin
user couldn't be promoted when rolling back that flag.

Test:  atest FrameworksMockingServicesTests --test-filter=".*UserManagerServiceMockedTest.*testSetMainUser.*"
Fixes: 441582871
Flag: android.multiuser.create_initial_user

Change-Id: If719068a1f5ab3acd1eb130abbe20d716502f870
parent 109ce60c
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -9187,7 +9187,10 @@ public class UserManagerService extends IUserManager.Stub {
     * @return whether it succeeded.
     */
    boolean setMainUser(@UserIdInt int userId) {
        if (!android.multiuser.Flags.demoteMainUser()) {
        // NOTE: ideally it should check just for demoteMainUser(), but then it wouldn't allow the
        // main user to be promoted when it's needed while rolling back this flag
        if (!android.multiuser.Flags.demoteMainUser()
                && !android.multiuser.Flags.createInitialUser()) {
            Slogf.d(LOG_TAG, "setMainUser(%d): ignoring because flag is disabled", userId);
            return false;
        }
+11 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static android.content.pm.UserInfo.FLAG_ADMIN;
import static android.content.pm.UserInfo.FLAG_FULL;
import static android.content.pm.UserInfo.flagsToString;
import static android.multiuser.Flags.FLAG_BLOCK_PRIVATE_SPACE_CREATION;
import static android.multiuser.Flags.FLAG_CREATE_INITIAL_USER;
import static android.multiuser.Flags.FLAG_DEMOTE_MAIN_USER;
import static android.multiuser.Flags.FLAG_DISALLOW_REMOVING_LAST_ADMIN_USER;
import static android.multiuser.Flags.FLAG_ENABLE_PRIVATE_SPACE_FEATURES;
@@ -1546,6 +1547,14 @@ public final class UserManagerServiceMockedTest {
        expectUserJourneyLogged(userId, USER_JOURNEY_PROMOTE_MAIN_USER);
    }

    @Test
    @DisableFlags(FLAG_DEMOTE_MAIN_USER)
    @EnableFlags(FLAG_CREATE_INITIAL_USER)
    public void testSetMainUser_secondaryFlag() {
        // Should behave the same as when the "primary" flag is enabled
        testSetMainUser();
    }

    @Test
    @EnableFlags(FLAG_DEMOTE_MAIN_USER)
    public void testSetMainUser_hasMainUser() {
@@ -1596,8 +1605,8 @@ public final class UserManagerServiceMockedTest {
    }

    @Test
    @DisableFlags(FLAG_DEMOTE_MAIN_USER)
    public void testSetMainUser_flagDisabled() {
    @DisableFlags({FLAG_DEMOTE_MAIN_USER, FLAG_CREATE_INITIAL_USER})
    public void testSetMainUser_flagDemoteMainUserDisabled() {
        assumeDoesntHaveMainUser();
        var adminUser = createAdminUser();
        int userId = adminUser.id;