diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java index 55ad6b0b29b..df826cb8cef 100644 --- a/src/com/android/settings/slices/SettingsSliceProvider.java +++ b/src/com/android/settings/slices/SettingsSliceProvider.java @@ -42,7 +42,6 @@ import com.android.settingslib.utils.ThreadUtils; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.WeakHashMap; diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java index 0a4d51b7d3b..8ce681bbe30 100644 --- a/src/com/android/settings/slices/SliceBuilderUtils.java +++ b/src/com/android/settings/slices/SliceBuilderUtils.java @@ -238,7 +238,7 @@ public class SliceBuilderUtils { (TogglePreferenceController) controller; final SliceAction sliceAction = getToggleAction(context, sliceData, toggleController.isChecked()); - final List keywords = buildSliceKeywords(sliceData.getKeywords()); + final List keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS) .addRow(rowBuilder -> rowBuilder @@ -256,7 +256,7 @@ public class SliceBuilderUtils { final PendingIntent contentIntent = getContentPendingIntent(context, sliceData); final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource()); final CharSequence subtitleText = getSubtitleText(context, controller, sliceData); - final List keywords = buildSliceKeywords(sliceData.getKeywords()); + final List keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS) .addRow(rowBuilder -> rowBuilder @@ -276,7 +276,7 @@ public class SliceBuilderUtils { final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource()); final SliceAction primaryAction = new SliceAction(contentIntent, icon, sliceData.getTitle()); - final List keywords = buildSliceKeywords(sliceData.getKeywords()); + final List keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS) .addInputRange(builder -> builder @@ -324,19 +324,28 @@ public class SliceBuilderUtils { || TextUtils.equals(summary, doublePlaceHolder)); } - private static List buildSliceKeywords(String keywordString) { - if (keywordString == null) { - return new ArrayList<>(); + private static List buildSliceKeywords(SliceData data) { + final List keywords = new ArrayList<>(); + + keywords.add(data.getTitle()); + + if (!TextUtils.equals(data.getTitle(), data.getScreenTitle())) { + keywords.add(data.getScreenTitle().toString()); } - final String[] keywords = keywordString.split(","); - return Arrays.asList(keywords); + final String keywordString = data.getKeywords(); + if (keywordString != null) { + final String[] keywordArray = keywordString.split(","); + keywords.addAll(Arrays.asList(keywordArray)); + } + + return keywords; } private static Slice buildUnavailableSlice(Context context, SliceData data, BasePreferenceController controller) { final String title = data.getTitle(); - final List keywords = buildSliceKeywords(data.getKeywords()); + final List keywords = buildSliceKeywords(data); final String summary; final SliceAction primaryAction; final IconCompat icon = IconCompat.createWithResource(context, data.getIconResource()); diff --git a/src/com/android/settings/slices/SliceDataConverter.java b/src/com/android/settings/slices/SliceDataConverter.java index eb6a44fdabe..7bd66baa390 100644 --- a/src/com/android/settings/slices/SliceDataConverter.java +++ b/src/com/android/settings/slices/SliceDataConverter.java @@ -185,7 +185,6 @@ class SliceDataConverter { | MetadataFlag.FLAG_NEED_PREF_TITLE | MetadataFlag.FLAG_NEED_PREF_ICON | MetadataFlag.FLAG_NEED_PREF_SUMMARY - | MetadataFlag.FLAG_NEED_KEYWORDS | MetadataFlag.FLAG_NEED_PLATFORM_SLICE_FLAG); for (Bundle bundle : metadata) { @@ -198,7 +197,6 @@ class SliceDataConverter { final String key = bundle.getString(METADATA_KEY); final String title = bundle.getString(METADATA_TITLE); final String summary = bundle.getString(METADATA_SUMMARY); - final String keywords = bundle.getString(METADATA_KEYWORDS); final int iconResId = bundle.getInt(METADATA_ICON); final int sliceType = SliceBuilderUtils.getSliceType(mContext, controllerClassName, key); @@ -210,7 +208,6 @@ class SliceDataConverter { .setSummary(summary) .setIcon(iconResId) .setScreenTitle(screenTitle) - .setKeywords(keywords) .setPreferenceControllerClassName(controllerClassName) .setFragmentName(fragmentName) .setSliceType(sliceType) diff --git a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java index 87ada3697e3..674d6299a1e 100644 --- a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java +++ b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java @@ -56,7 +56,6 @@ public class SliceDataConverterTest { private static final String FAKE_TITLE = "title"; private static final String FAKE_SUMMARY = "summary"; private static final String FAKE_SCREEN_TITLE = "screen_title"; - private static final String FAKE_KEYWORDS = "a, b, c"; private static final String FAKE_FRAGMENT_CLASSNAME = FakeIndexProvider.class.getName(); private static final String FAKE_CONTROLLER_NAME = FakePreferenceController.class.getName(); private static final String ACCESSIBILITY_FRAGMENT = AccessibilitySettings.class.getName(); @@ -118,7 +117,7 @@ public class SliceDataConverterTest { assertThat(fakeSlice.getTitle()).isEqualTo(FAKE_TITLE); assertThat(fakeSlice.getSummary()).isEqualTo(FAKE_SUMMARY); assertThat(fakeSlice.getScreenTitle()).isEqualTo(FAKE_SCREEN_TITLE); - assertThat(fakeSlice.getKeywords()).isEqualTo(FAKE_KEYWORDS); + assertThat(fakeSlice.getKeywords()).isNull(); assertThat(fakeSlice.getIconResource()).isNotNull(); assertThat(fakeSlice.getUri()).isNull(); assertThat(fakeSlice.getFragmentClassName()).isEqualTo(FAKE_FRAGMENT_CLASSNAME); diff --git a/tests/robotests/src/com/android/settings/testutils/SliceTester.java b/tests/robotests/src/com/android/settings/testutils/SliceTester.java index a7840e80a9d..6733a2a5194 100644 --- a/tests/robotests/src/com/android/settings/testutils/SliceTester.java +++ b/tests/robotests/src/com/android/settings/testutils/SliceTester.java @@ -30,7 +30,9 @@ import android.app.PendingIntent; import android.content.Context; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import androidx.slice.Slice; import androidx.slice.SliceItem; @@ -188,7 +190,10 @@ public class SliceTester { private static void assertKeywords(SliceMetadata metadata, SliceData data) { final List keywords = metadata.getSliceKeywords(); - final List expectedKeywords = Arrays.asList(data.getKeywords().split(",")); + final Set expectedKeywords = new HashSet<>( + Arrays.asList(data.getKeywords().split(","))); + expectedKeywords.add(data.getTitle()); + expectedKeywords.add(data.getScreenTitle().toString()); assertThat(keywords).containsExactlyElementsIn(expectedKeywords); } } \ No newline at end of file