diff options
author | Yongjiang Wu <yongjiang.x.wu@sonymobile.com> | 2016-10-12 13:35:38 +0800 |
---|---|---|
committer | Doris Ling <dling@google.com> | 2018-07-03 14:20:39 -0700 |
commit | 5b120e7479d27ebcb5f29a1990d41f92315d439b (patch) | |
tree | 9adc58113a99442ecaa21fea25e820fda5988757 /src/com/android/settings/users | |
parent | 2d41659c325cf89cb886ebbcfcecda72ff6a9023 (diff) | |
download | packages_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.java | 21 |
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 { |