Integrated SearchIndexableResources interface in Settings

- New SearchIndexableResources interface returns SearchIndexableBundle,
we don't need reflection to get SearchIndexableProvider

Bug: 135053028
Test: robolectric, check database search_index.db items
Change-Id: I5ed3416ccf72ef3d38db817fcb4aff7502649ed4
This commit is contained in:
Raff Tsai
2019-09-27 13:45:23 +08:00
parent cdaa57742e
commit c5e1fc677c
14 changed files with 109 additions and 105 deletions

View File

@@ -53,9 +53,9 @@ import com.android.settings.core.PreferenceXmlParserUtils;
import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.DatabaseIndexingUtils;
import com.android.settingslib.search.Indexable.SearchIndexProvider;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.search.Indexable.SearchIndexProvider;
import com.android.settingslib.search.SearchIndexableData;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -101,14 +101,13 @@ class SliceDataConverter {
public List<SliceData> getSliceData() {
List<SliceData> sliceData = new ArrayList<>();
final Collection<Class> indexableClasses = FeatureFactory.getFactory(mContext)
final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(mContext)
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
for (Class clazz : indexableClasses) {
final String fragmentName = clazz.getName();
for (SearchIndexableData bundle : bundles) {
final String fragmentName = bundle.getTargetClass().getName();
final SearchIndexProvider provider = DatabaseIndexingUtils.getSearchIndexProvider(
clazz);
final SearchIndexProvider provider = bundle.getSearchIndexProvider();
// CodeInspection test guards against the null check. Keep check in case of bad actors.
if (provider == null) {