UserDetailsSettings uses Guest string, not Guest name

The UserDetailsSettings panel, and its title, show the user's UserInfo.name.
This is correct for a regular user (and for the Owner). But for a Guest user,
this is incorrect, and the user_guest string should be used instead.

The difference occurs if the system language is changed after the guest is created;
the word 'guest' should update to the current language, not be frozen to the
language at the time of the guest's creation.

Bug: 185309160
Test: atest UserDetailsSettingsTest
Change-Id: I545aa3e6cc5d00c0bcc49960f37dddd9334b153b
diff --git a/src/com/android/settings/users/UserDetailsSettings.java b/src/com/android/settings/users/UserDetailsSettings.java
index a9ddf95..ac6a8ea 100644
--- a/src/com/android/settings/users/UserDetailsSettings.java
+++ b/src/com/android/settings/users/UserDetailsSettings.java
@@ -206,7 +206,7 @@
 
         mSwitchUserPref.setTitle(
                 context.getString(com.android.settingslib.R.string.user_switch_to_user,
-                        mUserInfo.name));
+                        UserSettings.getUserName(context, mUserInfo)));
 
         if (mUserCaps.mDisallowSwitchUser) {
             mSwitchUserPref.setDisabledByAdmin(RestrictedLockUtilsInternal.getDeviceOwner(context));
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 64f9a2c..d88d8b5 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.users;
 
+import android.annotation.NonNull;
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.Dialog;
@@ -505,10 +506,12 @@
         Bundle extras = new Bundle();
         extras.putInt(UserDetailsSettings.EXTRA_USER_ID, userInfo.id);
         extras.putBoolean(AppRestrictionsFragment.EXTRA_NEW_USER, newUser);
-        new SubSettingLauncher(getContext())
+
+        final Context context = getContext();
+        new SubSettingLauncher(context)
                 .setDestination(UserDetailsSettings.class.getName())
                 .setArguments(extras)
-                .setTitleText(userInfo.name)
+                .setTitleText(getUserName(context, userInfo))
                 .setSourceMetricsCategory(getMetricsCategory())
                 .launch();
     }
@@ -859,32 +862,30 @@
             UserPreference pref;
             if (user.id == UserHandle.myUserId()) {
                 pref = mMePreference;
-            } else if (user.isGuest()) {
-                pref = new UserPreference(getPrefContext(), null, user.id);
-                pref.setTitle(R.string.user_guest);
-                pref.setIcon(getEncircledDefaultIcon());
-                pref.setKey(KEY_USER_GUEST);
+            } else {
+                final Context prefContext = getPrefContext();
+                pref = new UserPreference(prefContext, null, user.id);
+                pref.setTitle(getUserName(prefContext, user));
                 userPreferences.add(pref);
+                pref.setOnPreferenceClickListener(this);
                 pref.setEnabled(canOpenUserDetails);
                 pref.setSelectable(true);
 
-                if (mUserCaps.mDisallowSwitchUser) {
-                    pref.setDisabledByAdmin(RestrictedLockUtilsInternal.getDeviceOwner(context));
+                if (user.isGuest()) {
+                    pref.setIcon(getEncircledDefaultIcon());
+                    pref.setKey(KEY_USER_GUEST);
+                    if (mUserCaps.mDisallowSwitchUser) {
+                        pref.setDisabledByAdmin(
+                                RestrictedLockUtilsInternal.getDeviceOwner(context));
+                    } else {
+                        pref.setDisabledByAdmin(null);
+                    }
                 } else {
-                    pref.setDisabledByAdmin(null);
+                    pref.setKey("id=" + user.id);
+                    if (user.isAdmin()) {
+                        pref.setSummary(R.string.user_admin);
+                    }
                 }
-                pref.setOnPreferenceClickListener(this);
-            } else {
-                pref = new UserPreference(getPrefContext(), null, user.id);
-                pref.setKey("id=" + user.id);
-                userPreferences.add(pref);
-                if (user.isAdmin()) {
-                    pref.setSummary(R.string.user_admin);
-                }
-                pref.setTitle(user.name);
-                pref.setOnPreferenceClickListener(this);
-                pref.setEnabled(canOpenUserDetails);
-                pref.setSelectable(true);
             }
             if (pref == null) {
                 continue;
@@ -1063,6 +1064,14 @@
         }
     }
 
+    /** Returns the user's name, or the appropriate string in the case of a Guest. */
+    public static String getUserName(Context context, @NonNull UserInfo userInfo) {
+        if (userInfo.isGuest()) {
+            return context.getString(R.string.user_guest);
+        }
+        return userInfo.name;
+    }
+
     @Override
     public boolean onPreferenceClick(Preference pref) {
         if (pref == mMePreference) {