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

@@ -60,6 +60,7 @@ public class SliceBuilderUtilsTest {
private final String TITLE = "title";
private final String SUMMARY = "summary";
private final String SCREEN_TITLE = "screen title";
private final String KEYWORDS = "a, b, c";
private final String FRAGMENT_NAME = "fragment name";
private final int ICON = 1234; // I declare a thumb war
private final Uri URI = Uri.parse("content://com.android.settings.slices/test");
@@ -422,6 +423,7 @@ public class SliceBuilderUtilsTest {
.setTitle(TITLE)
.setSummary(summary)
.setScreenTitle(SCREEN_TITLE)
.setKeywords(KEYWORDS)
.setIcon(ICON)
.setFragmentName(FRAGMENT_NAME)
.setUri(URI)

View File

@@ -52,21 +52,21 @@ import java.util.List;
@RunWith(SettingsRobolectricTestRunner.class)
public class SliceDataConverterTest {
private final String FAKE_KEY = "key";
private final String FAKE_TITLE = "title";
private final String FAKE_SUMMARY = "summary";
private final String FAKE_SCREEN_TITLE = "screen_title";
private final String FAKE_FRAGMENT_CLASSNAME = FakeIndexProvider.class.getName();
private final String FAKE_CONTROLLER_NAME = FakePreferenceController.class.getName();
private final String ACCESSIBILITY_FRAGMENT = AccessibilitySettings.class.getName();
private final String A11Y_CONTROLLER_NAME =
private static final String FAKE_KEY = "key";
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();
private static final String A11Y_CONTROLLER_NAME =
AccessibilitySlicePreferenceController.class.getName();
private final String FAKE_SERVICE_NAME = "fake_service";
private final String FAKE_ACCESSIBILITY_PACKAGE = "fake_package";
private final String FAKE_A11Y_SERVICE_NAME =
private static final String FAKE_SERVICE_NAME = "fake_service";
private static final String FAKE_ACCESSIBILITY_PACKAGE = "fake_package";
private static final String FAKE_A11Y_SERVICE_NAME =
FAKE_ACCESSIBILITY_PACKAGE + "/" + FAKE_SERVICE_NAME;
private final int FAKE_ICON = 1234;
private static final int FAKE_ICON = 1234;
private Context mContext;
@@ -118,6 +118,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.getIconResource()).isNotNull();
assertThat(fakeSlice.getUri()).isNull();
assertThat(fakeSlice.getFragmentClassName()).isEqualTo(FAKE_FRAGMENT_CLASSNAME);

View File

@@ -32,6 +32,7 @@ public class SliceDataTest {
private final String TITLE = "title";
private final String SUMMARY = "summary";
private final String SCREEN_TITLE = "screen title";
private final String KEYWORDS = "a, b, c";
private final String FRAGMENT_NAME = "fragment name";
private final int ICON = 1234; // I declare a thumb war
private final Uri URI = Uri.parse("content://com.android.settings.slices/test");
@@ -46,6 +47,7 @@ public class SliceDataTest {
.setTitle(TITLE)
.setSummary(SUMMARY)
.setScreenTitle(SCREEN_TITLE)
.setKeywords(KEYWORDS)
.setIcon(ICON)
.setFragmentName(FRAGMENT_NAME)
.setUri(URI)
@@ -59,6 +61,7 @@ public class SliceDataTest {
assertThat(data.getTitle()).isEqualTo(TITLE);
assertThat(data.getSummary()).isEqualTo(SUMMARY);
assertThat(data.getScreenTitle()).isEqualTo(SCREEN_TITLE);
assertThat(data.getKeywords()).isEqualTo(KEYWORDS);
assertThat(data.getIconResource()).isEqualTo(ICON);
assertThat(data.getFragmentClassName()).isEqualTo(FRAGMENT_NAME);
assertThat(data.getUri()).isEqualTo(URI);

View File

@@ -44,6 +44,7 @@ public class SlicesDatabaseAccessorTest {
private final String FAKE_TITLE = "title";
private final String FAKE_SUMMARY = "summary";
private final String FAKE_SCREEN_TITLE = "screen_title";
private final String FAKE_KEYWORDS = "a, b, c";
private final int FAKE_ICON = 1234;
private final String FAKE_FRAGMENT_NAME = FakeIndexProvider.class.getName();
private final String FAKE_CONTROLLER_NAME = FakePreferenceController.class.getName();
@@ -76,6 +77,7 @@ public class SlicesDatabaseAccessorTest {
assertThat(data.getTitle()).isEqualTo(FAKE_TITLE);
assertThat(data.getSummary()).isEqualTo(FAKE_SUMMARY);
assertThat(data.getScreenTitle()).isEqualTo(FAKE_SCREEN_TITLE);
assertThat(data.getKeywords()).isEqualTo(FAKE_KEYWORDS);
assertThat(data.getIconResource()).isEqualTo(FAKE_ICON);
assertThat(data.getFragmentClassName()).isEqualTo(FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isNull();
@@ -102,6 +104,7 @@ public class SlicesDatabaseAccessorTest {
assertThat(data.getTitle()).isEqualTo(FAKE_TITLE);
assertThat(data.getSummary()).isEqualTo(FAKE_SUMMARY);
assertThat(data.getScreenTitle()).isEqualTo(FAKE_SCREEN_TITLE);
assertThat(data.getKeywords()).isEqualTo(FAKE_KEYWORDS);
assertThat(data.getIconResource()).isEqualTo(FAKE_ICON);
assertThat(data.getFragmentClassName()).isEqualTo(FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isEqualTo(uri);
@@ -164,13 +167,13 @@ public class SlicesDatabaseAccessorTest {
values.put(SlicesDatabaseHelper.IndexColumns.TITLE, FAKE_TITLE);
values.put(SlicesDatabaseHelper.IndexColumns.SUMMARY, FAKE_SUMMARY);
values.put(SlicesDatabaseHelper.IndexColumns.SCREENTITLE, FAKE_SCREEN_TITLE);
values.put(SlicesDatabaseHelper.IndexColumns.KEYWORDS, FAKE_KEYWORDS);
values.put(SlicesDatabaseHelper.IndexColumns.ICON_RESOURCE, FAKE_ICON);
values.put(SlicesDatabaseHelper.IndexColumns.FRAGMENT, FAKE_FRAGMENT_NAME);
values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, FAKE_CONTROLLER_NAME);
values.put(SlicesDatabaseHelper.IndexColumns.PLATFORM_SLICE, isPlatformSlice);
values.put(SlicesDatabaseHelper.IndexColumns.SLICE_TYPE, SliceData.SliceType.INTENT);
mDb.replaceOrThrow(SlicesDatabaseHelper.Tables.TABLE_SLICES_INDEX, null, values);
}
}

View File

@@ -66,6 +66,7 @@ public class SlicesDatabaseHelperTest {
IndexColumns.TITLE,
IndexColumns.SUMMARY,
IndexColumns.SCREENTITLE,
IndexColumns.KEYWORDS,
IndexColumns.ICON_RESOURCE,
IndexColumns.FRAGMENT,
IndexColumns.CONTROLLER,

View File

@@ -17,6 +17,7 @@
package com.android.settings.slices;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
@@ -46,6 +47,7 @@ public class SlicesIndexerTest {
private final String[] TITLES = new String[]{"title1", "title2", "title3"};
private final String SUMMARY = "subtitle";
private final String SCREEN_TITLE = "screen title";
private final String KEYWORDS = "a, b, c";
private final String FRAGMENT_NAME = "fragment name";
private final int ICON = 1234; // I declare a thumb war
private final Uri URI = Uri.parse("content://com.android.settings.slices/test");
@@ -119,6 +121,8 @@ public class SlicesIndexerTest {
FRAGMENT_NAME);
assertThat(cursor.getString(cursor.getColumnIndex(IndexColumns.SCREENTITLE))).isEqualTo(
SCREEN_TITLE);
assertThat(cursor.getString(cursor.getColumnIndex(IndexColumns.KEYWORDS))).isEqualTo(
KEYWORDS);
assertThat(cursor.getInt(cursor.getColumnIndex(IndexColumns.ICON_RESOURCE))).isEqualTo(
ICON);
assertThat(cursor.getString(cursor.getColumnIndex(IndexColumns.CONTROLLER))).isEqualTo(
@@ -144,6 +148,7 @@ public class SlicesIndexerTest {
final SliceData.Builder builder = new SliceData.Builder()
.setSummary(SUMMARY)
.setScreenTitle(SCREEN_TITLE)
.setKeywords(KEYWORDS)
.setFragmentName(FRAGMENT_NAME)
.setIcon(ICON)
.setUri(URI)