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

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

Merge "Minor changes on HsumBootUserInitializer and tests." into main

parents 334474cd 6f46dad1
Loading
Loading
Loading
Loading
+28 −20
Original line number Diff line number Diff line
@@ -157,30 +157,35 @@ final class HsumBootUserInitializer {
        }

        if (mShouldAlwaysHaveMainUser) {
            t.traceBegin("createMainUserIfNeeded");
            createMainUserIfNeeded();
            t.traceEnd();
            createMainUserIfNeeded(t);
            return;
        }

        if (mShouldCreateInitialUser) {
            t.traceBegin("createAdminUserIfNeeded");
            createAdminUserIfNeeded();
            t.traceEnd();
            createAdminUserIfNeeded(t);
            return;
        }
        Slogf.d(TAG, "Not checking if initial user exists (should be handled externally)");
    }

    private void createMainUserIfNeeded() {
        final int mainUser = mUmi.getMainUserId();
        if (mainUser != UserHandle.USER_NULL) {
            Slogf.d(TAG, "Found existing MainUser, userId=%d", mainUser);
    private void createMainUserIfNeeded(TimingsTraceAndSlog t) {
        // Always tracing as it used to be done by the caller
        t.traceBegin("createMainUserIfNeeded");
        try {
            int mainUserId = mUmi.getMainUserId();
            if (mainUserId != UserHandle.USER_NULL) {
                Slogf.d(TAG, "createMainUserIfNeeded(): found MainUser (userId=%d)", mainUserId);
                return;
            }
            createInitialUser(/* isMainUser= */ true);
        } finally {
            t.traceEnd();
        }
    }

    private void createAdminUserIfNeeded() {
    private void createAdminUserIfNeeded(TimingsTraceAndSlog t) {
        t.traceBegin("createAdminUserIfNeeded");
        try {
            int[] userIds = mUmi.getUserIds();
            if (userIds != null && userIds.length > 1) {
                if (DEBUG) {
@@ -190,6 +195,9 @@ final class HsumBootUserInitializer {
                return;
            }
            createInitialUser(/* isMainUser= */ false);
        } finally {
            t.traceEnd();
        }
    }

    private void createInitialUser(boolean isMainUser) {
+14 −17
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import static android.os.UserHandle.USER_SYSTEM;
import static com.android.server.HsumBootUserInitializerTest.ExpectedResult.ADMIN_USER_CREATED;
import static com.android.server.HsumBootUserInitializerTest.ExpectedResult.MAIN_USER_CREATED;
import static com.android.server.HsumBootUserInitializerTest.ExpectedResult.NO_USER_CREATED;

import static com.android.server.HsumBootUserInitializerTest.InitialUsers.SYSTEM_AND_MAIN;
import static com.android.server.HsumBootUserInitializerTest.InitialUsers.SYSTEM_AND_NON_MAIN;
import static com.android.server.HsumBootUserInitializerTest.InitialUsers.SYSTEM_ONLY;
@@ -106,8 +105,9 @@ public final class HsumBootUserInitializerTest {
    private final InitialUsers mInitialUsers;
    private final ExpectedResult mExpectedResult;

    /** Useless javadoc to make checkstyle happy... */
    @Parameters(name = "{index}: hasMain={0},createInitial={1},initial={2},result={3}")
    public static Collection<Object[]> data() {
    public static Collection<Object[]> junitParametersPassedToConstructor() {
        return Arrays.asList(new Object[][] {
                // shouldAlwaysHaveMainUser false, shouldCreateInitialUser false
                { false, false, SYSTEM_ONLY, NO_USER_CREATED },
@@ -184,17 +184,19 @@ public final class HsumBootUserInitializerTest {
    @Test
    @EnableFlags(FLAG_CREATE_INITIAL_USER)
    public void testFlagEnabled() {
        var initializer =
                createHsumBootUserInitializer(mShouldAlwaysHaveMainUser, mShouldCreateInitialUser);
        var initializer = createHsumBootUserInitializer(mShouldAlwaysHaveMainUser,
                mShouldCreateInitialUser);

        initializer.init(mTracer);

        switch (mExpectedResult) {
            case ADMIN_USER_CREATED:
                expectAdminUserCreated();
                expectSetBootUserId(NON_SYSTEM_USER_ID);
                break;
            case MAIN_USER_CREATED:
                expectMainUserCreated();
                expectSetBootUserId(MAIN_USER_ID);
                break;
            case NO_USER_CREATED:
                expectNoUserCreated();
@@ -219,15 +221,10 @@ public final class HsumBootUserInitializerTest {
                break;
            case MAIN_USER_CREATED:
                expectMainUserCreated();
                break;
        }
    }

    private HsumBootUserInitializer createHsumBootUserInitializer(
            boolean shouldAlwaysHaveMainUser) {
        return createHsumBootUserInitializer(shouldAlwaysHaveMainUser,
                /* shouldCreateInitialUser= */ false);
    }

    private HsumBootUserInitializer createHsumBootUserInitializer(
            boolean shouldAlwaysHaveMainUser, boolean shouldCreateInitialUser) {
        mTracer = new TimingsTraceAndSlog(TAG);
@@ -310,13 +307,13 @@ public final class HsumBootUserInitializerTest {

    // NOTE: enums below must be public to be static imported

    public static enum InitialUsers {
    public enum InitialUsers {
        SYSTEM_ONLY,
        SYSTEM_AND_MAIN,
        SYSTEM_AND_NON_MAIN
    }

    public static enum ExpectedResult {
    public enum ExpectedResult {
        NO_USER_CREATED,
        MAIN_USER_CREATED,
        ADMIN_USER_CREATED