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:
Tetiana Meronyk
2024-06-18 18:10:25 +00:00
parent caef61b5eb
commit 0f311e1195
6 changed files with 95 additions and 40 deletions

View File

@@ -368,6 +368,7 @@ public class UserSettingsTest {
}
@Test
@RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
public void updateUserList_cannotSwitchUser_shouldDisableAddUser() {
mUserCapabilities.mCanAddUser = true;
doReturn(true).when(mUserManager).canAddMoreUsers(anyString());
@@ -383,6 +384,20 @@ public class UserSettingsTest {
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
public void updateUserList_canNotAddMoreUsers_shouldDisableAddUserWithSummary() {
mUserCapabilities.mCanAddUser = true;
@@ -401,6 +416,7 @@ public class UserSettingsTest {
}
@Test
@RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
public void updateUserList_cannotSwitchUser_shouldDisableAddGuest() {
mUserCapabilities.mCanAddGuest = true;
doReturn(true)
@@ -414,6 +430,26 @@ public class UserSettingsTest {
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
@RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
public void updateUserList_addUserDisallowedByAdmin_shouldNotShowAddUser() {
@@ -670,6 +706,7 @@ public class UserSettingsTest {
}
@Test
@RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
public void updateUserList_uninitializedUserAndCanNotSwitchUser_shouldDisablePref() {
UserInfo uninitializedUser = getSecondaryUser(false);
removeFlag(uninitializedUser, UserInfo.FLAG_INITIALIZED);