Merge "Update Slice APIs to current versions" into pi-dev

am: ff2653a0d8

Change-Id: Id757ea69e9dd2f29ad2f651f0473eeb03d2cca9d
This commit is contained in:
Matthew Fritze
2018-04-19 20:17:24 -07:00
committed by android-build-merger
3 changed files with 46 additions and 38 deletions

View File

@@ -59,10 +59,11 @@ public class SliceBroadcastReceiver extends BroadcastReceiver {
switch (action) { switch (action) {
case ACTION_TOGGLE_CHANGED: case ACTION_TOGGLE_CHANGED:
handleToggleAction(context, key, isPlatformSlice); final boolean isChecked = intent.getBooleanExtra(Slice.EXTRA_TOGGLE_STATE, false);
handleToggleAction(context, key, isChecked, isPlatformSlice);
break; break;
case ACTION_SLIDER_CHANGED: case ACTION_SLIDER_CHANGED:
int newPosition = intent.getIntExtra(Slice.EXTRA_RANGE_VALUE, -1); final int newPosition = intent.getIntExtra(Slice.EXTRA_RANGE_VALUE, -1);
handleSliderAction(context, key, newPosition, isPlatformSlice); handleSliderAction(context, key, newPosition, isPlatformSlice);
break; break;
case ACTION_WIFI_CHANGED: case ACTION_WIFI_CHANGED:
@@ -81,7 +82,8 @@ public class SliceBroadcastReceiver extends BroadcastReceiver {
} }
} }
private void handleToggleAction(Context context, String key, boolean isPlatformSlice) { private void handleToggleAction(Context context, String key, boolean isChecked,
boolean isPlatformSlice) {
if (TextUtils.isEmpty(key)) { if (TextUtils.isEmpty(key)) {
throw new IllegalStateException("No key passed to Intent for toggle controller"); throw new IllegalStateException("No key passed to Intent for toggle controller");
} }
@@ -101,10 +103,8 @@ public class SliceBroadcastReceiver extends BroadcastReceiver {
// TODO post context.getContentResolver().notifyChanged(uri, null) in the Toggle controller // TODO post context.getContentResolver().notifyChanged(uri, null) in the Toggle controller
// so that it's automatically broadcast to any slice. // so that it's automatically broadcast to any slice.
final TogglePreferenceController toggleController = (TogglePreferenceController) controller; final TogglePreferenceController toggleController = (TogglePreferenceController) controller;
final boolean currentValue = toggleController.isChecked(); toggleController.setChecked(isChecked);
final boolean newValue = !currentValue; logSliceValueChange(context, key, isChecked ? 1 : 0);
toggleController.setChecked(newValue);
logSliceValueChange(context, key, newValue ? 1 : 0);
updateUri(context, key, isPlatformSlice); updateUri(context, key, isPlatformSlice);
} }

View File

@@ -16,8 +16,6 @@
package com.android.settings.slices; package com.android.settings.slices;
import static androidx.slice.builders.ListBuilder.ICON_IMAGE;
import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING; import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;
import static com.android.settings.core.BasePreferenceController.DISABLED_FOR_USER; import static com.android.settings.core.BasePreferenceController.DISABLED_FOR_USER;
@@ -31,7 +29,6 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.drawable.Icon;
import android.net.Uri; import android.net.Uri;
import android.provider.SettingsSlicesContract; import android.provider.SettingsSlicesContract;
import android.text.TextUtils; import android.text.TextUtils;
@@ -63,6 +60,9 @@ public class SliceBuilderUtils {
private static final String TAG = "SliceBuilder"; 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}. * Build a Slice from {@link SliceData}.
* *
@@ -225,19 +225,19 @@ public class SliceBuilderUtils {
private static Slice buildToggleSlice(Context context, SliceData sliceData, private static Slice buildToggleSlice(Context context, SliceData sliceData,
BasePreferenceController controller) { BasePreferenceController controller) {
final PendingIntent contentIntent = getContentPendingIntent(context, sliceData); final PendingIntent contentIntent = getContentPendingIntent(context, sliceData);
final Icon icon = Icon.createWithResource(context, sliceData.getIconResource()); final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource());
final CharSequence subtitleText = getSubtitleText(context, controller, sliceData); final CharSequence subtitleText = getSubtitleText(context, controller, sliceData);
final TogglePreferenceController toggleController = final TogglePreferenceController toggleController =
(TogglePreferenceController) controller; (TogglePreferenceController) controller;
final SliceAction sliceAction = getToggleAction(context, sliceData, final SliceAction sliceAction = getToggleAction(context, sliceData,
toggleController.isChecked()); toggleController.isChecked());
return new ListBuilder(context, sliceData.getUri()) return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS)
.addRow(rowBuilder -> rowBuilder .addRow(rowBuilder -> rowBuilder
.setTitle(sliceData.getTitle()) .setTitle(sliceData.getTitle())
.setTitleItem(icon, ICON_IMAGE)
.setSubtitle(subtitleText) .setSubtitle(subtitleText)
.setPrimaryAction(new SliceAction(contentIntent, (IconCompat) null, null)) .setPrimaryAction(
new SliceAction(contentIntent, icon, sliceData.getTitle()))
.addEndItem(sliceAction)) .addEndItem(sliceAction))
.build(); .build();
} }
@@ -245,29 +245,34 @@ public class SliceBuilderUtils {
private static Slice buildIntentSlice(Context context, SliceData sliceData, private static Slice buildIntentSlice(Context context, SliceData sliceData,
BasePreferenceController controller) { BasePreferenceController controller) {
final PendingIntent contentIntent = getContentPendingIntent(context, sliceData); final PendingIntent contentIntent = getContentPendingIntent(context, sliceData);
final Icon icon = Icon.createWithResource(context, sliceData.getIconResource()); final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource());
final CharSequence subtitleText = getSubtitleText(context, controller, sliceData); final CharSequence subtitleText = getSubtitleText(context, controller, sliceData);
return new ListBuilder(context, sliceData.getUri()) return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS)
.addRow(rowBuilder -> rowBuilder .addRow(rowBuilder -> rowBuilder
.setTitle(sliceData.getTitle()) .setTitle(sliceData.getTitle())
.setTitleItem(icon, ICON_IMAGE)
.setSubtitle(subtitleText) .setSubtitle(subtitleText)
.setPrimaryAction(new SliceAction(contentIntent, (IconCompat) null, null))) .setPrimaryAction(
new SliceAction(contentIntent, icon, sliceData.getTitle())))
.build(); .build();
} }
private static Slice buildSliderSlice(Context context, SliceData sliceData, private static Slice buildSliderSlice(Context context, SliceData sliceData,
BasePreferenceController controller) { BasePreferenceController controller) {
final SliderPreferenceController sliderController = final SliderPreferenceController sliderController = (SliderPreferenceController) controller;
(SliderPreferenceController) controller;
final PendingIntent actionIntent = getSliderAction(context, sliceData); final PendingIntent actionIntent = getSliderAction(context, sliceData);
return new ListBuilder(context, sliceData.getUri()) final PendingIntent contentIntent = getContentPendingIntent(context, sliceData);
final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource());
final SliceAction primaryAction = new SliceAction(contentIntent, icon,
sliceData.getTitle());
return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS)
.addInputRange(builder -> builder .addInputRange(builder -> builder
.setTitle(sliceData.getTitle()) .setTitle(sliceData.getTitle())
.setMax(sliderController.getMaxSteps()) .setMax(sliderController.getMaxSteps())
.setValue(sliderController.getSliderPosition()) .setValue(sliderController.getSliderPosition())
.setAction(actionIntent)) .setInputAction(actionIntent)
.setPrimaryAction(primaryAction))
.build(); .build();
} }
@@ -311,32 +316,30 @@ public class SliceBuilderUtils {
final String title = data.getTitle(); final String title = data.getTitle();
final String summary; final String summary;
final SliceAction primaryAction; final SliceAction primaryAction;
final IconCompat icon = IconCompat.createWithResource(context, data.getIconResource());
switch (controller.getAvailabilityStatus()) { switch (controller.getAvailabilityStatus()) {
case DISABLED_UNSUPPORTED: case DISABLED_UNSUPPORTED:
summary = context.getString(R.string.unsupported_setting_summary); summary = context.getString(R.string.unsupported_setting_summary);
primaryAction = new SliceAction(getSettingsIntent(context), primaryAction = new SliceAction(getSettingsIntent(context), icon, title);
(IconCompat) null /* actionIcon */,
null /* actionTitle */);
break; break;
case DISABLED_FOR_USER: case DISABLED_FOR_USER:
summary = context.getString(R.string.disabled_for_user_setting_summary); summary = context.getString(R.string.disabled_for_user_setting_summary);
primaryAction = new SliceAction(getContentPendingIntent(context, data), primaryAction = new SliceAction(getContentPendingIntent(context, data), icon,
(IconCompat) null /* actionIcon */, null /* actionTitle */); title);
break; break;
case DISABLED_DEPENDENT_SETTING: case DISABLED_DEPENDENT_SETTING:
summary = context.getString(R.string.disabled_dependent_setting_summary); summary = context.getString(R.string.disabled_dependent_setting_summary);
primaryAction = new SliceAction(getContentPendingIntent(context, data), primaryAction = new SliceAction(getContentPendingIntent(context, data), icon,
(IconCompat) null /* actionIcon */, null /* actionTitle */); title);
break; break;
case UNAVAILABLE_UNKNOWN: case UNAVAILABLE_UNKNOWN:
default: default:
summary = context.getString(R.string.unknown_unavailability_setting_summary); summary = context.getString(R.string.unknown_unavailability_setting_summary);
primaryAction = new SliceAction(getSettingsIntent(context), primaryAction = new SliceAction(getSettingsIntent(context), icon, title);
(IconCompat) null /* actionIcon */, null /* actionTitle */);
} }
return new ListBuilder(context, data.getUri()) return new ListBuilder(context, data.getUri(), SLICE_TTL_MILLIS)
.addRow(builder -> builder .addRow(builder -> builder
.setTitle(title) .setTitle(title)
.setSubtitle(summary) .setSubtitle(summary)

View File

@@ -115,8 +115,9 @@ public class SliceTester {
sliceData.getIconResource()); sliceData.getIconResource());
// Check primary intent // Check primary intent
final SliceAction primaryAction = metadata.getPrimaryAction(); final PendingIntent primaryPendingIntent = metadata.getPrimaryAction().getAction();
assertThat(primaryAction).isNull(); assertThat(primaryPendingIntent).isEqualTo(
SliceBuilderUtils.getContentPendingIntent(context, sliceData));
final List<SliceItem> sliceItems = slice.getItems(); final List<SliceItem> sliceItems = slice.getItems();
assertTitle(sliceItems, sliceData.getTitle()); assertTitle(sliceItems, sliceData.getTitle());
@@ -158,11 +159,15 @@ public class SliceTester {
private static void assertTitle(List<SliceItem> sliceItems, String title) { private static void assertTitle(List<SliceItem> sliceItems, String title) {
boolean hasTitle = false; boolean hasTitle = false;
for (SliceItem item : sliceItems) { for (SliceItem item : sliceItems) {
List<SliceItem> titles = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE, List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE,
null /* non-hints */); null /* non-hints */);
if (titles != null & titles.size() == 1) { if (titleItems == null) {
assertThat(titles.get(0).getText()).isEqualTo(title); continue;
hasTitle = true; }
hasTitle = true;
for (SliceItem subTitleItem : titleItems) {
assertThat(subTitleItem.getText()).isEqualTo(title);
} }
} }
assertThat(hasTitle).isTrue(); assertThat(hasTitle).isTrue();