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

Commit f2dbc34c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Changed setMainUser() so it checks for create_initial_user flag." into main

parents 08a0fc68 52820d8c
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -9223,7 +9223,10 @@ public class UserManagerService extends IUserManager.Stub {
     * @return whether it succeeded.
     * @return whether it succeeded.
     */
     */
    boolean setMainUser(@UserIdInt int userId) {
    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);
            Slogf.d(LOG_TAG, "setMainUser(%d): ignoring because flag is disabled", userId);
            return false;
            return false;
        }
        }
+11 −2
Original line number Original line 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.FLAG_FULL;
import static android.content.pm.UserInfo.flagsToString;
import static android.content.pm.UserInfo.flagsToString;
import static android.multiuser.Flags.FLAG_BLOCK_PRIVATE_SPACE_CREATION;
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_DEMOTE_MAIN_USER;
import static android.multiuser.Flags.FLAG_DISALLOW_REMOVING_LAST_ADMIN_USER;
import static android.multiuser.Flags.FLAG_DISALLOW_REMOVING_LAST_ADMIN_USER;
import static android.multiuser.Flags.FLAG_ENABLE_PRIVATE_SPACE_FEATURES;
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);
        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
    @Test
    @EnableFlags(FLAG_DEMOTE_MAIN_USER)
    @EnableFlags(FLAG_DEMOTE_MAIN_USER)
    public void testSetMainUser_hasMainUser() {
    public void testSetMainUser_hasMainUser() {
@@ -1596,8 +1605,8 @@ public final class UserManagerServiceMockedTest {
    }
    }


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