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

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

Merge "Change headless system user's name" into main

parents a1d73ee7 20f819a7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -5077,6 +5077,9 @@
    <string name="owner_name" msgid="3879126011135546571">Owner</string>
    <!-- Default name of the guest user [CHAR LIMIT=35] -->
    <string name="guest_name">Guest</string>
    <!-- Default name of the headless system user, on HSUM devices. This users hosts the system, but
    is not a human user. [CHAR LIMIT=35] -->
    <string name="headless_system_user_name">System User</string>
    <!-- Error message title [CHAR LIMIT=35] -->
    <string name="error_message_title">Error</string>
    <!-- Message informing user that the change was disallowed by an administrator. [CHAR LIMIT=none] -->
+1 −0
Original line number Diff line number Diff line
@@ -1108,6 +1108,7 @@
  <java-symbol type="string" name="media_route_status_in_use" />
  <java-symbol type="string" name="owner_name" />
  <java-symbol type="string" name="guest_name" />
  <java-symbol type="string" name="headless_system_user_name" />
  <java-symbol type="string" name="config_chooseAccountActivity" />
  <java-symbol type="string" name="config_chooseTypeAndAccountActivity" />
  <java-symbol type="string" name="config_chooserActivity" />
+9 −0
Original line number Diff line number Diff line
@@ -2432,6 +2432,11 @@ public class UserManagerService extends IUserManager.Stub {
                int number = mUser0Allocations.incrementAndGet();
                Slog.w(LOG_TAG, "System user instantiated at least " + number + " times");
            }
            if (android.multiuser.Flags.logoutUserApi()) {
                if (isHeadlessSystemUserMode()) {
                    return getHeadlessSystemUserName();
                }
            }
            return getOwnerName();
        }
        if (user.isMain()) {
@@ -5308,6 +5313,10 @@ public class UserManagerService extends IUserManager.Stub {
        return mContext.getString(com.android.internal.R.string.guest_name);
    }

    String getHeadlessSystemUserName() {
        return mContext.getString(com.android.internal.R.string.headless_system_user_name);
    }

    private void invalidateOwnerNameIfNecessary(@NonNull Resources res, boolean forceUpdate) {
        final int configChanges = mLastConfiguration.updateFrom(res.getConfiguration());
        if (forceUpdate || (configChanges & mOwnerNameTypedValue.changingConfigurations) != 0) {
+41 −2
Original line number Diff line number Diff line
@@ -1113,7 +1113,8 @@ public final class UserManagerServiceMockedTest {
     * {@code null} name.
     */
    @Test
    public void testUserWithName_withDefaultName() {
    public void testUserWithName_withDefaultName_nonHsum() {
        setSystemUserHeadless(false);
        int initialAllocations = getCurrentNumberOfUser0Allocations();

        var systemUser = new UserInfo(UserHandle.USER_SYSTEM, /* name= */ null, /* flags= */ 0);
@@ -1163,6 +1164,21 @@ public final class UserManagerServiceMockedTest {
                .that(getCurrentNumberOfUser0Allocations()).isEqualTo(expectedAllocations);
    }

    @Test
    @EnableFlags(FLAG_LOGOUT_USER_API)
    public void testUserWithName_withDefaultName_hsum() {
        setSystemUserHeadless(true);

        var systemUser = new UserInfo(UserHandle.USER_SYSTEM, /* name= */ null, /* flags= */ 0);
        UserInfo systemUserWithName = mUms.userWithName(systemUser);
        assertWithMessage("userWithName(systemUser)").that(systemUserWithName).isNotNull();
        expect.withMessage("userWithName(systemUser)").that(systemUserWithName)
                .isNotSameInstanceAs(systemUser);
        expect.withMessage("systemUserWithName.name").that(systemUserWithName.name)
                .isEqualTo(mUms.getHeadlessSystemUserName());
        expect.withMessage("system.name").that(systemUser.name).isNull();
    }

    @Test
    public void testGetName_null() {
        assertThrows(NullPointerException.class, () -> mUms.getName(null));
@@ -1188,7 +1204,9 @@ public final class UserManagerServiceMockedTest {

    /** Tests what happens when the {@link UserInfo} has a {@code null} name. */
    @Test
    public void testGetName_withDefaultNames() {
    public void testGetName_withDefaultNames_nonHsum() {
        setSystemUserHeadless(false);

        var systemUser = new UserInfo(UserHandle.USER_SYSTEM, /* name= */ null, /* flags= */ 0);
        expect.withMessage("name of system user").that(mUms.getName(systemUser))
                .isEqualTo(mUms.getOwnerName());
@@ -1205,6 +1223,27 @@ public final class UserManagerServiceMockedTest {
        expect.withMessage("name of normal user").that(mUms.getName(normalUser)).isNull();
    }

    @Test
    @EnableFlags(FLAG_LOGOUT_USER_API)
    public void testGetName_withDefaultNames_hsum() {
        setSystemUserHeadless(true);

        var systemUser = new UserInfo(UserHandle.USER_SYSTEM, /* name= */ null, /* flags= */ 0);
        expect.withMessage("name of system user").that(mUms.getName(systemUser))
                .isEqualTo(mUms.getHeadlessSystemUserName());

        var mainUser = new UserInfo(42, /* name= */ null, UserInfo.FLAG_MAIN);
        expect.withMessage("name of main user").that(mUms.getName(mainUser))
                .isEqualTo(mUms.getOwnerName());

        var guestUser = new UserInfo(42, /* name= */ null, UserInfo.FLAG_GUEST);
        expect.withMessage("name of guest user").that(mUms.getName(guestUser))
                .isEqualTo(mUms.getGuestName());

        var normalUser = new UserInfo(42, /* name= */ null, /* flags= */ 0);
        expect.withMessage("name of normal user").that(mUms.getName(normalUser)).isNull();
    }

    @Test
    public void testCanSwitchToHeadlessSystemUser_true() {
        mockCanSwitchToHeadlessSystemUser(true);