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

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

Merge changes from topic "boot-with-user-0" into main

* changes:
  Boot to headless system user if config_bootToHeadlessSystemUser is true
  Create config_bootToHeadlessSystemUser to allow to boot to headless system user
parents cecce414 3742c3c7
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -3080,6 +3080,11 @@
    <!-- Whether UI for multi user should be shown -->
    <bool name="config_enableMultiUserUI">false</bool>

    <!-- Whether to boot system with the headless system user, i.e. user 0. If set to true,
         system will be booted with the headless system user, or user 0. It has no effect if device
         is not in Headless System User Mode (HSUM). -->
    <bool name="config_bootToHeadlessSystemUser">false</bool>

    <!-- Whether multiple admins are allowed on the device. If set to true, new users can be created
         with admin privileges and admin privileges can be granted/revoked from existing users. -->
    <bool name="config_enableMultipleAdmins">false</bool>
+1 −0
Original line number Diff line number Diff line
@@ -363,6 +363,7 @@
  <java-symbol type="bool" name="config_canSwitchToHeadlessSystemUser"/>
  <java-symbol type="bool" name="config_enableMultiUserUI"/>
  <java-symbol type="bool" name="config_enableMultipleAdmins"/>
  <java-symbol type="bool" name="config_bootToHeadlessSystemUser"/>
  <java-symbol type="bool" name="config_omnipresentCommunalUser"/>
  <java-symbol type="bool" name="config_enableNewAutoSelectNetworkUI"/>
  <java-symbol type="bool" name="config_disableUsbPermissionDialogs"/>
+4 −0
Original line number Diff line number Diff line
@@ -1372,6 +1372,10 @@ public class UserManagerService extends IUserManager.Stub {
        }

        if (isHeadlessSystemUserMode()) {
            if (mContext.getResources()
                    .getBoolean(com.android.internal.R.bool.config_bootToHeadlessSystemUser)) {
                return UserHandle.USER_SYSTEM;
            }
            // Return the previous foreground user, if there is one.
            final int previousUser = getPreviousFullUserToEnterForeground();
            if (previousUser != UserHandle.USER_NULL) {
+19 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import android.app.KeyguardManager;
import android.content.Context;
import android.content.pm.PackageManagerInternal;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.multiuser.Flags;
import android.os.PowerManager;
import android.os.ServiceSpecificException;
@@ -152,6 +153,7 @@ public final class UserManagerServiceTest {
    private File mTestDir;

    private Context mSpiedContext;
    private Resources mSpyResources;

    private @Mock PackageManagerService mMockPms;
    private @Mock UserDataPreparer mMockUserDataPreparer;
@@ -193,6 +195,13 @@ public final class UserManagerServiceTest {
        doNothing().when(mSpiedContext).sendBroadcastAsUser(any(), any(), any());
        mockIsLowRamDevice(false);

        // Called when getting boot user. config_bootToHeadlessSystemUser is false by default.
        mSpyResources = spy(mSpiedContext.getResources());
        when(mSpiedContext.getResources()).thenReturn(mSpyResources);
        doReturn(false)
                .when(mSpyResources)
                .getBoolean(com.android.internal.R.bool.config_bootToHeadlessSystemUser);

        // Must construct UserManagerService in the UiThread
        mTestDir = new File(mRealContext.getDataDir(), "umstest");
        mTestDir.mkdirs();
@@ -849,6 +858,16 @@ public final class UserManagerServiceTest {
                        USER_TYPE_PROFILE_PRIVATE, 0, mainUser, null));
    }

    @Test
    public void testGetBootUser_enableBootToHeadlessSystemUser() {
        setSystemUserHeadless(true);
        doReturn(true)
                .when(mSpyResources)
                .getBoolean(com.android.internal.R.bool.config_bootToHeadlessSystemUser);

        assertThat(mUms.getBootUser()).isEqualTo(UserHandle.USER_SYSTEM);
    }

    /**
     * Returns true if the user's XML file has Default restrictions
     * @param userId Id of the user.