diff options
| author | Fyodor Kupolov <fkupolov@google.com> | 2015-05-21 18:31:45 -0700 |
|---|---|---|
| committer | Fyodor Kupolov <fkupolov@google.com> | 2015-05-29 14:07:12 -0700 |
| commit | 097936ad1b6632787127cbefe38373e9696e377d (patch) | |
| tree | f2ebddb9d069a7ff9d45bd80d11b97696e9d9ef8 /src/com/android/settings | |
| parent | 01f35ce46e584e0fd699c3330eba564eb6811dc5 (diff) | |
| download | packages_apps_Settings-097936ad1b6632787127cbefe38373e9696e377d.tar.gz packages_apps_Settings-097936ad1b6632787127cbefe38373e9696e377d.tar.bz2 packages_apps_Settings-097936ad1b6632787127cbefe38373e9696e377d.zip | |
Hide guest entry if the user is not allowed to create guest
Don't show the Guest entry for a secondary user if the user is not allowed to
create a guest and there is currently no guest already created.
Bug: 19035769
Change-Id: Icf4a778533affaec0658af4da5ce000eda261f38
Diffstat (limited to 'src/com/android/settings')
| -rw-r--r-- | src/com/android/settings/users/UserSettings.java | 54 |
1 files changed, 22 insertions, 32 deletions
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 4c26c5cce..0c423a428 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -773,7 +773,7 @@ public class UserSettings extends SettingsPreferenceFragment 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 @@ public class UserSettings extends SettingsPreferenceFragment 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 @@ public class UserSettings extends SettingsPreferenceFragment } 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 @@ public class UserSettings extends SettingsPreferenceFragment } } + 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 @@ public class UserSettings extends SettingsPreferenceFragment 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 @@ public class UserSettings extends SettingsPreferenceFragment 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 @@ public class UserSettings extends SettingsPreferenceFragment } 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; } |
