Suppress rawData settings from indexing when page is disabled for search

Test: robotest, manual
Fix: 324424783
Change-Id: Ie8423d16df387f13cf35c03005640cfd08a5b492
This commit is contained in:
Jason Chiu
2024-05-28 17:26:18 +08:00
parent a05fab6dc5
commit d1b0ad25fa
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()) {