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

Commit 6f46dad1 authored by Felipe Leme's avatar Felipe Leme
Browse files

Minor changes on HsumBootUserInitializer and tests.

- Removed unused method.
- Moved tracing calls inside the method.
- Explicitly call expectSetBootUserId() when needed.
- Minor formating fixes that were skipped in the first CL.
- Removed redundant static keyword on enums

Test: atest FrameworksMockingServicesTests:HsumBootUserInitializerTest
Bug: 402486365
Flag: android.multiuser.create_initial_user

Change-Id: I6807d6ab12a16cc5a892d1bdca91a4fd3b761fe2
parent 777369b0
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