Loading src/com/android/settings/core/BasePreferenceController.java +9 −1 Original line number Diff line number Diff line Loading @@ -274,6 +274,14 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl public void updateRawDataToIndex(List<SearchIndexableRaw> rawData) { } /** * Updates dynamic raw data for search provider. * * Called by SearchIndexProvider#getDynamicRawDataToIndex */ public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) { } /** * Set {@link UiBlockListener} * Loading src/com/android/settings/core/PreferenceControllerMixin.java +9 −1 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ package com.android.settings.core; import android.text.TextUtils; import android.util.Log; import com.android.settingslib.search.SearchIndexableRaw; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexableRaw; import java.util.List; Loading Loading @@ -62,4 +62,12 @@ public interface PreferenceControllerMixin { */ default void updateRawDataToIndex(List<SearchIndexableRaw> rawData) { } /** * Updates dynamic raw data for search provider. * * Called by SearchIndexProvider#getDynamicRawDataToIndex */ default void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) { } } src/com/android/settings/search/BaseSearchIndexProvider.java +18 −1 Original line number Diff line number Diff line Loading @@ -77,8 +77,25 @@ public class BaseSearchIndexProvider implements Indexable.SearchIndexProvider { } @Override @CallSuper public List<SearchIndexableRaw> getDynamicRawDataToIndex(Context context, boolean enabled) { return null; final List<SearchIndexableRaw> dynamicRaws = new ArrayList<>(); final List<AbstractPreferenceController> controllers = getPreferenceControllers(context); if (controllers == null || controllers.isEmpty()) { return dynamicRaws; } for (AbstractPreferenceController controller : controllers) { if (controller instanceof PreferenceControllerMixin) { ((PreferenceControllerMixin) controller).updateDynamicRawDataToIndex(dynamicRaws); } else if (controller instanceof BasePreferenceController) { ((BasePreferenceController) controller).updateDynamicRawDataToIndex(dynamicRaws); } else { Log.e(TAG, controller.getClass().getName() + " must implement " + PreferenceControllerMixin.class.getName() + " treating the dynamic indexable"); } } return dynamicRaws; } @Override Loading tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexableRaw; import org.junit.Before; import org.junit.Test; Loading Loading @@ -77,6 +78,12 @@ public class BaseSearchIndexProviderTest { public String getPreferenceKey() { return TEST_PREF_KEY; } @Override public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) { final SearchIndexableRaw raw = new SearchIndexableRaw(this.mContext); rawData.add(raw); } } @Test Loading Loading @@ -190,4 +197,18 @@ public class BaseSearchIndexProviderTest { assertThat(nonIndexableKeys).contains("pref_key_5"); } @Test public void getDynamicRawDataToIndex_noPreferenceController_shouldReturnEmptyList() { assertThat(mIndexProvider.getDynamicRawDataToIndex(mContext, true)).isEmpty(); } @Test public void getDynamicRawDataToIndex_hasDynamicRaw_shouldNotEmpty() { List<AbstractPreferenceController> controllers = new ArrayList<>(); controllers.add(new AvailablePreferenceController(mContext)); doReturn(controllers).when(mIndexProvider).createPreferenceControllers(mContext); assertThat(mIndexProvider.getDynamicRawDataToIndex(mContext, true)).isNotEmpty(); } } Loading
src/com/android/settings/core/BasePreferenceController.java +9 −1 Original line number Diff line number Diff line Loading @@ -274,6 +274,14 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl public void updateRawDataToIndex(List<SearchIndexableRaw> rawData) { } /** * Updates dynamic raw data for search provider. * * Called by SearchIndexProvider#getDynamicRawDataToIndex */ public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) { } /** * Set {@link UiBlockListener} * Loading
src/com/android/settings/core/PreferenceControllerMixin.java +9 −1 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ package com.android.settings.core; import android.text.TextUtils; import android.util.Log; import com.android.settingslib.search.SearchIndexableRaw; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexableRaw; import java.util.List; Loading Loading @@ -62,4 +62,12 @@ public interface PreferenceControllerMixin { */ default void updateRawDataToIndex(List<SearchIndexableRaw> rawData) { } /** * Updates dynamic raw data for search provider. * * Called by SearchIndexProvider#getDynamicRawDataToIndex */ default void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) { } }
src/com/android/settings/search/BaseSearchIndexProvider.java +18 −1 Original line number Diff line number Diff line Loading @@ -77,8 +77,25 @@ public class BaseSearchIndexProvider implements Indexable.SearchIndexProvider { } @Override @CallSuper public List<SearchIndexableRaw> getDynamicRawDataToIndex(Context context, boolean enabled) { return null; final List<SearchIndexableRaw> dynamicRaws = new ArrayList<>(); final List<AbstractPreferenceController> controllers = getPreferenceControllers(context); if (controllers == null || controllers.isEmpty()) { return dynamicRaws; } for (AbstractPreferenceController controller : controllers) { if (controller instanceof PreferenceControllerMixin) { ((PreferenceControllerMixin) controller).updateDynamicRawDataToIndex(dynamicRaws); } else if (controller instanceof BasePreferenceController) { ((BasePreferenceController) controller).updateDynamicRawDataToIndex(dynamicRaws); } else { Log.e(TAG, controller.getClass().getName() + " must implement " + PreferenceControllerMixin.class.getName() + " treating the dynamic indexable"); } } return dynamicRaws; } @Override Loading
tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexableRaw; import org.junit.Before; import org.junit.Test; Loading Loading @@ -77,6 +78,12 @@ public class BaseSearchIndexProviderTest { public String getPreferenceKey() { return TEST_PREF_KEY; } @Override public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) { final SearchIndexableRaw raw = new SearchIndexableRaw(this.mContext); rawData.add(raw); } } @Test Loading Loading @@ -190,4 +197,18 @@ public class BaseSearchIndexProviderTest { assertThat(nonIndexableKeys).contains("pref_key_5"); } @Test public void getDynamicRawDataToIndex_noPreferenceController_shouldReturnEmptyList() { assertThat(mIndexProvider.getDynamicRawDataToIndex(mContext, true)).isEmpty(); } @Test public void getDynamicRawDataToIndex_hasDynamicRaw_shouldNotEmpty() { List<AbstractPreferenceController> controllers = new ArrayList<>(); controllers.add(new AvailablePreferenceController(mContext)); doReturn(controllers).when(mIndexProvider).createPreferenceControllers(mContext); assertThat(mIndexProvider.getDynamicRawDataToIndex(mContext, true)).isNotEmpty(); } }