Update user capabilities in onResume.

Bug: 27641648
Change-Id: I85a6362a20885defa450760a3fbb16e124630434
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 4b060a0..1c0260f 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -247,8 +247,8 @@
         super.onResume();
 
         if (!mUserCaps.mEnabled) return;
-
         if (mShouldUpdateUserList) {
+            mUserCaps.updateAddUserCapabilities(getActivity());
             loadProfile();
             updateUserList();
         }
@@ -663,6 +663,9 @@
                     } else {
                         user = createRestrictedProfile();
                     }
+                    if (user == null) {
+                        return;
+                    }
                     synchronized (mUserLock) {
                         mAddingUser = false;
                         if (userType == USER_TYPE_USER) {
@@ -1036,32 +1039,37 @@
             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{" +