Update search index in UserSettings based on allowed user types

If USER_TYPE_FULL_RESTRICTED is disallowed, addUserPreference is renamed to only mention user. But search results still state default name "Add user or profile". This change updates this entry in the search index.

Bug: 365899560
Test: atest UserSettingsTest#testGetRawDataToIndex_returnAllIndexablePreferences && atest UserSettingsTest#testGetRawDataToIndex_addRestrictedProfileAllowed_addUserTitleIsCorrect && atest UserSettingsTest#testGetRawDataToIndex_addRestrictedProfileDisallowed_addUserTitleIsCorrect
Flag: EXEMPT bugfix_only
Change-Id: I3c26180225491e4916141a3fca9d2e7ab36e8cfc
This commit is contained in:
Tetiana Meronyk
2024-10-03 11:20:52 +00:00
parent bdd8c89ed2
commit 1da65db12f
2 changed files with 71 additions and 1 deletions

View File

@@ -1834,6 +1834,24 @@ public class UserSettings extends SettingsPreferenceFragment
MultiUserSwitchBarController.class.getName();
rawData.add(allowMultipleUsersResult);
SearchIndexableRaw addUserData = new SearchIndexableRaw(context);
addUserData.key = KEY_ADD_USER;
// Dynamically set the title of addUser preference
final UserCapabilities userCaps = UserCapabilities.create(context);
if (!userCaps.mCanAddRestrictedProfile) {
addUserData.title = context.getString(
com.android.settingslib.R.string.user_add_user);
} else {
addUserData.title = context.getString(
R.string.user_add_user_or_profile_menu);
}
addUserData.screenTitle = context.getString(R.string.user_settings_title);
addUserData.iconResId = R.drawable.ic_add_40dp;
rawData.add(addUserData);
return rawData;
}

View File

@@ -37,6 +37,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.ComponentName;
import android.content.Context;
@@ -112,6 +113,7 @@ public class UserSettingsTest {
private static final String KEY_USER_GUEST = "user_guest";
private static final String KEY_ALLOW_MULTIPLE_USERS = "allow_multiple_users";
private static final String KEY_USER_SETTINGS_SCREEN = "user_settings_screen";
private static final String KEY_ADD_USER = "user_add";
private static final int ACTIVE_USER_ID = 0;
private static final int INACTIVE_ADMIN_USER_ID = 1;
private static final int INACTIVE_SECONDARY_USER_ID = 14;
@@ -130,6 +132,8 @@ public class UserSettingsTest {
@Mock
private PreferenceManager mMockPreferenceManager;
@Mock
private DevicePolicyManager mDevicePolicyManager;
@Mock
private UserPreference mMePreference;
@Mock
private RestrictedPreference mAddUserPreference;
@@ -222,7 +226,7 @@ public class UserSettingsTest {
@Test
public void testGetRawDataToIndex_returnAllIndexablePreferences() {
String[] expectedKeys = {KEY_ALLOW_MULTIPLE_USERS, KEY_USER_SETTINGS_SCREEN};
String[] expectedKeys = {KEY_ALLOW_MULTIPLE_USERS, KEY_USER_SETTINGS_SCREEN, KEY_ADD_USER};
List<String> keysResultList = new ArrayList<>();
ShadowUserManager.getShadow().setSupportsMultipleUsers(true);
List<SearchIndexableRaw> rawData =
@@ -235,6 +239,54 @@ public class UserSettingsTest {
assertThat(keysResultList).containsExactly(expectedKeys);
}
@Test
public void testGetRawDataToIndex_addRestrictedProfileAllowed_addUserTitleIsCorrect() {
ShadowUserManager.getShadow().setSupportsMultipleUsers(true);
SettingsShadowResources.overrideResource(
com.android.settings.R.bool.config_offer_restricted_profiles,
Boolean.TRUE);
when(mUserManager.hasBaseUserRestriction(UserManager.DISALLOW_ADD_USER, mContext.getUser()))
.thenReturn(false);
ShadowUserManager.getShadow().setUserTypeEnabled(UserManager.USER_TYPE_FULL_RESTRICTED,
true);
when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
.thenReturn(mDevicePolicyManager);
when(mDevicePolicyManager.isDeviceManaged()).thenReturn(false);
List<SearchIndexableRaw> rawData =
UserSettings.SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, true);
String title = null;
for (SearchIndexableRaw rawDataItem : rawData) {
if (rawDataItem.key.equals(KEY_ADD_USER)) {
title = rawDataItem.title;
}
}
assertThat(title).isEqualTo(mContext.getString(
com.android.settings.R.string.user_add_user_or_profile_menu));
}
@Test
public void testGetRawDataToIndex_addRestrictedProfileDisallowed_addUserTitleIsCorrect() {
ShadowUserManager.getShadow().setSupportsMultipleUsers(true);
SettingsShadowResources.overrideResource(
com.android.settings.R.bool.config_offer_restricted_profiles,
Boolean.FALSE);
List<SearchIndexableRaw> rawData =
UserSettings.SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, true);
String title = null;
for (SearchIndexableRaw rawDataItem : rawData) {
if (rawDataItem.key.equals(KEY_ADD_USER)) {
title = rawDataItem.title;
}
}
assertThat(title).isEqualTo(mContext.getString(
com.android.settingslib.R.string.user_add_user));
}
@Test
public void testAssignDefaultPhoto_hasDefaultUserIconSize() {
doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);