Don't always change username when adding account

During Setup Wizard for a new user, if an account is added,
the user's name gets updated to match their account's name.
Recently, however, the user can actually type in a name before
even reaching the Setup Wizard. If they elect to do so, we shouldn't
overwrite their name with their account name, so this cl makes
sure to only use the account name if the original name wasn't
manually entered.

Bug: 171255493
Test: manual verification (create new user and enter account during
      SUW. Do both with and without entering initial user name.)
Change-Id: I443648dafc0d83a71750f7f6472bbea4e2ee23bb
This commit is contained in:
Adam Bookatz
2021-03-31 13:41:02 -07:00
parent 1b82a33048
commit 0cb47e92d4

View File

@@ -50,14 +50,23 @@ public class ProfileUpdateReceiver extends BroadcastReceiver {
return;
}
int userId = UserHandle.myUserId();
UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
String profileName = Utils.getMeProfileName(context, false /* partial name */);
if (profileName != null && profileName.length() > 0) {
um.setUserName(userId, profileName);
final int userId = UserHandle.myUserId();
final UserManager um = context.getSystemService(UserManager.class);
final String newName = Utils.getMeProfileName(context, false /* partial name */);
if (newName != null && newName.length() > 0 && !isCurrentNameInteresting(context, um)) {
um.setUserName(userId, newName);
// Flag that we've written the profile one time at least. No need to do it in the
// future.
prefs.edit().putBoolean(KEY_PROFILE_NAME_COPIED_ONCE, true).commit();
}
}
/** Returns whether the current user name is different from the default one. */
private static boolean isCurrentNameInteresting(Context context, UserManager um) {
final String currentName = um.getUserName();
final String defaultName = um.isRestrictedProfile() || um.isProfile() ?
context.getString(com.android.settingslib.R.string.user_new_profile_name) :
context.getString(com.android.settingslib.R.string.user_new_user_name);
return currentName != null && !currentName.equals(defaultName);
}
}