Merge changes from topic "slice-highlight" into sc-v2-dev

* changes:
  Add highlight menu keys for all toggle pref controllers and custom slices
  Support slice deep links highlighting menu entries
This commit is contained in:
Jason Chiu
2021-11-02 02:14:09 +00:00
committed by Android (Google) Code Review
124 changed files with 760 additions and 82 deletions

View File

@@ -707,6 +707,7 @@ public class SettingsSliceProviderTest {
.setIcon(SliceTestUtils.FAKE_ICON)
.setFragmentName(SliceTestUtils.FAKE_FRAGMENT_NAME)
.setPreferenceControllerClassName(SliceTestUtils.FAKE_CONTROLLER_NAME)
.setHighlightMenuRes(SliceTestUtils.FAKE_HIGHLIGHT_MENU_RES)
.build();
}

View File

@@ -322,6 +322,8 @@ public class SliceBroadcastReceiverTest {
values.put(SlicesDatabaseHelper.IndexColumns.FRAGMENT, SliceTestUtils.FAKE_FRAGMENT_NAME);
values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, controllerClass);
values.put(SlicesDatabaseHelper.IndexColumns.SLICE_URI, buildUri(key).toSafeString());
values.put(SlicesDatabaseHelper.IndexColumns.HIGHLIGHT_MENU_RESOURCE,
SliceTestUtils.FAKE_HIGHLIGHT_MENU_RES);
mDb.replaceOrThrow(SlicesDatabaseHelper.Tables.TABLE_SLICES_INDEX, null, values);
}

View File

@@ -35,6 +35,7 @@ class SliceTestUtils {
public static final int FAKE_ICON = 1234;
public static final String FAKE_FRAGMENT_NAME = FakeIndexProvider.class.getName();
public static final String FAKE_CONTROLLER_NAME = FakeToggleController.class.getName();
public static final int FAKE_HIGHLIGHT_MENU_RES = FakeToggleController.HIGHLIGHT_MENU_RES;
public static void insertSliceToDb(Context context, String key) {
@@ -75,6 +76,8 @@ class SliceTestUtils {
values.put(SlicesDatabaseHelper.IndexColumns.UNAVAILABLE_SLICE_SUBTITLE,
customizedUnavailableSliceSubtitle);
values.put(SlicesDatabaseHelper.IndexColumns.PUBLIC_SLICE, isPublicSlice);
values.put(SlicesDatabaseHelper.IndexColumns.HIGHLIGHT_MENU_RESOURCE,
FAKE_HIGHLIGHT_MENU_RES);
db.replaceOrThrow(SlicesDatabaseHelper.Tables.TABLE_SLICES_INDEX, null, values);
db.close();

View File

@@ -102,6 +102,7 @@ public class SlicesDatabaseAccessorTest {
assertThat(data.getFragmentClassName()).isEqualTo(SliceTestUtils.FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isNull();
assertThat(data.getPreferenceController()).isEqualTo(SliceTestUtils.FAKE_CONTROLLER_NAME);
assertThat(data.getHighlightMenuRes()).isEqualTo(SliceTestUtils.FAKE_HIGHLIGHT_MENU_RES);
assertThat(data.getUnavailableSliceSubtitle()).isNull();
}
@@ -122,6 +123,7 @@ public class SlicesDatabaseAccessorTest {
assertThat(data.getFragmentClassName()).isEqualTo(SliceTestUtils.FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isNull();
assertThat(data.getPreferenceController()).isEqualTo(SliceTestUtils.FAKE_CONTROLLER_NAME);
assertThat(data.getHighlightMenuRes()).isEqualTo(SliceTestUtils.FAKE_HIGHLIGHT_MENU_RES);
}
@Test(expected = IllegalStateException.class)
@@ -154,6 +156,7 @@ public class SlicesDatabaseAccessorTest {
assertThat(data.getFragmentClassName()).isEqualTo(SliceTestUtils.FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isEqualTo(uri);
assertThat(data.getPreferenceController()).isEqualTo(SliceTestUtils.FAKE_CONTROLLER_NAME);
assertThat(data.getHighlightMenuRes()).isEqualTo(SliceTestUtils.FAKE_HIGHLIGHT_MENU_RES);
}
@Test(expected = IllegalStateException.class)
@@ -289,6 +292,7 @@ public class SlicesDatabaseAccessorTest {
assertThat(data.getFragmentClassName()).isEqualTo(SliceTestUtils.FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isNull();
assertThat(data.getPreferenceController()).isEqualTo(SliceTestUtils.FAKE_CONTROLLER_NAME);
assertThat(data.getHighlightMenuRes()).isEqualTo(SliceTestUtils.FAKE_HIGHLIGHT_MENU_RES);
assertThat(data.getUnavailableSliceSubtitle()).isNull();
}
@@ -309,6 +313,7 @@ public class SlicesDatabaseAccessorTest {
assertThat(data.getFragmentClassName()).isEqualTo(SliceTestUtils.FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isNull();
assertThat(data.getPreferenceController()).isEqualTo(SliceTestUtils.FAKE_CONTROLLER_NAME);
assertThat(data.getHighlightMenuRes()).isEqualTo(SliceTestUtils.FAKE_HIGHLIGHT_MENU_RES);
assertThat(data.getUnavailableSliceSubtitle()).isEqualTo(subtitle);
}

View File

@@ -43,17 +43,18 @@ import java.util.List;
@RunWith(RobolectricTestRunner.class)
public class SlicesIndexerTest {
private final String[] KEYS = new String[]{"key1", "key2", "key3"};
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");
private final String PREF_CONTROLLER = "com.android.settings.slices.tester";
private final int SLICE_TYPE = SliceData.SliceType.SLIDER;
private final String UNAVAILABLE_SLICE_SUBTITLE = "subtitleOfUnavailableSlice";
private static final String[] KEYS = new String[]{"key1", "key2", "key3"};
private static final String[] TITLES = new String[]{"title1", "title2", "title3"};
private static final String SUMMARY = "subtitle";
private static final String SCREEN_TITLE = "screen title";
private static final String KEYWORDS = "a, b, c";
private static final String FRAGMENT_NAME = "fragment name";
private static final int ICON = 1234; // I declare a thumb war
private static final Uri URI = Uri.parse("content://com.android.settings.slices/test");
private static final String PREF_CONTROLLER = "com.android.settings.slices.tester";
private static final int SLICE_TYPE = SliceData.SliceType.SLIDER;
private static final String UNAVAILABLE_SLICE_SUBTITLE = "subtitleOfUnavailableSlice";
private static final int HIGHLIGHT_MENU_KEY = 5678; // I declare a thumb war
private Context mContext;
@@ -142,6 +143,9 @@ public class SlicesIndexerTest {
.isEqualTo(UNAVAILABLE_SLICE_SUBTITLE);
assertThat(cursor.getInt(
cursor.getColumnIndex(IndexColumns.PUBLIC_SLICE))).isEqualTo(0);
assertThat(cursor.getInt(
cursor.getColumnIndex(IndexColumns.HIGHLIGHT_MENU_RESOURCE)))
.isEqualTo(HIGHLIGHT_MENU_KEY);
cursor.moveToNext();
}
} finally {
@@ -187,6 +191,9 @@ public class SlicesIndexerTest {
.isEqualTo(UNAVAILABLE_SLICE_SUBTITLE);
assertThat(cursor.getInt(
cursor.getColumnIndex(IndexColumns.PUBLIC_SLICE))).isEqualTo(1);
assertThat(cursor.getInt(
cursor.getColumnIndex(IndexColumns.HIGHLIGHT_MENU_RESOURCE)))
.isEqualTo(HIGHLIGHT_MENU_KEY);
cursor.moveToNext();
}
} finally {
@@ -220,7 +227,8 @@ public class SlicesIndexerTest {
.setUri(URI)
.setPreferenceControllerClassName(PREF_CONTROLLER)
.setSliceType(SLICE_TYPE)
.setUnavailableSliceSubtitle(UNAVAILABLE_SLICE_SUBTITLE);
.setUnavailableSliceSubtitle(UNAVAILABLE_SLICE_SUBTITLE)
.setHighlightMenuRes(HIGHLIGHT_MENU_KEY);
if (isPublicSlice) {
builder.setIsPublicSlice(true);

View File

@@ -27,6 +27,7 @@ import com.android.settings.slices.SliceBackgroundWorker;
public class FakeToggleController extends TogglePreferenceController {
public static final String AVAILABILITY_KEY = "fake_toggle_availability_key";
public static final int HIGHLIGHT_MENU_RES = 5678;
public static final IntentFilter INTENT_FILTER = new IntentFilter(
WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
@@ -70,6 +71,11 @@ public class FakeToggleController extends TogglePreferenceController {
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return HIGHLIGHT_MENU_RES;
}
@Override
public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() {
return TestWorker.class;