Loading core/res/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -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] --> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading services/core/java/com/android/server/pm/UserManagerService.java +9 −0 Original line number Diff line number Diff line Loading @@ -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()) { Loading Loading @@ -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) { Loading services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceMockedTest.java +41 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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)); Loading @@ -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()); Loading @@ -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); Loading Loading
core/res/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -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] --> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading
services/core/java/com/android/server/pm/UserManagerService.java +9 −0 Original line number Diff line number Diff line Loading @@ -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()) { Loading Loading @@ -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) { Loading
services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceMockedTest.java +41 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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)); Loading @@ -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()); Loading @@ -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); Loading