Support "Add account" search indexing

Implement a default getRawDataToIndex method of preference controller
base for indexing preference's raw data.

Test: manual, robotest
Fix: 243899250
Change-Id: I3fb4f88c881edcbaa3c5bfc7f78cc2e169b0380f
This commit is contained in:
Jason Chiu
2023-12-28 18:44:26 +08:00
parent dd61b6bb3d
commit 01f992a698
3 changed files with 41 additions and 15 deletions

View File

@@ -187,6 +187,11 @@ public class AccountPreferenceController extends AbstractPreferenceController
updateUi(); updateUi();
} }
@Override
public void updateRawDataToIndex(List<SearchIndexableRaw> rawData) {
rawData.add(newAddAccountRawData());
}
@Override @Override
public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) { public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) {
if (!isAvailable()) { if (!isAvailable()) {
@@ -428,6 +433,14 @@ public class AccountPreferenceController extends AbstractPreferenceController
})); }));
} }
private SearchIndexableRaw newAddAccountRawData() {
SearchIndexableRaw data = new SearchIndexableRaw(mContext);
data.key = PREF_KEY_ADD_ACCOUNT;
data.title = mContext.getString(R.string.add_account_label);
data.iconResId = R.drawable.ic_add_24dp;
return data;
}
private RestrictedPreference newAddAccountPreference() { private RestrictedPreference newAddAccountPreference() {
RestrictedPreference preference = RestrictedPreference preference =
new RestrictedPreference(mFragment.getPreferenceManager().getContext()); new RestrictedPreference(mFragment.getPreferenceManager().getContext());

View File

@@ -73,7 +73,19 @@ public class BaseSearchIndexProvider implements Indexable.SearchIndexProvider {
@Override @Override
public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
return null; final List<SearchIndexableRaw> raws = new ArrayList<>();
final List<AbstractPreferenceController> controllers = getPreferenceControllers(context);
if (controllers == null || controllers.isEmpty()) {
return raws;
}
for (AbstractPreferenceController controller : controllers) {
if (controller instanceof PreferenceControllerMixin) {
((PreferenceControllerMixin) controller).updateRawDataToIndex(raws);
} else if (controller instanceof BasePreferenceController) {
((BasePreferenceController) controller).updateRawDataToIndex(raws);
}
}
return raws;
} }
@Override @Override

View File

@@ -254,25 +254,26 @@ public class AccountPreferenceControllerTest {
} }
@Test @Test
public void updateRawDataToIndex_ManagedProfile_shouldNotUpdate() { public void updateRawDataToIndex_noManagedProfile_shouldContainAddAccount() {
final List<SearchIndexableRaw> data = new ArrayList<>();
when(mUserManager.isManagedProfile()).thenReturn(false);
mController.updateRawDataToIndex(data);
assertThat(data).hasSize(1);
assertThat(data.get(0).key).isEqualTo("add_account");
}
@Test
public void updateRawDataToIndex_ManagedProfile_shouldContainAddAccount() {
final List<SearchIndexableRaw> data = new ArrayList<>(); final List<SearchIndexableRaw> data = new ArrayList<>();
when(mUserManager.isManagedProfile()).thenReturn(true); when(mUserManager.isManagedProfile()).thenReturn(true);
mController.updateRawDataToIndex(data); mController.updateRawDataToIndex(data);
assertThat(data).isEmpty(); assertThat(data).hasSize(1);
} assertThat(data.get(0).key).isEqualTo("add_account");
@Test
public void updateRawDataToIndex_DisabledUser_shouldNotUpdate() {
final List<SearchIndexableRaw> data = new ArrayList<>();
final List<UserInfo> infos = new ArrayList<>();
infos.add(new UserInfo(1, "user 1", UserInfo.FLAG_DISABLED));
when(mUserManager.isManagedProfile()).thenReturn(false);
when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
mController.updateRawDataToIndex(data);
assertThat(data).isEmpty();
} }
@Test @Test