Introduce system user and primary user.
Bug: 19913735
Change-Id: I2c7855915d778cf80a7154314321ddd90e2eaaac
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index b1319cf..5dd5a72 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -209,7 +209,7 @@
mUsersDir = new File(dataDir, USER_INFO_DIR);
mUsersDir.mkdirs();
// Make zeroth user directory, for services to migrate their files to that location
- File userZeroDir = new File(mUsersDir, "0");
+ File userZeroDir = new File(mUsersDir, String.valueOf(UserHandle.USER_SYSTEM));
userZeroDir.mkdirs();
mBaseUserPath = baseUserPath;
FileUtils.setPermissions(mUsersDir.toString(),
@@ -243,7 +243,7 @@
}
}
}
- onUserForeground(UserHandle.USER_OWNER);
+ onUserForeground(UserHandle.USER_SYSTEM);
mAppOpsService = IAppOpsService.Stub.asInterface(
ServiceManager.getService(Context.APP_OPS_SERVICE));
for (int i = 0; i < mUserIds.length; ++i) {
@@ -256,6 +256,20 @@
}
@Override
+ public UserInfo getPrimaryUser() {
+ checkManageUsersPermission("query users");
+ synchronized (mPackagesLock) {
+ for (int i = 0; i < mUsers.size(); i++) {
+ UserInfo ui = mUsers.valueAt(i);
+ if (ui.isPrimary()) {
+ return ui;
+ }
+ }
+ }
+ return null;
+ }
+
+ @Override
public List<UserInfo> getUsers(boolean excludeDying) {
checkManageUsersPermission("query users");
synchronized (mPackagesLock) {
@@ -810,22 +824,23 @@
}
private void fallbackToSingleUserLocked() {
- // Create the primary user
- UserInfo primary = new UserInfo(UserHandle.USER_OWNER,
+ // Create the system user
+ // TODO: UserInfo.FLAG_PRIMARY flag should be set on the first human user.
+ UserInfo system = new UserInfo(UserHandle.USER_SYSTEM,
mContext.getResources().getString(com.android.internal.R.string.owner_name), null,
UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY | UserInfo.FLAG_INITIALIZED);
- mUsers.put(0, primary);
+ mUsers.put(system.id, system);
mNextSerialNumber = MIN_USER_ID;
mUserVersion = USER_VERSION;
Bundle restrictions = new Bundle();
- mUserRestrictions.append(UserHandle.USER_OWNER, restrictions);
+ mUserRestrictions.append(UserHandle.USER_SYSTEM, restrictions);
updateUserIdsLocked();
initDefaultGuestRestrictions();
writeUserListLocked();
- writeUserLocked(primary);
+ writeUserLocked(system);
}
private void scheduleWriteUserLocked(UserInfo userInfo) {