Add handling of admin enforced restrictions in Users Settings
Before, when the restrictions were applied, the preferences that were restricted were hidden. After this change, if admin applies a restriction, the preference is displayed as disabled and Policy Transparency Dialog is displayed Bug: 338226475 Test: atest UserSettingsTest && atest UserDetailsSettingsTest Flag: android.multiuser.new_multiuser_settings_ux Change-Id: I1b5aeeeec7accde278ff3e46ea3d64c91d8400db
This commit is contained in:
@@ -42,11 +42,14 @@ public class AddUserWhenLockedPreferenceController extends TogglePreferenceContr
|
|||||||
if (!isAvailable()) {
|
if (!isAvailable()) {
|
||||||
restrictedSwitchPreference.setVisible(false);
|
restrictedSwitchPreference.setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
restrictedSwitchPreference.setDisabledByAdmin(
|
|
||||||
mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
|
|
||||||
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
||||||
|
if (mUserCaps.mDisallowAddUserSetByAdmin) {
|
||||||
|
restrictedSwitchPreference.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
|
||||||
|
}
|
||||||
restrictedSwitchPreference.setVisible(true);
|
restrictedSwitchPreference.setVisible(true);
|
||||||
} else {
|
} else {
|
||||||
|
restrictedSwitchPreference.setDisabledByAdmin(
|
||||||
|
mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
|
||||||
restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
|
restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,14 +59,12 @@ public class AddUserWhenLockedPreferenceController extends TogglePreferenceContr
|
|||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
if (!mUserCaps.isAdmin()) {
|
if (!mUserCaps.isAdmin()) {
|
||||||
return DISABLED_FOR_USER;
|
return DISABLED_FOR_USER;
|
||||||
|
} else if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
||||||
|
return AVAILABLE;
|
||||||
} else if (mUserCaps.disallowAddUser() || mUserCaps.disallowAddUserSetByAdmin()) {
|
} else if (mUserCaps.disallowAddUser() || mUserCaps.disallowAddUserSetByAdmin()) {
|
||||||
return DISABLED_FOR_USER;
|
return DISABLED_FOR_USER;
|
||||||
} else {
|
} else {
|
||||||
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
||||||
return AVAILABLE;
|
|
||||||
} else {
|
|
||||||
return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -43,12 +43,17 @@ public class GuestTelephonyPreferenceController extends TogglePreferenceControll
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
if (!mUserCaps.isAdmin() || !mUserCaps.mCanAddGuest) {
|
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
||||||
return DISABLED_FOR_USER;
|
if (!mUserCaps.isAdmin()) {
|
||||||
} else if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
return DISABLED_FOR_USER;
|
||||||
|
}
|
||||||
return AVAILABLE;
|
return AVAILABLE;
|
||||||
} else {
|
} else {
|
||||||
return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
if (!mUserCaps.isAdmin() || !mUserCaps.mCanAddGuest) {
|
||||||
|
return DISABLED_FOR_USER;
|
||||||
|
} else {
|
||||||
|
return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -57,11 +57,6 @@ public class MultiUserSwitchBarController implements SwitchWidgetController.OnSw
|
|||||||
mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
|
mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
|
||||||
.checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_USER_SWITCH,
|
.checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_USER_SWITCH,
|
||||||
UserHandle.myUserId()));
|
UserHandle.myUserId()));
|
||||||
|
|
||||||
} else if (mUserCapabilities.mDisallowAddUser) {
|
|
||||||
mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
|
|
||||||
.checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_ADD_USER,
|
|
||||||
UserHandle.myUserId()));
|
|
||||||
} else {
|
} else {
|
||||||
mSwitchBar.setEnabled(mUserCapabilities.mIsMain);
|
mSwitchBar.setEnabled(mUserCapabilities.mIsMain);
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,7 @@ import android.content.DialogInterface;
|
|||||||
import android.content.pm.UserInfo;
|
import android.content.pm.UserInfo;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -33,6 +34,8 @@ import androidx.preference.Preference;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
|
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||||
import com.android.settingslib.RestrictedSwitchPreference;
|
import com.android.settingslib.RestrictedSwitchPreference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,11 +73,15 @@ public class RemoveGuestOnExitPreferenceController extends BasePreferenceControl
|
|||||||
if (!isAvailable()) {
|
if (!isAvailable()) {
|
||||||
restrictedSwitchPreference.setVisible(false);
|
restrictedSwitchPreference.setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
restrictedSwitchPreference.setDisabledByAdmin(
|
|
||||||
mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
|
|
||||||
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
||||||
|
final RestrictedLockUtils.EnforcedAdmin disallowRemoveUserAdmin =
|
||||||
|
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(mContext,
|
||||||
|
UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId());
|
||||||
|
restrictedSwitchPreference.setDisabledByAdmin(disallowRemoveUserAdmin);
|
||||||
restrictedSwitchPreference.setVisible(true);
|
restrictedSwitchPreference.setVisible(true);
|
||||||
} else {
|
} else {
|
||||||
|
restrictedSwitchPreference.setDisabledByAdmin(
|
||||||
|
mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
|
||||||
restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
|
restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -86,15 +93,21 @@ public class RemoveGuestOnExitPreferenceController extends BasePreferenceControl
|
|||||||
// then disable this controller
|
// then disable this controller
|
||||||
// also disable this controller for non-admin users
|
// also disable this controller for non-admin users
|
||||||
// also disable when config_guestUserAllowEphemeralStateChange is false
|
// also disable when config_guestUserAllowEphemeralStateChange is false
|
||||||
if (mUserManager.isGuestUserAlwaysEphemeral()
|
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
||||||
|| !UserManager.isGuestUserAllowEphemeralStateChange()
|
if (mUserManager.isGuestUserAlwaysEphemeral()
|
||||||
|| !mUserCaps.isAdmin()
|
|| !UserManager.isGuestUserAllowEphemeralStateChange()
|
||||||
|| mUserCaps.disallowAddUser()
|
|| !mUserCaps.isAdmin()) {
|
||||||
|| mUserCaps.disallowAddUserSetByAdmin()) {
|
return DISABLED_FOR_USER;
|
||||||
return DISABLED_FOR_USER;
|
} else {
|
||||||
} else {
|
|
||||||
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
|
||||||
return AVAILABLE;
|
return AVAILABLE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (mUserManager.isGuestUserAlwaysEphemeral()
|
||||||
|
|| !UserManager.isGuestUserAllowEphemeralStateChange()
|
||||||
|
|| !mUserCaps.isAdmin()
|
||||||
|
|| mUserCaps.disallowAddUser()
|
||||||
|
|| mUserCaps.disallowAddUserSetByAdmin()) {
|
||||||
|
return DISABLED_FOR_USER;
|
||||||
} else {
|
} else {
|
||||||
return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
||||||
}
|
}
|
||||||
|
@@ -463,7 +463,8 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
if (!isCurrentUserAdmin() && canSwitchUserNow() && !isCurrentUserGuest()) {
|
if (!isCurrentUserAdmin() && (canSwitchUserNow() || Flags.newMultiuserSettingsUx())
|
||||||
|
&& !isCurrentUserGuest()) {
|
||||||
String nickname = mUserManager.getUserName();
|
String nickname = mUserManager.getUserName();
|
||||||
MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, pos++,
|
MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, pos++,
|
||||||
getResources().getString(R.string.user_remove_user_menu, nickname));
|
getResources().getString(R.string.user_remove_user_menu, nickname));
|
||||||
@@ -1198,7 +1199,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<UserInfo> users;
|
List<UserInfo> users;
|
||||||
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
if (Flags.newMultiuserSettingsUx()) {
|
||||||
// Only users that can be switched to should show up here.
|
// Only users that can be switched to should show up here.
|
||||||
// e.g. Managed profiles appear under Accounts Settings instead
|
// e.g. Managed profiles appear under Accounts Settings instead
|
||||||
users = mUserManager.getAliveUsers().stream()
|
users = mUserManager.getAliveUsers().stream()
|
||||||
@@ -1265,7 +1266,10 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
pref.setSummary(R.string.user_summary_not_set_up);
|
pref.setSummary(R.string.user_summary_not_set_up);
|
||||||
// Disallow setting up user which results in user switching when the
|
// Disallow setting up user which results in user switching when the
|
||||||
// restriction is set.
|
// restriction is set.
|
||||||
pref.setEnabled(!mUserCaps.mDisallowSwitchUser && canSwitchUserNow());
|
// If newMultiuserSettingsUx flag is enabled, allow opening user details page
|
||||||
|
// since switch to user will be disabled
|
||||||
|
pref.setEnabled((!mUserCaps.mDisallowSwitchUser && canSwitchUserNow())
|
||||||
|
|| Flags.newMultiuserSettingsUx());
|
||||||
}
|
}
|
||||||
} else if (user.isRestricted()) {
|
} else if (user.isRestricted()) {
|
||||||
pref.setSummary(R.string.user_summary_restricted_profile);
|
pref.setSummary(R.string.user_summary_restricted_profile);
|
||||||
@@ -1425,13 +1429,13 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
getContext().getResources(), icon)));
|
getContext().getResources(), icon)));
|
||||||
pref.setKey(KEY_USER_GUEST);
|
pref.setKey(KEY_USER_GUEST);
|
||||||
pref.setOrder(Preference.DEFAULT_ORDER);
|
pref.setOrder(Preference.DEFAULT_ORDER);
|
||||||
if (mUserCaps.mDisallowSwitchUser) {
|
if (mUserCaps.mDisallowSwitchUser && !Flags.newMultiuserSettingsUx()) {
|
||||||
pref.setDisabledByAdmin(
|
pref.setDisabledByAdmin(
|
||||||
RestrictedLockUtilsInternal.getDeviceOwner(context));
|
RestrictedLockUtilsInternal.getDeviceOwner(context));
|
||||||
} else {
|
} else {
|
||||||
pref.setDisabledByAdmin(null);
|
pref.setDisabledByAdmin(null);
|
||||||
}
|
}
|
||||||
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
if (Flags.newMultiuserSettingsUx()) {
|
||||||
mGuestUserCategory.addPreference(pref);
|
mGuestUserCategory.addPreference(pref);
|
||||||
// guest user preference is shown hence also make guest category visible
|
// guest user preference is shown hence also make guest category visible
|
||||||
mGuestUserCategory.setVisible(true);
|
mGuestUserCategory.setVisible(true);
|
||||||
@@ -1464,11 +1468,11 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
private boolean updateAddGuestPreference(Context context, boolean isGuestAlreadyCreated) {
|
private boolean updateAddGuestPreference(Context context, boolean isGuestAlreadyCreated) {
|
||||||
boolean isVisible = false;
|
boolean isVisible = false;
|
||||||
if (!isGuestAlreadyCreated && mUserCaps.mCanAddGuest
|
if (!isGuestAlreadyCreated && (mUserCaps.mCanAddGuest
|
||||||
|
|| (Flags.newMultiuserSettingsUx() && mUserCaps.mDisallowAddUserSetByAdmin))
|
||||||
&& mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_GUEST)
|
&& mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_GUEST)
|
||||||
&& WizardManagerHelper.isDeviceProvisioned(context)
|
&& WizardManagerHelper.isDeviceProvisioned(context)
|
||||||
&& (mUserCaps.mUserSwitcherEnabled
|
&& (mUserCaps.mUserSwitcherEnabled || Flags.newMultiuserSettingsUx())) {
|
||||||
|| android.multiuser.Flags.newMultiuserSettingsUx())) {
|
|
||||||
Drawable icon = context.getDrawable(
|
Drawable icon = context.getDrawable(
|
||||||
com.android.settingslib.R.drawable.ic_account_circle);
|
com.android.settingslib.R.drawable.ic_account_circle);
|
||||||
mAddGuest.setIcon(centerAndTint(icon));
|
mAddGuest.setIcon(centerAndTint(icon));
|
||||||
@@ -1481,11 +1485,11 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
mAddGuest.setEnabled(false);
|
mAddGuest.setEnabled(false);
|
||||||
} else {
|
} else {
|
||||||
mAddGuest.setTitle(com.android.settingslib.R.string.guest_new_guest);
|
mAddGuest.setTitle(com.android.settingslib.R.string.guest_new_guest);
|
||||||
if (android.multiuser.Flags.newMultiuserSettingsUx()
|
if (Flags.newMultiuserSettingsUx()
|
||||||
&& mUserCaps.mDisallowAddUserSetByAdmin) {
|
&& mUserCaps.mDisallowAddUserSetByAdmin) {
|
||||||
mAddGuest.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
|
mAddGuest.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
|
||||||
} else {
|
} else {
|
||||||
mAddGuest.setEnabled(canSwitchUserNow());
|
mAddGuest.setEnabled(canSwitchUserNow() || Flags.newMultiuserSettingsUx());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1516,15 +1520,15 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
boolean canAddRestrictedProfile) {
|
boolean canAddRestrictedProfile) {
|
||||||
if ((mUserCaps.mCanAddUser && !mUserCaps.mDisallowAddUserSetByAdmin)
|
if ((mUserCaps.mCanAddUser && !mUserCaps.mDisallowAddUserSetByAdmin)
|
||||||
&& WizardManagerHelper.isDeviceProvisioned(context)
|
&& WizardManagerHelper.isDeviceProvisioned(context)
|
||||||
&& (mUserCaps.mUserSwitcherEnabled
|
&& (mUserCaps.mUserSwitcherEnabled || Flags.newMultiuserSettingsUx())) {
|
||||||
|| android.multiuser.Flags.newMultiuserSettingsUx())) {
|
|
||||||
addUser.setVisible(true);
|
addUser.setVisible(true);
|
||||||
addUser.setSelectable(true);
|
addUser.setSelectable(true);
|
||||||
final boolean canAddMoreUsers =
|
final boolean canAddMoreUsers =
|
||||||
mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_SECONDARY)
|
mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_SECONDARY)
|
||||||
|| (canAddRestrictedProfile
|
|| (canAddRestrictedProfile
|
||||||
&& mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_RESTRICTED));
|
&& mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_RESTRICTED));
|
||||||
addUser.setEnabled(canAddMoreUsers && !mAddingUser && canSwitchUserNow());
|
addUser.setEnabled(canAddMoreUsers && !mAddingUser
|
||||||
|
&& (canSwitchUserNow() || Flags.newMultiuserSettingsUx()));
|
||||||
|
|
||||||
if (!canAddMoreUsers) {
|
if (!canAddMoreUsers) {
|
||||||
addUser.setSummary(getString(R.string.user_add_max_count));
|
addUser.setSummary(getString(R.string.user_add_max_count));
|
||||||
@@ -1535,7 +1539,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
addUser.setDisabledByAdmin(
|
addUser.setDisabledByAdmin(
|
||||||
mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
|
mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
|
||||||
}
|
}
|
||||||
} else if (android.multiuser.Flags.newMultiuserSettingsUx()
|
} else if (Flags.newMultiuserSettingsUx()
|
||||||
&& mUserCaps.mDisallowAddUserSetByAdmin) {
|
&& mUserCaps.mDisallowAddUserSetByAdmin) {
|
||||||
addUser.setVisible(true);
|
addUser.setVisible(true);
|
||||||
addUser.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
|
addUser.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
|
||||||
|
@@ -368,6 +368,7 @@ public class UserSettingsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
|
||||||
public void updateUserList_cannotSwitchUser_shouldDisableAddUser() {
|
public void updateUserList_cannotSwitchUser_shouldDisableAddUser() {
|
||||||
mUserCapabilities.mCanAddUser = true;
|
mUserCapabilities.mCanAddUser = true;
|
||||||
doReturn(true).when(mUserManager).canAddMoreUsers(anyString());
|
doReturn(true).when(mUserManager).canAddMoreUsers(anyString());
|
||||||
@@ -383,6 +384,20 @@ public class UserSettingsTest {
|
|||||||
verify(mAddUserPreference).setSelectable(true);
|
verify(mAddUserPreference).setSelectable(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@RequiresFlagsEnabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
|
||||||
|
public void updateUserList_disallowAddUser_shouldDisableAddUserAndAddGuest() {
|
||||||
|
mUserCapabilities.mDisallowAddUserSetByAdmin = true;
|
||||||
|
doReturn(true).when(mUserManager).canAddMoreUsers(anyString());
|
||||||
|
doReturn(SWITCHABILITY_STATUS_OK)
|
||||||
|
.when(mUserManager).getUserSwitchability();
|
||||||
|
|
||||||
|
mFragment.updateUserList();
|
||||||
|
|
||||||
|
verify(mAddUserPreference).setVisible(true);
|
||||||
|
verify(mAddUserPreference).setDisabledByAdmin(any());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateUserList_canNotAddMoreUsers_shouldDisableAddUserWithSummary() {
|
public void updateUserList_canNotAddMoreUsers_shouldDisableAddUserWithSummary() {
|
||||||
mUserCapabilities.mCanAddUser = true;
|
mUserCapabilities.mCanAddUser = true;
|
||||||
@@ -401,6 +416,7 @@ public class UserSettingsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
|
||||||
public void updateUserList_cannotSwitchUser_shouldDisableAddGuest() {
|
public void updateUserList_cannotSwitchUser_shouldDisableAddGuest() {
|
||||||
mUserCapabilities.mCanAddGuest = true;
|
mUserCapabilities.mCanAddGuest = true;
|
||||||
doReturn(true)
|
doReturn(true)
|
||||||
@@ -414,6 +430,26 @@ public class UserSettingsTest {
|
|||||||
verify(mAddGuestPreference).setSelectable(true);
|
verify(mAddGuestPreference).setSelectable(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@RequiresFlagsEnabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
|
||||||
|
public void updateUserList_cannotSwitchUser_shouldKeepPreferencesVisibleAndEnabled() {
|
||||||
|
givenUsers(getAdminUser(true));
|
||||||
|
mUserCapabilities.mCanAddGuest = true;
|
||||||
|
mUserCapabilities.mCanAddUser = true;
|
||||||
|
mUserCapabilities.mDisallowSwitchUser = true;
|
||||||
|
doReturn(true)
|
||||||
|
.when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_GUEST));
|
||||||
|
doReturn(true)
|
||||||
|
.when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_SECONDARY));
|
||||||
|
|
||||||
|
mFragment.updateUserList();
|
||||||
|
|
||||||
|
verify(mAddGuestPreference).setVisible(true);
|
||||||
|
verify(mAddGuestPreference).setEnabled(true);
|
||||||
|
verify(mAddUserPreference).setVisible(true);
|
||||||
|
verify(mAddUserPreference).setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
|
@RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
|
||||||
public void updateUserList_addUserDisallowedByAdmin_shouldNotShowAddUser() {
|
public void updateUserList_addUserDisallowedByAdmin_shouldNotShowAddUser() {
|
||||||
@@ -670,6 +706,7 @@ public class UserSettingsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
|
||||||
public void updateUserList_uninitializedUserAndCanNotSwitchUser_shouldDisablePref() {
|
public void updateUserList_uninitializedUserAndCanNotSwitchUser_shouldDisablePref() {
|
||||||
UserInfo uninitializedUser = getSecondaryUser(false);
|
UserInfo uninitializedUser = getSecondaryUser(false);
|
||||||
removeFlag(uninitializedUser, UserInfo.FLAG_INITIALIZED);
|
removeFlag(uninitializedUser, UserInfo.FLAG_INITIALIZED);
|
||||||
|
Reference in New Issue
Block a user