Loading src/com/android/settings/slices/SliceBuilderUtils.java +14 −8 Original line number Diff line number Diff line Loading @@ -24,11 +24,11 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_ import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_KEY; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_PLATFORM_DEFINED; import android.annotation.ColorInt; import android.app.PendingIntent; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.provider.Settings; import android.provider.SettingsSlicesContract; Loading @@ -41,6 +41,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.SubSettings; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.SliderPreferenceController; import com.android.settings.core.TogglePreferenceController; Loading @@ -67,9 +68,6 @@ public class SliceBuilderUtils { private static final String TAG = "SliceBuilder"; // A Slice should not be store for longer than 60,000 milliseconds / 1 minute. public static final long SLICE_TTL_MILLIS = 60000; /** * Build a Slice from {@link SliceData}. * Loading Loading @@ -239,13 +237,15 @@ public class SliceBuilderUtils { final PendingIntent contentIntent = getContentPendingIntent(context, sliceData); final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource()); final CharSequence subtitleText = getSubtitleText(context, controller, sliceData); @ColorInt final int color = Utils.getColorAccent(context); final TogglePreferenceController toggleController = (TogglePreferenceController) controller; final SliceAction sliceAction = getToggleAction(context, sliceData, toggleController.isChecked()); final List<String> keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS) return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY) .setAccentColor(color) .addRow(rowBuilder -> rowBuilder .setTitle(sliceData.getTitle()) .setSubtitle(subtitleText) Loading @@ -261,9 +261,11 @@ public class SliceBuilderUtils { final PendingIntent contentIntent = getContentPendingIntent(context, sliceData); final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource()); final CharSequence subtitleText = getSubtitleText(context, controller, sliceData); @ColorInt final int color = Utils.getColorAccent(context); final List<String> keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS) return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY) .setAccentColor(color) .addRow(rowBuilder -> rowBuilder .setTitle(sliceData.getTitle()) .setSubtitle(subtitleText) Loading @@ -279,11 +281,13 @@ public class SliceBuilderUtils { final PendingIntent actionIntent = getSliderAction(context, sliceData); final PendingIntent contentIntent = getContentPendingIntent(context, sliceData); final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource()); @ColorInt final int color = Utils.getColorAccent(context); final SliceAction primaryAction = new SliceAction(contentIntent, icon, sliceData.getTitle()); final List<String> keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS) return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY) .setAccentColor(color) .addInputRange(builder -> builder .setTitle(sliceData.getTitle()) .setMax(sliderController.getMaxSteps()) Loading Loading @@ -351,6 +355,7 @@ public class SliceBuilderUtils { BasePreferenceController controller) { final String title = data.getTitle(); final List<String> keywords = buildSliceKeywords(data); @ColorInt final int color = Utils.getColorAccent(context); final String summary; final SliceAction primaryAction; final IconCompat icon = IconCompat.createWithResource(context, data.getIconResource()); Loading @@ -376,7 +381,8 @@ public class SliceBuilderUtils { primaryAction = new SliceAction(getSettingsIntent(context), icon, title); } return new ListBuilder(context, data.getUri(), SLICE_TTL_MILLIS) return new ListBuilder(context, data.getUri(), ListBuilder.INFINITY) .setAccentColor(color) .addRow(builder -> builder .setTitle(title) .setSubtitle(summary) Loading tests/robotests/src/com/android/settings/testutils/SliceTester.java +40 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.settings.testutils; import static android.app.slice.Slice.HINT_TITLE; import static android.app.slice.Slice.SUBTYPE_COLOR; import static android.app.slice.SliceItem.FORMAT_INT; import static android.app.slice.SliceItem.FORMAT_TEXT; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; Loading @@ -37,11 +39,13 @@ import java.util.Set; import androidx.slice.Slice; import androidx.slice.SliceItem; import androidx.slice.SliceMetadata; import androidx.slice.builders.ListBuilder; import androidx.slice.core.SliceAction; import androidx.slice.core.SliceQuery; import android.support.v4.graphics.drawable.IconCompat; import com.android.settings.Utils; import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceData; Loading @@ -59,10 +63,19 @@ public class SliceTester { * - Correct intent * - Correct title * - Correct keywords * - TTL * - Color */ public static void testSettingsIntentSlice(Context context, Slice slice, SliceData sliceData) { final SliceMetadata metadata = SliceMetadata.from(context, slice); final long sliceTTL = metadata.getExpiry(); assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY); final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR); final int color = colorItem.getInt(); assertThat(color).isEqualTo(Utils.getColorAccent(context)); final List<SliceAction> toggles = metadata.getToggles(); assertThat(toggles).isEmpty(); Loading @@ -83,13 +96,22 @@ public class SliceTester { * - Correct content intent * - Correct title * - Correct keywords * - TTL * - Color */ public static void testSettingsToggleSlice(Context context, Slice slice, SliceData sliceData) { final SliceMetadata metadata = SliceMetadata.from(context, slice); final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR); final int color = colorItem.getInt(); assertThat(color).isEqualTo(Utils.getColorAccent(context)); final List<SliceAction> toggles = metadata.getToggles(); assertThat(toggles).hasSize(1); final long sliceTTL = metadata.getExpiry(); assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY); final SliceAction mainToggleAction = toggles.get(0); final IconCompat expectedToggleIcon = IconCompat.createWithResource(context, Loading Loading @@ -117,13 +139,22 @@ public class SliceTester { * - No intent * - Correct title * - Correct keywords * - TTL * - Color */ public static void testSettingsSliderSlice(Context context, Slice slice, SliceData sliceData) { final SliceMetadata metadata = SliceMetadata.from(context, slice); final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR); final int color = colorItem.getInt(); assertThat(color).isEqualTo(Utils.getColorAccent(context)); final IconCompat expectedToggleIcon = IconCompat.createWithResource(context, sliceData.getIconResource()); final long sliceTTL = metadata.getExpiry(); assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY); // Check primary intent final PendingIntent primaryPendingIntent = metadata.getPrimaryAction().getAction(); assertThat(primaryPendingIntent).isEqualTo( Loading @@ -141,11 +172,20 @@ public class SliceTester { * - Correct title * - Correct intent * - Correct keywords * - Color * - TTL */ public static void testSettingsUnavailableSlice(Context context, Slice slice, SliceData sliceData) { final SliceMetadata metadata = SliceMetadata.from(context, slice); final long sliceTTL = metadata.getExpiry(); assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY); final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR); final int color = colorItem.getInt(); assertThat(color).isEqualTo(Utils.getColorAccent(context)); final List<SliceAction> toggles = metadata.getToggles(); assertThat(toggles).isEmpty(); Loading Loading
src/com/android/settings/slices/SliceBuilderUtils.java +14 −8 Original line number Diff line number Diff line Loading @@ -24,11 +24,11 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_ import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_KEY; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_PLATFORM_DEFINED; import android.annotation.ColorInt; import android.app.PendingIntent; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.provider.Settings; import android.provider.SettingsSlicesContract; Loading @@ -41,6 +41,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.SubSettings; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.SliderPreferenceController; import com.android.settings.core.TogglePreferenceController; Loading @@ -67,9 +68,6 @@ public class SliceBuilderUtils { private static final String TAG = "SliceBuilder"; // A Slice should not be store for longer than 60,000 milliseconds / 1 minute. public static final long SLICE_TTL_MILLIS = 60000; /** * Build a Slice from {@link SliceData}. * Loading Loading @@ -239,13 +237,15 @@ public class SliceBuilderUtils { final PendingIntent contentIntent = getContentPendingIntent(context, sliceData); final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource()); final CharSequence subtitleText = getSubtitleText(context, controller, sliceData); @ColorInt final int color = Utils.getColorAccent(context); final TogglePreferenceController toggleController = (TogglePreferenceController) controller; final SliceAction sliceAction = getToggleAction(context, sliceData, toggleController.isChecked()); final List<String> keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS) return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY) .setAccentColor(color) .addRow(rowBuilder -> rowBuilder .setTitle(sliceData.getTitle()) .setSubtitle(subtitleText) Loading @@ -261,9 +261,11 @@ public class SliceBuilderUtils { final PendingIntent contentIntent = getContentPendingIntent(context, sliceData); final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource()); final CharSequence subtitleText = getSubtitleText(context, controller, sliceData); @ColorInt final int color = Utils.getColorAccent(context); final List<String> keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS) return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY) .setAccentColor(color) .addRow(rowBuilder -> rowBuilder .setTitle(sliceData.getTitle()) .setSubtitle(subtitleText) Loading @@ -279,11 +281,13 @@ public class SliceBuilderUtils { final PendingIntent actionIntent = getSliderAction(context, sliceData); final PendingIntent contentIntent = getContentPendingIntent(context, sliceData); final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource()); @ColorInt final int color = Utils.getColorAccent(context); final SliceAction primaryAction = new SliceAction(contentIntent, icon, sliceData.getTitle()); final List<String> keywords = buildSliceKeywords(sliceData); return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS) return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY) .setAccentColor(color) .addInputRange(builder -> builder .setTitle(sliceData.getTitle()) .setMax(sliderController.getMaxSteps()) Loading Loading @@ -351,6 +355,7 @@ public class SliceBuilderUtils { BasePreferenceController controller) { final String title = data.getTitle(); final List<String> keywords = buildSliceKeywords(data); @ColorInt final int color = Utils.getColorAccent(context); final String summary; final SliceAction primaryAction; final IconCompat icon = IconCompat.createWithResource(context, data.getIconResource()); Loading @@ -376,7 +381,8 @@ public class SliceBuilderUtils { primaryAction = new SliceAction(getSettingsIntent(context), icon, title); } return new ListBuilder(context, data.getUri(), SLICE_TTL_MILLIS) return new ListBuilder(context, data.getUri(), ListBuilder.INFINITY) .setAccentColor(color) .addRow(builder -> builder .setTitle(title) .setSubtitle(summary) Loading
tests/robotests/src/com/android/settings/testutils/SliceTester.java +40 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.settings.testutils; import static android.app.slice.Slice.HINT_TITLE; import static android.app.slice.Slice.SUBTYPE_COLOR; import static android.app.slice.SliceItem.FORMAT_INT; import static android.app.slice.SliceItem.FORMAT_TEXT; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; Loading @@ -37,11 +39,13 @@ import java.util.Set; import androidx.slice.Slice; import androidx.slice.SliceItem; import androidx.slice.SliceMetadata; import androidx.slice.builders.ListBuilder; import androidx.slice.core.SliceAction; import androidx.slice.core.SliceQuery; import android.support.v4.graphics.drawable.IconCompat; import com.android.settings.Utils; import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceData; Loading @@ -59,10 +63,19 @@ public class SliceTester { * - Correct intent * - Correct title * - Correct keywords * - TTL * - Color */ public static void testSettingsIntentSlice(Context context, Slice slice, SliceData sliceData) { final SliceMetadata metadata = SliceMetadata.from(context, slice); final long sliceTTL = metadata.getExpiry(); assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY); final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR); final int color = colorItem.getInt(); assertThat(color).isEqualTo(Utils.getColorAccent(context)); final List<SliceAction> toggles = metadata.getToggles(); assertThat(toggles).isEmpty(); Loading @@ -83,13 +96,22 @@ public class SliceTester { * - Correct content intent * - Correct title * - Correct keywords * - TTL * - Color */ public static void testSettingsToggleSlice(Context context, Slice slice, SliceData sliceData) { final SliceMetadata metadata = SliceMetadata.from(context, slice); final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR); final int color = colorItem.getInt(); assertThat(color).isEqualTo(Utils.getColorAccent(context)); final List<SliceAction> toggles = metadata.getToggles(); assertThat(toggles).hasSize(1); final long sliceTTL = metadata.getExpiry(); assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY); final SliceAction mainToggleAction = toggles.get(0); final IconCompat expectedToggleIcon = IconCompat.createWithResource(context, Loading Loading @@ -117,13 +139,22 @@ public class SliceTester { * - No intent * - Correct title * - Correct keywords * - TTL * - Color */ public static void testSettingsSliderSlice(Context context, Slice slice, SliceData sliceData) { final SliceMetadata metadata = SliceMetadata.from(context, slice); final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR); final int color = colorItem.getInt(); assertThat(color).isEqualTo(Utils.getColorAccent(context)); final IconCompat expectedToggleIcon = IconCompat.createWithResource(context, sliceData.getIconResource()); final long sliceTTL = metadata.getExpiry(); assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY); // Check primary intent final PendingIntent primaryPendingIntent = metadata.getPrimaryAction().getAction(); assertThat(primaryPendingIntent).isEqualTo( Loading @@ -141,11 +172,20 @@ public class SliceTester { * - Correct title * - Correct intent * - Correct keywords * - Color * - TTL */ public static void testSettingsUnavailableSlice(Context context, Slice slice, SliceData sliceData) { final SliceMetadata metadata = SliceMetadata.from(context, slice); final long sliceTTL = metadata.getExpiry(); assertThat(sliceTTL).isEqualTo(ListBuilder.INFINITY); final SliceItem colorItem = SliceQuery.findSubtype(slice, FORMAT_INT, SUBTYPE_COLOR); final int color = colorItem.getInt(); assertThat(color).isEqualTo(Utils.getColorAccent(context)); final List<SliceAction> toggles = metadata.getToggles(); assertThat(toggles).isEmpty(); Loading