diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java index 3e6feb74094..98226e92d31 100644 --- a/src/com/android/settings/accounts/AccountPreferenceController.java +++ b/src/com/android/settings/accounts/AccountPreferenceController.java @@ -187,6 +187,11 @@ public class AccountPreferenceController extends AbstractPreferenceController updateUi(); } + @Override + public void updateRawDataToIndex(List rawData) { + rawData.add(newAddAccountRawData()); + } + @Override public void updateDynamicRawDataToIndex(List rawData) { 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() { RestrictedPreference preference = new RestrictedPreference(mFragment.getPreferenceManager().getContext()); diff --git a/src/com/android/settings/search/BaseSearchIndexProvider.java b/src/com/android/settings/search/BaseSearchIndexProvider.java index d21d983eae6..7fa83554988 100644 --- a/src/com/android/settings/search/BaseSearchIndexProvider.java +++ b/src/com/android/settings/search/BaseSearchIndexProvider.java @@ -73,7 +73,19 @@ public class BaseSearchIndexProvider implements Indexable.SearchIndexProvider { @Override public List getRawDataToIndex(Context context, boolean enabled) { - return null; + final List raws = new ArrayList<>(); + final List 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 diff --git a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java index 89e00e12c7d..cab1811d0e6 100644 --- a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java @@ -254,25 +254,26 @@ public class AccountPreferenceControllerTest { } @Test - public void updateRawDataToIndex_ManagedProfile_shouldNotUpdate() { + public void updateRawDataToIndex_noManagedProfile_shouldContainAddAccount() { + final List 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 data = new ArrayList<>(); when(mUserManager.isManagedProfile()).thenReturn(true); mController.updateRawDataToIndex(data); - assertThat(data).isEmpty(); - } - - @Test - public void updateRawDataToIndex_DisabledUser_shouldNotUpdate() { - final List data = new ArrayList<>(); - final List 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(); + assertThat(data).hasSize(1); + assertThat(data.get(0).key).isEqualTo("add_account"); } @Test