From 6f48d6ef35df55e092d18619fe1f92a2593682d4 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Wed, 23 Mar 2016 14:28:25 -0700 Subject: [PATCH] Localize owner's name to current locale until changed Don't set a name for the system user and always return a localized name until the user explicitly sets a name. Bug: 27814125 Change-Id: I7972a45d77c07d9efbd67d5b360bacee46247a66 --- core/java/android/content/pm/UserInfo.java | 1 + .../android/server/pm/UserManagerService.java | 36 ++++++++++++++----- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/core/java/android/content/pm/UserInfo.java b/core/java/android/content/pm/UserInfo.java index 3139151b78a01..e8a3438dd9745 100644 --- a/core/java/android/content/pm/UserInfo.java +++ b/core/java/android/content/pm/UserInfo.java @@ -216,6 +216,7 @@ public class UserInfo implements Parcelable { lastLoggedInTime = orig.lastLoggedInTime; partial = orig.partial; profileGroupId = orig.profileGroupId; + restrictedProfileParentId = orig.restrictedProfileParentId; guestToRemove = orig.guestToRemove; } diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 715f1e5e43459..ac19e24ba0100 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -458,7 +458,7 @@ public class UserManagerService extends IUserManager.Stub { continue; } if (!excludeDying || !mRemovingUserIds.get(ui.id)) { - users.add(ui); + users.add(userWithName(ui)); } } return users; @@ -500,7 +500,7 @@ public class UserManagerService extends IUserManager.Stub { if (mRemovingUserIds.get(profile.id)) { continue; } - users.add(profile); + users.add(userWithName(profile)); } return users; } @@ -653,7 +653,21 @@ public class UserManagerService extends IUserManager.Stub { public UserInfo getUserInfo(int userId) { checkManageUsersPermission("query user"); synchronized (mUsersLock) { - return getUserInfoLU(userId); + return userWithName(getUserInfoLU(userId)); + } + } + + /** + * Returns a UserInfo object with the name filled in, for Owner, or the original + * if the name is already set. + */ + private UserInfo userWithName(UserInfo orig) { + if (orig != null && orig.name == null && orig.id == UserHandle.USER_SYSTEM) { + UserInfo withName = new UserInfo(orig); + withName.name = getOwnerName(); + return withName; + } else { + return orig; } } @@ -1459,9 +1473,7 @@ public class UserManagerService extends IUserManager.Stub { flags |= UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY; } // Create the system user - UserInfo system = new UserInfo(UserHandle.USER_SYSTEM, - mContext.getResources().getString(com.android.internal.R.string.owner_name), null, - flags); + UserInfo system = new UserInfo(UserHandle.USER_SYSTEM, null, null, flags); UserData userData = new UserData(); userData.info = system; synchronized (mUsersLock) { @@ -1482,6 +1494,10 @@ public class UserManagerService extends IUserManager.Stub { writeUserLP(userData); } + private String getOwnerName() { + return mContext.getResources().getString(com.android.internal.R.string.owner_name); + } + private void scheduleWriteUser(UserData UserData) { if (DBG) { debug("scheduleWriteUser"); @@ -1551,9 +1567,11 @@ public class UserManagerService extends IUserManager.Stub { serializer.attribute(null, ATTR_SEED_ACCOUNT_TYPE, userData.seedAccountType); } } - serializer.startTag(null, TAG_NAME); - serializer.text(userInfo.name); - serializer.endTag(null, TAG_NAME); + if (userInfo.name != null) { + serializer.startTag(null, TAG_NAME); + serializer.text(userInfo.name); + serializer.endTag(null, TAG_NAME); + } synchronized (mRestrictionsLock) { UserRestrictionsUtils.writeRestrictions(serializer, mBaseUserRestrictions.get(userInfo.id), TAG_RESTRICTIONS);