summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/users
diff options
context:
space:
mode:
authorYongjiang Wu <yongjiang.x.wu@sonymobile.com>2016-10-12 13:35:38 +0800
committerDoris Ling <dling@google.com>2018-07-03 14:20:39 -0700
commit5b120e7479d27ebcb5f29a1990d41f92315d439b (patch)
tree9adc58113a99442ecaa21fea25e820fda5988757 /src/com/android/settings/users
parent2d41659c325cf89cb886ebbcfcecda72ff6a9023 (diff)
downloadpackages_apps_Settings-5b120e7479d27ebcb5f29a1990d41f92315d439b.tar.gz
packages_apps_Settings-5b120e7479d27ebcb5f29a1990d41f92315d439b.tar.bz2
packages_apps_Settings-5b120e7479d27ebcb5f29a1990d41f92315d439b.zip
Fix new user setting in a call
In a call, the flag of UserManager is changed, then "Add user" and "Guest" items in Settings are still enabled. To fix this issue, these items will be disabled according to "UserManager#canSwitchUsers". Bug: 80447394 Test: make RunSettingsRoboTests ROBOTEST_FILTER=UserSettingsTest Change-Id: Ib4c754603418528f5c6f1c78b8aabf33e863c8b9
Diffstat (limited to 'src/com/android/settings/users')
-rw-r--r--src/com/android/settings/users/UserSettings.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 00809e4461..931fdcf28c 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -107,6 +107,7 @@ public class UserSettings extends SettingsPreferenceFragment
private static final String KEY_USER_LIST = "user_list";
private static final String KEY_USER_ME = "user_me";
+ private static final String KEY_USER_GUEST = "user_guest";
private static final String KEY_ADD_USER = "user_add";
private static final String KEY_ADD_USER_WHEN_LOCKED = "user_settings_add_users_when_locked";
@@ -144,9 +145,12 @@ public class UserSettings extends SettingsPreferenceFragment
USER_REMOVED_INTENT_FILTER.addAction(Intent.ACTION_USER_INFO_CHANGED);
}
- private PreferenceGroup mUserListCategory;
- private UserPreference mMePreference;
- private RestrictedPreference mAddUser;
+ @VisibleForTesting
+ PreferenceGroup mUserListCategory;
+ @VisibleForTesting
+ UserPreference mMePreference;
+ @VisibleForTesting
+ RestrictedPreference mAddUser;
private int mRemovingUserId = -1;
private int mAddedUserId = 0;
private boolean mAddingUser;
@@ -800,7 +804,8 @@ public class UserSettings extends SettingsPreferenceFragment
removeThisUser();
}
- private void updateUserList() {
+ @VisibleForTesting
+ void updateUserList() {
final Context context = getActivity();
if (context == null) {
return;
@@ -863,7 +868,7 @@ public class UserSettings extends SettingsPreferenceFragment
// set.
if (!mUserCaps.mDisallowSwitchUser) {
pref.setOnPreferenceClickListener(this);
- pref.setSelectable(true);
+ pref.setSelectable(mUserManager.canSwitchUsers());
}
} else if (user.isRestricted()) {
pref.setSummary(R.string.user_summary_restricted_profile);
@@ -902,6 +907,7 @@ public class UserSettings extends SettingsPreferenceFragment
null /* delete icon handler */);
pref.setTitle(R.string.user_guest);
pref.setIcon(getEncircledDefaultIcon());
+ pref.setKey(KEY_USER_GUEST);
userPreferences.add(pref);
if (mUserCaps.mDisallowAddUser) {
pref.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
@@ -910,6 +916,9 @@ public class UserSettings extends SettingsPreferenceFragment
} else {
pref.setDisabledByAdmin(null);
}
+ if (!mUserManager.canSwitchUsers()) {
+ pref.setSelectable(false);
+ }
int finalGuestId = guestId;
pref.setOnPreferenceClickListener(preference -> {
int id = finalGuestId;
@@ -969,7 +978,7 @@ public class UserSettings extends SettingsPreferenceFragment
if ((mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin) &&
Utils.isDeviceProvisioned(context)) {
boolean moreUsers = mUserManager.canAddMoreUsers();
- mAddUser.setEnabled(moreUsers && !mAddingUser);
+ mAddUser.setEnabled(moreUsers && !mAddingUser && mUserManager.canSwitchUsers());
if (!moreUsers) {
mAddUser.setSummary(getString(R.string.user_add_max_count, getMaxRealUsers()));
} else {