Merge "Ignore fp error message when not listening" into mnc-dev
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 4c26c5c..0c423a4 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -773,7 +773,7 @@
             userPreferences.add(pref);
         }
 
-        if (shouldShowGuestUserPreference(users)) {
+        if (mUserCaps.mCanAddGuest || findGuest() != null) {
             // Add a virtual Guest user for guest defaults
             UserPreference pref = new UserPreference(getActivity(), null,
                     UserPreference.USERID_GUEST_DEFAULTS,
@@ -843,23 +843,6 @@
         return maxUsersAndGuest - managedProfiles;
     }
 
-    private boolean shouldShowGuestUserPreference(List<UserInfo> users) {
-        boolean showGuestPreference = !mUserCaps.mIsGuest;
-        // If user has DISALLOW_ADD_USER don't allow creating a guest either.
-        if (showGuestPreference && mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)) {
-            showGuestPreference = false;
-            // If guest already exists, no user creation needed.
-            for (UserInfo user : users) {
-                if (user.isGuest()) {
-                    showGuestPreference = true;
-                    break;
-                }
-            }
-        }
-        return showGuestPreference;
-    }
-
-
     private void loadIconsAsync(List<Integer> missingIcons) {
         new AsyncTask<List<Integer>, Void, Void>() {
             @Override
@@ -952,19 +935,9 @@
     }
 
     private void createAndSwitchToGuestUser() {
-        List<UserInfo> users = mUserManager.getUsers();
-        for (UserInfo user : users) {
-            if (user.isGuest()) {
-                switchUserNow(user.id);
-                return;
-            }
-        }
-        // No guest user. Create one, if there's no restriction.
-        // If it is not the primary user, then adding users from lockscreen must be enabled
-        if (mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)
-                || (!mUserCaps.mIsOwner && Settings.Global.getInt(getContentResolver(),
-                        Settings.Global.ADD_USERS_WHEN_LOCKED, 0) != 1)) {
-            Log.i(TAG, "Blocking guest creation because it is restricted");
+        final UserInfo guest = findGuest();
+        if (guest != null) {
+            switchUserNow(guest.id);
             return;
         }
         UserInfo guestUser = mUserManager.createGuest(getActivity(),
@@ -974,6 +947,16 @@
         }
     }
 
+    private UserInfo findGuest() {
+        List<UserInfo> users = mUserManager.getUsers();
+        for (UserInfo user : users) {
+            if (user.isGuest()) {
+                return user;
+            }
+        }
+        return null;
+    }
+
     private boolean isInitialized(UserInfo user) {
         return (user.flags & UserInfo.FLAG_INITIALIZED) != 0;
     }
@@ -1041,6 +1024,7 @@
         boolean mCanAddRestrictedProfile = true;
         boolean mIsOwner = UserHandle.myUserId() == UserHandle.USER_OWNER;
         boolean mIsGuest;
+        boolean mCanAddGuest;
 
         public static UserCapabilities create(Context context) {
             UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
@@ -1050,9 +1034,11 @@
                 return caps;
             }
 
+            final boolean disallowAddUser = userManager.hasUserRestriction(
+                    UserManager.DISALLOW_ADD_USER);
             if (!caps.mIsOwner || UserManager.getMaxSupportedUsers() < 2
                     || !UserManager.supportsMultipleUsers()
-                    || userManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)) {
+                    || disallowAddUser) {
                 caps.mCanAddUser = false;
             }
             DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
@@ -1063,6 +1049,10 @@
             }
             final int myUserId = UserHandle.myUserId();
             caps.mIsGuest = userManager.getUserInfo(myUserId).isGuest();
+
+            final boolean canAddUsersWhenLocked = caps.mIsOwner || Settings.Global.getInt(
+                    context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1;
+            caps.mCanAddGuest = !caps.mIsGuest && !disallowAddUser && canAddUsersWhenLocked;
             return caps;
         }