Merge "Suppress rawData settings from indexing when page is disabled for search" into main

This commit is contained in:
Jason Chiu
2024-05-29 03:51:38 +00:00
committed by Android (Google) Code Review
2 changed files with 21 additions and 2 deletions

View File

@@ -45,6 +45,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* A basic SearchIndexProvider that returns no data to index.
@@ -117,11 +118,18 @@ public class BaseSearchIndexProvider implements Indexable.SearchIndexProvider {
@Override
@CallSuper
public List<String> getNonIndexableKeys(Context context) {
final List<String> nonIndexableKeys = new ArrayList<>();
if (!isPageSearchEnabled(context)) {
// Entire page should be suppressed, mark all keys from this page as non-indexable.
return getNonIndexableKeysFromXml(context, true /* suppressAllPage */);
nonIndexableKeys.addAll(
getNonIndexableKeysFromXml(context, true /* suppressAllPage */));
nonIndexableKeys.addAll(
getRawDataToIndex(context, true /* enabled */)
.stream()
.map(data -> data.key)
.collect(Collectors.toList()));
return nonIndexableKeys;
}
final List<String> nonIndexableKeys = new ArrayList<>();
nonIndexableKeys.addAll(getNonIndexableKeysFromXml(context, false /* suppressAllPage */));
final List<AbstractPreferenceController> controllers = getPreferenceControllers(context);
if (controllers != null && !controllers.isEmpty()) {

View File

@@ -166,6 +166,16 @@ public class BaseSearchIndexProviderTest {
return Collections.singletonList(sir);
}
@Override
public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
List<SearchIndexableRaw> rawData = super.getRawDataToIndex(context, enabled);
SearchIndexableRaw raw = new SearchIndexableRaw(context);
raw.key = TEST_PREF_KEY;
raw.title = "title";
rawData.add(raw);
return rawData;
}
@Override
protected boolean isPageSearchEnabled(Context context) {
return false;
@@ -176,6 +186,7 @@ public class BaseSearchIndexProviderTest {
provider.getNonIndexableKeys(RuntimeEnvironment.application);
assertThat(nonIndexableKeys).contains("status_header");
assertThat(nonIndexableKeys).contains(TEST_PREF_KEY);
}
@Test