Add keywords to Slices

Attach the keywords used for Settings search to Slices.
Their primary use is helping match synonyms for presenters
which display slices without explicit Uri requests, like a launcher.

This changes:
- Updates database scheme
- Adds to SliceData object
- Grab keywords in the SliceDataConverter
- Set keywords on all slices

Test: robotests
Change-Id: I16c40d2380ffddaf0a87fb1b9cd58e95573b308f
Fixes: 78306195
This commit is contained in:
Matthew Fritze
2018-04-19 14:50:55 -07:00
parent 3bdd65e255
commit 47a44e8fa4
17 changed files with 130 additions and 18 deletions

View File

@@ -29,6 +29,7 @@ import static com.google.common.truth.Truth.assertThat;
import android.app.PendingIntent;
import android.content.Context;
import java.util.Arrays;
import java.util.List;
import androidx.slice.Slice;
@@ -55,6 +56,7 @@ public class SliceTester {
* - No toggles
* - Correct intent
* - Correct title
* - Correct keywords
*/
public static void testSettingsIntentSlice(Context context, Slice slice, SliceData sliceData) {
final SliceMetadata metadata = SliceMetadata.from(context, slice);
@@ -68,6 +70,8 @@ public class SliceTester {
final List<SliceItem> sliceItems = slice.getItems();
assertTitle(sliceItems, sliceData.getTitle());
assertKeywords(metadata, sliceData);
}
/**
@@ -76,6 +80,7 @@ public class SliceTester {
* - Correct toggle intent
* - Correct content intent
* - Correct title
* - Correct keywords
*/
public static void testSettingsToggleSlice(Context context, Slice slice, SliceData sliceData) {
final SliceMetadata metadata = SliceMetadata.from(context, slice);
@@ -101,12 +106,15 @@ public class SliceTester {
final List<SliceItem> sliceItems = slice.getItems();
assertTitle(sliceItems, sliceData.getTitle());
assertKeywords(metadata, sliceData);
}
/**
* Test the contents of an slider based slice, including:
* - No intent
* - Correct title
* - Correct keywords
*/
public static void testSettingsSliderSlice(Context context, Slice slice, SliceData sliceData) {
final SliceMetadata metadata = SliceMetadata.from(context, slice);
@@ -121,6 +129,8 @@ public class SliceTester {
final List<SliceItem> sliceItems = slice.getItems();
assertTitle(sliceItems, sliceData.getTitle());
assertKeywords(metadata, sliceData);
}
/**
@@ -128,6 +138,7 @@ public class SliceTester {
* - No toggles
* - Correct title
* - Correct intent
* - Correct keywords
*/
public static void testSettingsUnavailableSlice(Context context, Slice slice,
SliceData sliceData) {
@@ -154,6 +165,8 @@ public class SliceTester {
final List<SliceItem> sliceItems = slice.getItems();
assertTitle(sliceItems, sliceData.getTitle());
assertKeywords(metadata, sliceData);
}
private static void assertTitle(List<SliceItem> sliceItems, String title) {
@@ -172,4 +185,10 @@ public class SliceTester {
}
assertThat(hasTitle).isTrue();
}
private static void assertKeywords(SliceMetadata metadata, SliceData data) {
final List<String> keywords = metadata.getSliceKeywords();
final List<String> expectedKeywords = Arrays.asList(data.getKeywords().split(","));
assertThat(keywords).containsExactlyElementsIn(expectedKeywords);
}
}