From d1b0ad25faab762dfeef8adad68c3aacfb1d6412 Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Tue, 28 May 2024 17:26:18 +0800 Subject: [PATCH] Suppress rawData settings from indexing when page is disabled for search Test: robotest, manual Fix: 324424783 Change-Id: Ie8423d16df387f13cf35c03005640cfd08a5b492 --- .../settings/search/BaseSearchIndexProvider.java | 12 ++++++++++-- .../settings/search/BaseSearchIndexProviderTest.java | 11 +++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/search/BaseSearchIndexProvider.java b/src/com/android/settings/search/BaseSearchIndexProvider.java index 7fa83554988..cc05270cc0e 100644 --- a/src/com/android/settings/search/BaseSearchIndexProvider.java +++ b/src/com/android/settings/search/BaseSearchIndexProvider.java @@ -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 getNonIndexableKeys(Context context) { + final List 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 nonIndexableKeys = new ArrayList<>(); nonIndexableKeys.addAll(getNonIndexableKeysFromXml(context, false /* suppressAllPage */)); final List controllers = getPreferenceControllers(context); if (controllers != null && !controllers.isEmpty()) { diff --git a/tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java b/tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java index 09b1ea944a5..18dc00480b0 100644 --- a/tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java +++ b/tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java @@ -166,6 +166,16 @@ public class BaseSearchIndexProviderTest { return Collections.singletonList(sir); } + @Override + public List getRawDataToIndex(Context context, boolean enabled) { + List 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