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

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

Merge "Minor improvements on FrameworksMockingServicesTests:" into main

parents ff06dd32 ed198b87
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import android.accounts.Account;
import android.accounts.AccountManager;
import android.annotation.ColorRes;
import android.annotation.DrawableRes;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
@@ -196,6 +197,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -350,8 +353,17 @@ public class UserManagerService extends IUserManager.Stub {
    private static final String TRON_DEMO_CREATED = "users_demo_created";

    // The boot user strategy for HSUM.
    private static final int BOOT_TO_PREVIOUS_OR_FIRST_SWITCHABLE_USER = 0;
    private static final int BOOT_TO_HSU_FOR_PROVISIONED_DEVICE = 1;
    @VisibleForTesting
    static final int BOOT_TO_PREVIOUS_OR_FIRST_SWITCHABLE_USER = 0;
    @VisibleForTesting
    static final int BOOT_TO_HSU_FOR_PROVISIONED_DEVICE = 1;

    @Retention(RetentionPolicy.SOURCE)
    @IntDef(flag = false, prefix = { "BOOT_TO_" }, value = {
            BOOT_TO_PREVIOUS_OR_FIRST_SWITCHABLE_USER,
            BOOT_TO_HSU_FOR_PROVISIONED_DEVICE})
    @VisibleForTesting
    @interface BootStrategy {}

    private final Context mContext;
    private final PackageManagerService mPm;
+24 −15
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@ import static android.os.UserManager.USER_TYPE_PROFILE_SUPERVISING;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.server.pm.UserManagerService.BOOT_TO_HSU_FOR_PROVISIONED_DEVICE;
import static com.android.server.pm.UserManagerService.BOOT_TO_PREVIOUS_OR_FIRST_SWITCHABLE_USER;

import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
@@ -85,6 +87,7 @@ import com.android.modules.utils.testing.ExtendedMockitoRule;
import com.android.server.LocalServices;
import com.android.server.am.UserState;
import com.android.server.locksettings.LockSettingsInternal;
import com.android.server.pm.UserManagerService.BootStrategy;
import com.android.server.pm.UserManagerService.UserData;
import com.android.server.storage.DeviceStorageMonitorInternal;

@@ -96,7 +99,6 @@ import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

@@ -199,7 +201,6 @@ public final class UserManagerServiceMockedTest {
    @Before
    @UiThreadTest // Needed to initialize main handler
    public void setFixtures() {
        MockitoAnnotations.initMocks(this);
        mSpiedContext = spy(mRealContext);

        // Disable binder caches in this process.
@@ -220,10 +221,9 @@ public final class UserManagerServiceMockedTest {
        // Called when getting boot user. config_hsumBootStrategy is 0 by default.
        mSpyResources = spy(mSpiedContext.getResources());
        when(mSpiedContext.getResources()).thenReturn(mSpyResources);
        doReturn(0)
                .when(mSpyResources)
                .getInteger(com.android.internal.R.integer.config_hsumBootStrategy);
        doReturn(mSpyResources).when(() -> Resources.getSystem());
        mockHsumBootStrategy(BOOT_TO_PREVIOUS_OR_FIRST_SWITCHABLE_USER);

        doReturn(mSpyResources).when(Resources::getSystem);

        // Must construct UserManagerService in the UiThread
        mTestDir = new File(mRealContext.getDataDir(), "umstest");
@@ -942,9 +942,7 @@ public final class UserManagerServiceMockedTest {
        addUser(USER_ID);
        addUser(OTHER_USER_ID);
        mockProvisionedDevice(true);
        doReturn(1)
                .when(mSpyResources)
                .getInteger(com.android.internal.R.integer.config_hsumBootStrategy);
        mockHsumBootStrategy(BOOT_TO_HSU_FOR_PROVISIONED_DEVICE);

        assertThat(mUms.getBootUser()).isEqualTo(UserHandle.USER_SYSTEM);
    }
@@ -955,9 +953,7 @@ public final class UserManagerServiceMockedTest {
        addUser(USER_ID);
        addUser(OTHER_USER_ID);
        mockProvisionedDevice(false);
        doReturn(1)
                .when(mSpyResources)
                .getInteger(com.android.internal.R.integer.config_hsumBootStrategy);
        mockHsumBootStrategy(BOOT_TO_HSU_FOR_PROVISIONED_DEVICE);
        // Even if the headless system user switchable flag is true, the boot user should be the
        // first switchable full user.
        mockCanSwitchToHeadlessSystemUser(true);
@@ -971,9 +967,7 @@ public final class UserManagerServiceMockedTest {
        setSystemUserHeadless(true);
        removeNonSystemUsers();
        mockProvisionedDevice(false);
        doReturn(1)
                .when(mSpyResources)
                .getInteger(com.android.internal.R.integer.config_hsumBootStrategy);
        mockHsumBootStrategy(BOOT_TO_HSU_FOR_PROVISIONED_DEVICE);

        assertThrows(ServiceSpecificException.class,
                () -> mUms.getBootUser());
@@ -1376,11 +1370,26 @@ public final class UserManagerServiceMockedTest {
    }

    private void mockCanSwitchToHeadlessSystemUser(boolean canSwitch) {
        boolean previousValue = mSpyResources
                .getBoolean(com.android.internal.R.bool.config_canSwitchToHeadlessSystemUser);

        Log.d(TAG, "mockCanSwitchToHeadlessSystemUser(): will return " + canSwitch + " instad of "
                + previousValue);
        doReturn(canSwitch)
                .when(mSpyResources)
                .getBoolean(com.android.internal.R.bool.config_canSwitchToHeadlessSystemUser);
    }

    private void mockHsumBootStrategy(@BootStrategy int strategy) {
        int previousValue = mSpyResources
                .getInteger(com.android.internal.R.integer.config_hsumBootStrategy);
        Log.d(TAG,
                "mockHsumBootStrategy(): will return " + strategy + " instead of " + previousValue);
        doReturn(strategy)
                .when(mSpyResources)
                .getInteger(com.android.internal.R.integer.config_hsumBootStrategy);
    }

    private void mockUserIsInCall(boolean isInCall) {
        when(mTelecomManager.isInCall()).thenReturn(isInCall);
    }