diff --git a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java index 7a569947b4f..3c2f1b8964f 100644 --- a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java +++ b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java @@ -37,6 +37,7 @@ import com.android.settings.slices.SliceBuilderUtils; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; +import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; /** @@ -93,7 +94,7 @@ public class BluetoothSliceBuilder { return new ListBuilder(context, BLUETOOTH_URI, ListBuilder.INFINITY) .setAccentColor(color) - .addRow(b -> b + .addRow(new RowBuilder() .setTitle(title) .addEndItem(toggleSliceAction) .setPrimaryAction(primarySliceAction)) diff --git a/src/com/android/settings/flashlight/FlashlightSliceBuilder.java b/src/com/android/settings/flashlight/FlashlightSliceBuilder.java index a689fd23066..d4309ca66d0 100644 --- a/src/com/android/settings/flashlight/FlashlightSliceBuilder.java +++ b/src/com/android/settings/flashlight/FlashlightSliceBuilder.java @@ -42,6 +42,7 @@ import com.android.settings.slices.SliceBroadcastReceiver; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; +import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; @@ -93,7 +94,7 @@ public class FlashlightSliceBuilder { IconCompat.createWithResource(context, R.drawable.ic_signal_flashlight); return new ListBuilder(context, FLASHLIGHT_URI, ListBuilder.INFINITY) .setAccentColor(color) - .addRow(b -> b + .addRow(new RowBuilder() .setTitle(context.getText(R.string.power_flashlight)) .setTitleItem(icon, ICON_IMAGE) .setPrimaryAction( diff --git a/src/com/android/settings/location/LocationSliceBuilder.java b/src/com/android/settings/location/LocationSliceBuilder.java index cbdf7f0f709..4883ee8bbe8 100644 --- a/src/com/android/settings/location/LocationSliceBuilder.java +++ b/src/com/android/settings/location/LocationSliceBuilder.java @@ -37,6 +37,7 @@ import com.android.settings.slices.SliceBuilderUtils; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; +import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; /** @@ -70,7 +71,7 @@ public class LocationSliceBuilder { return new ListBuilder(context, LOCATION_URI, ListBuilder.INFINITY) .setAccentColor(color) - .addRow(b -> b + .addRow(new RowBuilder() .setTitle(title) .setTitleItem(icon, ICON_IMAGE) .setPrimaryAction(primarySliceAction)) diff --git a/src/com/android/settings/mobilenetwork/Enhanced4gLteSliceHelper.java b/src/com/android/settings/mobilenetwork/Enhanced4gLteSliceHelper.java index f8f1447c979..960a082adf6 100644 --- a/src/com/android/settings/mobilenetwork/Enhanced4gLteSliceHelper.java +++ b/src/com/android/settings/mobilenetwork/Enhanced4gLteSliceHelper.java @@ -49,6 +49,7 @@ import androidx.annotation.VisibleForTesting; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; +import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; /** @@ -183,7 +184,7 @@ public class Enhanced4gLteSliceHelper { return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) - .addRow(b -> b + .addRow(new RowBuilder() .setTitle(getEnhanced4glteModeTitle(subId)) .addEndItem( new SliceAction( diff --git a/src/com/android/settings/notification/ZenModeSliceBuilder.java b/src/com/android/settings/notification/ZenModeSliceBuilder.java index ad39d713055..dcdf6ef10eb 100644 --- a/src/com/android/settings/notification/ZenModeSliceBuilder.java +++ b/src/com/android/settings/notification/ZenModeSliceBuilder.java @@ -40,6 +40,7 @@ import com.android.settings.slices.SliceBuilderUtils; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; +import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; public class ZenModeSliceBuilder { @@ -94,7 +95,7 @@ public class ZenModeSliceBuilder { return new ListBuilder(context, ZEN_MODE_URI, ListBuilder.INFINITY) .setAccentColor(color) - .addRow(b -> b + .addRow(new RowBuilder() .setTitle(title) .addEndItem(toggleSliceAction) .setPrimaryAction(primarySliceAction)) diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java index c1c3b8e8229..b613ca4cb4a 100644 --- a/src/com/android/settings/slices/SliceBuilderUtils.java +++ b/src/com/android/settings/slices/SliceBuilderUtils.java @@ -29,6 +29,7 @@ import android.net.Uri; import android.os.Bundle; import android.provider.SettingsSlicesContract; import android.text.TextUtils; +import android.util.ArraySet; import android.util.Log; import android.util.Pair; @@ -47,12 +48,15 @@ import com.android.settingslib.core.AbstractPreferenceController; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import androidx.annotation.VisibleForTesting; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; +import androidx.slice.builders.ListBuilder.InputRangeBuilder; +import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; @@ -250,11 +254,11 @@ public class SliceBuilderUtils { (TogglePreferenceController) controller; final SliceAction sliceAction = getToggleAction(context, sliceData, toggleController.isChecked()); - final List keywords = buildSliceKeywords(sliceData); + final Set keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY) .setAccentColor(color) - .addRow(rowBuilder -> rowBuilder + .addRow(new RowBuilder() .setTitle(sliceData.getTitle()) .setSubtitle(subtitleText) .setPrimaryAction( @@ -270,11 +274,11 @@ public class SliceBuilderUtils { final IconCompat icon = getSafeIcon(context, sliceData); final CharSequence subtitleText = getSubtitleText(context, controller, sliceData); @ColorInt final int color = Utils.getColorAccentDefaultColor(context); - final List keywords = buildSliceKeywords(sliceData); + final Set keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY) .setAccentColor(color) - .addRow(rowBuilder -> rowBuilder + .addRow(new RowBuilder() .setTitle(sliceData.getTitle()) .setSubtitle(subtitleText) .setPrimaryAction( @@ -293,11 +297,11 @@ public class SliceBuilderUtils { final CharSequence subtitleText = getSubtitleText(context, controller, sliceData); final SliceAction primaryAction = new SliceAction(contentIntent, icon, sliceData.getTitle()); - final List keywords = buildSliceKeywords(sliceData); + final Set keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY) .setAccentColor(color) - .addInputRange(builder -> builder + .addInputRange(new InputRangeBuilder() .setTitle(sliceData.getTitle()) .setSubtitle(subtitleText) .setPrimaryAction(primaryAction) @@ -343,8 +347,8 @@ public class SliceBuilderUtils { || TextUtils.equals(summary, doublePlaceHolder)); } - private static List buildSliceKeywords(SliceData data) { - final List keywords = new ArrayList<>(); + private static Set buildSliceKeywords(SliceData data) { + final Set keywords = new ArraySet<>(); keywords.add(data.getTitle()); @@ -366,7 +370,7 @@ public class SliceBuilderUtils { private static Slice buildUnavailableSlice(Context context, SliceData data) { final String title = data.getTitle(); - final List keywords = buildSliceKeywords(data); + final Set keywords = buildSliceKeywords(data); @ColorInt final int color = Utils.getColorAccentDefaultColor(context); final CharSequence summary = context.getText(R.string.disabled_dependent_setting_summary); final IconCompat icon = IconCompat.createWithResource(context, data.getIconResource()); @@ -375,9 +379,9 @@ public class SliceBuilderUtils { return new ListBuilder(context, data.getUri(), ListBuilder.INFINITY) .setAccentColor(color) - .addRow(builder -> builder + .addRow(new RowBuilder() .setTitle(title) - .setTitleItem(icon) + .setTitleItem(icon, ListBuilder.SMALL_IMAGE) .setSubtitle(summary) .setPrimaryAction(primaryAction)) .setKeywords(keywords) diff --git a/src/com/android/settings/wifi/WifiSliceBuilder.java b/src/com/android/settings/wifi/WifiSliceBuilder.java index a7bf16a5954..f6628a071fc 100644 --- a/src/com/android/settings/wifi/WifiSliceBuilder.java +++ b/src/com/android/settings/wifi/WifiSliceBuilder.java @@ -42,6 +42,7 @@ import com.android.settings.slices.SliceBuilderUtils; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; +import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; /** @@ -95,7 +96,7 @@ public class WifiSliceBuilder { return new ListBuilder(context, WIFI_URI, ListBuilder.INFINITY) .setAccentColor(color) - .addRow(b -> b + .addRow(new RowBuilder() .setTitle(title) .setSubtitle(summary) .addEndItem(toggleSliceAction) diff --git a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java index f9014b70664..baf2a977267 100644 --- a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java +++ b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java @@ -209,7 +209,7 @@ public class WifiCallingSliceHelper { return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) - .addRow(b -> b + .addRow(new RowBuilder() .setTitle(mContext.getText(R.string.wifi_calling_settings_title)) .addEndItem( new SliceAction( @@ -298,7 +298,7 @@ public class WifiCallingSliceHelper { // Top row shows information on current preference state ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)); - listBuilder.setHeader(new ListBuilder.HeaderBuilder(listBuilder) + listBuilder.setHeader(new ListBuilder.HeaderBuilder() .setTitle(mContext.getText(R.string.wifi_calling_mode_title)) .setSubtitle(getWifiCallingPreferenceSummary(currentWfcPref)) .setPrimaryAction(new SliceAction( @@ -338,7 +338,7 @@ public class WifiCallingSliceHelper { int preferenceTitleResId, String action, boolean checked) { final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.radio_button_check); - return new RowBuilder(listBuilder) + return new RowBuilder() .setTitle(mContext.getText(preferenceTitleResId)) .setTitleItem(new SliceAction(getBroadcastIntent(action), icon, mContext.getText(preferenceTitleResId), checked)); @@ -488,7 +488,7 @@ public class WifiCallingSliceHelper { final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal); return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) - .addRow(b -> b + .addRow(new RowBuilder() .setTitle(title) .setSubtitle(subtitle) .setPrimaryAction(new SliceAction( diff --git a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java index ea2f2cac6e7..3cb502eee69 100644 --- a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java +++ b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java @@ -66,6 +66,9 @@ import java.util.List; import java.util.Set; import androidx.slice.Slice; +import androidx.slice.SliceProvider; +import androidx.slice.widget.SliceLiveData; +import com.android.settings.R; /** * TODO Investigate using ShadowContentResolver.registerProviderInternal(String, ContentProvider) @@ -81,7 +84,7 @@ public class SettingsSliceProviderTest { private static final String SUMMARY = "summary"; private static final String SCREEN_TITLE = "screen title"; private static final String FRAGMENT_NAME = "fragment name"; - private static final int ICON = 1234; // I declare a thumb war + private static final int ICON = R.drawable.ic_settings; private static final Uri URI = Uri.parse("content://com.android.settings.slices/test"); private static final String PREF_CONTROLLER = FakeToggleController.class.getName(); @@ -117,6 +120,8 @@ public class SettingsSliceProviderTest { mManager = mock(SliceManager.class); when(mContext.getSystemService(SliceManager.class)).thenReturn(mManager); when(mManager.getPinnedSlices()).thenReturn(Collections.emptyList()); + + SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); } @After @@ -480,7 +485,7 @@ public class SettingsSliceProviderTest { values.put(SlicesDatabaseHelper.IndexColumns.TITLE, TITLE); values.put(SlicesDatabaseHelper.IndexColumns.SUMMARY, "s"); values.put(SlicesDatabaseHelper.IndexColumns.SCREENTITLE, "s"); - values.put(SlicesDatabaseHelper.IndexColumns.ICON_RESOURCE, 1234); + values.put(SlicesDatabaseHelper.IndexColumns.ICON_RESOURCE, R.drawable.ic_settings); values.put(SlicesDatabaseHelper.IndexColumns.FRAGMENT, "test"); values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, PREF_CONTROLLER); values.put(SlicesDatabaseHelper.IndexColumns.PLATFORM_SLICE, isPlatformSlice); diff --git a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java index b96c12886d7..48489f9ba4b 100644 --- a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java +++ b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java @@ -64,7 +64,7 @@ public class SliceBuilderUtilsTest { 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 int ICON = R.drawable.ic_settings; private final Uri URI = Uri.parse("content://com.android.settings.slices/test"); private final Class TOGGLE_CONTROLLER = FakeToggleController.class; private final Class SLIDER_CONTROLLER = FakeSliderController.class;