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:
@@ -68,6 +68,7 @@ import com.android.settings.slices.SettingsSliceProvider;
|
||||
import com.android.settingslib.drawer.DashboardCategory;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
import com.android.settingslib.search.Indexable;
|
||||
import com.android.settingslib.search.SearchIndexableData;
|
||||
import com.android.settingslib.search.SearchIndexableRaw;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -260,14 +261,14 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
||||
}
|
||||
|
||||
private List<String> getNonIndexableKeysFromProvider(Context context) {
|
||||
final Collection<Class> values = getIndexableProviderValues(context);
|
||||
final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
|
||||
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
|
||||
|
||||
final List<String> nonIndexableKeys = new ArrayList<>();
|
||||
|
||||
for (Class<?> clazz : values) {
|
||||
for (SearchIndexableData bundle : bundles) {
|
||||
final long startTime = System.currentTimeMillis();
|
||||
final Indexable.SearchIndexProvider provider =
|
||||
DatabaseIndexingUtils.getSearchIndexProvider(clazz);
|
||||
|
||||
Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
|
||||
List<String> providerNonIndexableKeys;
|
||||
try {
|
||||
providerNonIndexableKeys = provider.getNonIndexableKeys(context);
|
||||
@@ -281,7 +282,8 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
||||
if (System.getProperty(SYSPROP_CRASH_ON_ERROR) != null) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
Log.e(TAG, "Error trying to get non-indexable keys from: " + clazz.getName(), e);
|
||||
Log.e(TAG, "Error trying to get non-indexable keys from: "
|
||||
+ bundle.getTargetClass().getName(), e);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -310,12 +312,12 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
||||
}
|
||||
|
||||
private List<SearchIndexableResource> getSearchIndexableResourcesFromProvider(Context context) {
|
||||
final Collection<Class> values = getIndexableProviderValues(context);
|
||||
final List<SearchIndexableResource> resourceList = new ArrayList<>();
|
||||
final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
|
||||
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
|
||||
List<SearchIndexableResource> resourceList = new ArrayList<>();
|
||||
|
||||
for (Class<?> clazz : values) {
|
||||
final Indexable.SearchIndexProvider provider =
|
||||
DatabaseIndexingUtils.getSearchIndexProvider(clazz);
|
||||
for (SearchIndexableData bundle : bundles) {
|
||||
Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
|
||||
final List<SearchIndexableResource> resList =
|
||||
provider.getXmlResourcesToIndex(context, true);
|
||||
|
||||
@@ -325,7 +327,7 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
||||
|
||||
for (SearchIndexableResource item : resList) {
|
||||
item.className = TextUtils.isEmpty(item.className)
|
||||
? clazz.getName()
|
||||
? bundle.getTargetClass().getName()
|
||||
: item.className;
|
||||
}
|
||||
|
||||
@@ -336,14 +338,14 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
||||
}
|
||||
|
||||
private List<SearchIndexableRaw> getSearchIndexableRawFromProvider(Context context) {
|
||||
final Collection<Class> values = getIndexableProviderValues(context);
|
||||
final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
|
||||
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
|
||||
final List<SearchIndexableRaw> rawList = new ArrayList<>();
|
||||
|
||||
for (Class<?> clazz : values) {
|
||||
final Indexable.SearchIndexProvider provider =
|
||||
DatabaseIndexingUtils.getSearchIndexProvider(clazz);
|
||||
final List<SearchIndexableRaw> providerRaws =
|
||||
provider.getRawDataToIndex(context, true /* enabled */);
|
||||
for (SearchIndexableData bundle : bundles) {
|
||||
Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
|
||||
final List<SearchIndexableRaw> providerRaws = provider.getRawDataToIndex(context,
|
||||
true /* enabled */);
|
||||
|
||||
if (providerRaws == null) {
|
||||
continue;
|
||||
@@ -352,7 +354,7 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
||||
for (SearchIndexableRaw raw : providerRaws) {
|
||||
// The classname and intent information comes from the PreIndexData
|
||||
// This will be more clear when provider conversion is done at PreIndex time.
|
||||
raw.className = clazz.getName();
|
||||
raw.className = bundle.getTargetClass().getName();
|
||||
|
||||
}
|
||||
rawList.addAll(providerRaws);
|
||||
@@ -362,12 +364,12 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
||||
}
|
||||
|
||||
private List<SearchIndexableRaw> getDynamicSearchIndexableRawFromProvider(Context context) {
|
||||
final Collection<Class> values = getIndexableProviderValues(context);
|
||||
final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
|
||||
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
|
||||
final List<SearchIndexableRaw> rawList = new ArrayList<>();
|
||||
|
||||
for (Class<?> clazz : values) {
|
||||
final Indexable.SearchIndexProvider provider =
|
||||
DatabaseIndexingUtils.getSearchIndexProvider(clazz);
|
||||
for (SearchIndexableData bundle : bundles) {
|
||||
final Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
|
||||
final List<SearchIndexableRaw> providerRaws =
|
||||
provider.getDynamicRawDataToIndex(context, true /* enabled */);
|
||||
|
||||
@@ -378,7 +380,7 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
||||
for (SearchIndexableRaw raw : providerRaws) {
|
||||
// The classname and intent information comes from the PreIndexData
|
||||
// This will be more clear when provider conversion is done at PreIndex time.
|
||||
raw.className = clazz.getName();
|
||||
raw.className = bundle.getTargetClass().getName();
|
||||
|
||||
}
|
||||
rawList.addAll(providerRaws);
|
||||
@@ -410,9 +412,4 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
|
||||
|
||||
return rawList;
|
||||
}
|
||||
|
||||
private Collection<Class> getIndexableProviderValues(Context context) {
|
||||
return FeatureFactory.getFactory(context)
|
||||
.getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user