From a3eab6f7da22e49e3ad298f3d316c48e32944342 Mon Sep 17 00:00:00 2001 From: jovanak Date: Thu, 23 Jan 2020 16:27:13 -0800 Subject: Switching to pre-created users should not be supported. Fixes: 146233556 Test: atest UserManagerServiceUserInfoTest, manual Change-Id: I549ee4e7b3849845519b83970d03726a27aedf27 --- core/java/android/content/pm/UserInfo.java | 4 ++++ .../server/pm/UserManagerServiceUserInfoTest.java | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/core/java/android/content/pm/UserInfo.java b/core/java/android/content/pm/UserInfo.java index 008cfa5e9423..f1506645d10c 100644 --- a/core/java/android/content/pm/UserInfo.java +++ b/core/java/android/content/pm/UserInfo.java @@ -362,6 +362,10 @@ public class UserInfo implements Parcelable { // Don't support switching to an ephemeral user with removal in progress. return false; } + if (preCreated) { + // Don't support switching to pre-created users until they become "real" users. + return false; + } return !isProfile(); } diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java index ac27a087ba8e..5df856865ff9 100644 --- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserInfoTest.java @@ -153,6 +153,25 @@ public class UserManagerServiceUserInfoTest { assertTrue(mUserManagerService.isUserOfType(testId, typeName)); } + /** Test UserInfo.supportsSwitchTo() for precreated users. */ + @Test + public void testSupportSwitchTo_preCreated() throws Exception { + UserInfo userInfo = createUser(100, FLAG_FULL, null); + userInfo.preCreated = true; + assertFalse("Switching to a precreated user should be disabled", + userInfo.supportsSwitchTo()); + + userInfo.preCreated = false; + assertTrue("Switching to a full, real user should be allowed", userInfo.supportsSwitchTo()); + } + + /** Test UserInfo.supportsSwitchTo() for profiles. */ + @Test + public void testSupportSwitchTo_profile() throws Exception { + UserInfo userInfo = createUser(100, FLAG_PROFILE, null); + assertFalse("Switching to a profiles should be disabled", userInfo.supportsSwitchTo()); + } + /** Tests upgradeIfNecessaryLP (but without locking) for upgrading from version 8 to 9+. */ @Test public void testUpgradeIfNecessaryLP_9() { -- cgit v1.2.3-59-g8ed1b