Grant FLAG_PRIMARY to the first human user in headless system user mode.

Bug: 1328790300
Test: build
Change-Id: I336391f5ba0a36d6f4d0b202d32d79865e40f8ca
This commit is contained in:
Ying Zheng
2019-05-16 14:12:29 -07:00
parent 0819921f08
commit 1eda0fb808

View File

@@ -90,6 +90,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IAppOpsService;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.os.BackgroundThread;
import com.android.internal.os.RoSystemProperties;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.Preconditions;
@@ -2215,11 +2216,10 @@ public class UserManagerService extends IUserManager.Stub {
@GuardedBy({"mPackagesLock", "mRestrictionsLock"})
private void fallbackToSingleUserLP() {
int flags = UserInfo.FLAG_INITIALIZED;
// In split system user mode, the admin and primary flags are assigned to the first human
// user.
if (!UserManager.isSplitSystemUser()) {
flags |= UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY;
int flags = UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_ADMIN;
// In headless system user mode, the primary flag is assigned to the first human user.
if (!RoSystemProperties.MULTIUSER_HEADLESS_SYSTEM_USER) {
flags |= UserInfo.FLAG_PRIMARY;
}
// Create the system user
UserInfo system = new UserInfo(UserHandle.USER_SYSTEM, null, null, flags);
@@ -2733,9 +2733,9 @@ public class UserManagerService extends IUserManager.Stub {
return null;
}
}
// In split system user mode, we assign the first human user the primary flag.
// In headless system user mode, we assign the first human user the primary flag.
// And if there is no device owner, we also assign the admin flag to primary user.
if (UserManager.isSplitSystemUser()
if (RoSystemProperties.MULTIUSER_HEADLESS_SYSTEM_USER
&& !isGuest && !isManagedProfile && getPrimaryUser() == null) {
flags |= UserInfo.FLAG_PRIMARY;
synchronized (mUsersLock) {