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:
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user