From aa524ae5811e6f1bcdaea2c721f1529d5071f28f Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Mon, 14 Mar 2016 17:23:13 -0700 Subject: [PATCH] Update user capabilities in onResume. Bug: 27641648 Change-Id: I85a6362a20885defa450760a3fbb16e124630434 --- .../android/settings/users/UserSettings.java | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 4b060a0dc61..1c0260fe35d 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -247,8 +247,8 @@ public class UserSettings extends SettingsPreferenceFragment super.onResume(); if (!mUserCaps.mEnabled) return; - if (mShouldUpdateUserList) { + mUserCaps.updateAddUserCapabilities(getActivity()); loadProfile(); updateUserList(); } @@ -663,6 +663,9 @@ public class UserSettings extends SettingsPreferenceFragment } else { user = createRestrictedProfile(); } + if (user == null) { + return; + } synchronized (mUserLock) { mAddingUser = false; if (userType == USER_TYPE_USER) { @@ -1036,32 +1039,37 @@ public class UserSettings extends SettingsPreferenceFragment final UserInfo myUserInfo = userManager.getUserInfo(UserHandle.myUserId()); caps.mIsGuest = myUserInfo.isGuest(); caps.mIsAdmin = myUserInfo.isAdmin(); - caps.mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(context, - UserManager.DISALLOW_ADD_USER, UserHandle.myUserId()); - final boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction( - context, UserManager.DISALLOW_ADD_USER, UserHandle.myUserId()); - caps.mDisallowAddUserSetByAdmin = - caps.mEnforcedAdmin != null && !hasBaseUserRestriction; - caps.mDisallowAddUser = - (caps.mEnforcedAdmin != null || hasBaseUserRestriction); - if (!caps.mIsAdmin || UserManager.getMaxSupportedUsers() < 2 - || !UserManager.supportsMultipleUsers() - || caps.mDisallowAddUser) { - caps.mCanAddUser = false; - } DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService( Context.DEVICE_POLICY_SERVICE); // No restricted profiles for tablets with a device owner, or phones. if (dpm.isDeviceManaged() || Utils.isVoiceCapable(context)) { caps.mCanAddRestrictedProfile = false; } - - final boolean canAddUsersWhenLocked = caps.mIsAdmin || Settings.Global.getInt( - context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1; - caps.mCanAddGuest = !caps.mIsGuest && !caps.mDisallowAddUser && canAddUsersWhenLocked; + caps.updateAddUserCapabilities(context); return caps; } + public void updateAddUserCapabilities(Context context) { + mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(context, + UserManager.DISALLOW_ADD_USER, UserHandle.myUserId()); + final boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction( + context, UserManager.DISALLOW_ADD_USER, UserHandle.myUserId()); + mDisallowAddUserSetByAdmin = + mEnforcedAdmin != null && !hasBaseUserRestriction; + mDisallowAddUser = + (mEnforcedAdmin != null || hasBaseUserRestriction); + mCanAddUser = true; + if (!mIsAdmin || UserManager.getMaxSupportedUsers() < 2 + || !UserManager.supportsMultipleUsers() + || mDisallowAddUser) { + mCanAddUser = false; + } + + final boolean canAddUsersWhenLocked = mIsAdmin || Settings.Global.getInt( + context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1; + mCanAddGuest = !mIsGuest && !mDisallowAddUser && canAddUsersWhenLocked; + } + @Override public String toString() { return "UserCapabilities{" +