From 7d565e97a3a56ac2f343d25e03b2a98833b7a997 Mon Sep 17 00:00:00 2001 From: Matthew Fritze Date: Tue, 15 May 2018 18:54:17 -0700 Subject: [PATCH] Clean-up settings slices - Set TTL to Infinity - Set color of each slice to color accent Change-Id: I7de4530880725ba3282602135bdc1fa85d786905 Fixes: 79780418 Test: robotests --- .../android/settings/slices/SliceBuilderUtils.java | 22 +++++++----- .../android/settings/testutils/SliceTester.java | 40 ++++++++++++++++++++++ 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java index be2e8df63e..5a167b8a45 100644 --- a/src/com/android/settings/slices/SliceBuilderUtils.java +++ b/src/com/android/settings/slices/SliceBuilderUtils.java @@ -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; @@ -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; @@ -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}. * @@ -234,13 +232,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 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) @@ -256,9 +256,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 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) @@ -274,11 +276,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 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()) @@ -346,6 +350,7 @@ public class SliceBuilderUtils { BasePreferenceController controller) { final String title = data.getTitle(); final List keywords = buildSliceKeywords(data); + @ColorInt final int color = Utils.getColorAccent(context); final String summary; final SliceAction primaryAction; final IconCompat icon = IconCompat.createWithResource(context, data.getIconResource()); @@ -371,7 +376,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) diff --git a/tests/robotests/src/com/android/settings/testutils/SliceTester.java b/tests/robotests/src/com/android/settings/testutils/SliceTester.java index 529e32d792..4c4b04081f 100644 --- a/tests/robotests/src/com/android/settings/testutils/SliceTester.java +++ b/tests/robotests/src/com/android/settings/testutils/SliceTester.java @@ -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; @@ -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; @@ -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 toggles = metadata.getToggles(); assertThat(toggles).isEmpty(); @@ -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 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, @@ -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( @@ -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 toggles = metadata.getToggles(); assertThat(toggles).isEmpty(); -- 2.11.0