Move all custom slice uris to a registry class.

Change-Id: I192320f95ac81d14c8891ce2531d603912e59f56
Fixes: 119776308
Test: robotests
This commit is contained in:
Fan Zhang
2018-11-27 16:14:51 -08:00
parent 154f34a35e
commit 53f75f0df9
33 changed files with 415 additions and 499 deletions

View File

@@ -20,7 +20,6 @@ import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
import android.annotation.ColorInt; import android.annotation.ColorInt;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
@@ -37,6 +36,7 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.connecteddevice.BluetoothDashboardFragment; import com.android.settings.connecteddevice.BluetoothDashboardFragment;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
@@ -47,16 +47,6 @@ public class BluetoothSliceBuilder {
private static final String TAG = "BluetoothSliceBuilder"; private static final String TAG = "BluetoothSliceBuilder";
/**
* Backing Uri for the Bluetooth Slice.
*/
public static final Uri BLUETOOTH_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(SettingsSlicesContract.KEY_BLUETOOTH)
.build();
/** /**
* Action notifying a change on the BluetoothSlice. * Action notifying a change on the BluetoothSlice.
*/ */
@@ -74,7 +64,7 @@ public class BluetoothSliceBuilder {
} }
/** /**
* Return a Bluetooth Slice bound to {@link #BLUETOOTH_URI}. * Return a Bluetooth Slice bound to {@link CustomSliceRegistry#BLUETOOTH_URI}.
* <p> * <p>
* Note that you should register a listener for {@link #INTENT_FILTER} to get changes for * Note that you should register a listener for {@link #INTENT_FILTER} to get changes for
* Bluetooth. * Bluetooth.
@@ -92,7 +82,7 @@ public class BluetoothSliceBuilder {
final SliceAction toggleSliceAction = new SliceAction(toggleAction, null /* actionTitle */, final SliceAction toggleSliceAction = new SliceAction(toggleAction, null /* actionTitle */,
isBluetoothEnabled); isBluetoothEnabled);
return new ListBuilder(context, BLUETOOTH_URI, ListBuilder.INFINITY) return new ListBuilder(context, CustomSliceRegistry.BLUETOOTH_URI, ListBuilder.INFINITY)
.setAccentColor(color) .setAccentColor(color)
.addRow(new RowBuilder() .addRow(new RowBuilder()
.setTitle(title) .setTitle(title)

View File

@@ -22,17 +22,14 @@ import static androidx.slice.builders.ListBuilder.ICON_IMAGE;
import android.annotation.ColorInt; import android.annotation.ColorInt;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager; import android.hardware.camera2.CameraManager;
import android.net.Uri;
import android.provider.Settings; import android.provider.Settings;
import android.provider.Settings.Secure; import android.provider.Settings.Secure;
import android.provider.SettingsSlicesContract;
import android.util.Log; import android.util.Log;
import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.IconCompat;
@@ -43,7 +40,7 @@ import androidx.slice.builders.SliceAction;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver;
@@ -54,37 +51,23 @@ public class FlashlightSliceBuilder {
private static final String TAG = "FlashlightSliceBuilder"; private static final String TAG = "FlashlightSliceBuilder";
public static final String KEY_FLASHLIGHT = "flashlight";
/**
* Backing Uri for the Flashlight Slice.
*/
public static final Uri FLASHLIGHT_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(KEY_FLASHLIGHT)
.build();
/** /**
* Action notifying a change on the Flashlight Slice. * Action notifying a change on the Flashlight Slice.
*/ */
public static final String ACTION_FLASHLIGHT_SLICE_CHANGED = public static final String ACTION_FLASHLIGHT_SLICE_CHANGED =
"com.android.settings.flashlight.action.FLASHLIGHT_SLICE_CHANGED"; "com.android.settings.flashlight.action.FLASHLIGHT_SLICE_CHANGED";
/** /**
* Action broadcasting a change on whether flashlight is on or off. * Action broadcasting a change on whether flashlight is on or off.
*/ */
public static final String ACTION_FLASHLIGHT_CHANGED = public static final String ACTION_FLASHLIGHT_CHANGED =
"com.android.settings.flashlight.action.FLASHLIGHT_CHANGED"; "com.android.settings.flashlight.action.FLASHLIGHT_CHANGED";
public static final IntentFilter INTENT_FILTER = new IntentFilter(ACTION_FLASHLIGHT_CHANGED); public static final IntentFilter INTENT_FILTER = new IntentFilter(ACTION_FLASHLIGHT_CHANGED);
private FlashlightSliceBuilder() {} private FlashlightSliceBuilder() {
}
/**
* Return a Flashlight Slice bound to {@link #FLASHLIGHT_URI}.
*/
public static Slice getSlice(Context context) { public static Slice getSlice(Context context) {
if (!isFlashlightAvailable(context)) { if (!isFlashlightAvailable(context)) {
return null; return null;
@@ -93,14 +76,15 @@ public class FlashlightSliceBuilder {
@ColorInt final int color = Utils.getColorAccentDefaultColor(context); @ColorInt final int color = Utils.getColorAccentDefaultColor(context);
final IconCompat icon = final IconCompat icon =
IconCompat.createWithResource(context, R.drawable.ic_signal_flashlight); IconCompat.createWithResource(context, R.drawable.ic_signal_flashlight);
return new ListBuilder(context, FLASHLIGHT_URI, ListBuilder.INFINITY) return new ListBuilder(context, CustomSliceRegistry.FLASHLIGHT_SLICE_URI,
.setAccentColor(color) ListBuilder.INFINITY)
.addRow(new RowBuilder() .setAccentColor(color)
.setTitle(context.getText(R.string.power_flashlight)) .addRow(new RowBuilder()
.setTitleItem(icon, ICON_IMAGE) .setTitle(context.getText(R.string.power_flashlight))
.setPrimaryAction( .setTitleItem(icon, ICON_IMAGE)
new SliceAction(toggleAction, null, isFlashlightEnabled(context)))) .setPrimaryAction(
.build(); new SliceAction(toggleAction, null, isFlashlightEnabled(context))))
.build();
} }
/** /**
@@ -119,7 +103,7 @@ public class FlashlightSliceBuilder {
} catch (CameraAccessException e) { } catch (CameraAccessException e) {
Log.e(TAG, "Camera couldn't set torch mode.", e); Log.e(TAG, "Camera couldn't set torch mode.", e);
} }
context.getContentResolver().notifyChange(FLASHLIGHT_URI, null); context.getContentResolver().notifyChange(CustomSliceRegistry.FLASHLIGHT_SLICE_URI, null);
} }
private static String getCameraId(Context context) throws CameraAccessException { private static String getCameraId(Context context) throws CameraAccessException {
@@ -130,7 +114,7 @@ public class FlashlightSliceBuilder {
Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE); Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING); Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING);
if (flashAvailable != null && flashAvailable if (flashAvailable != null && flashAvailable
&& lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) { && lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
return id; return id;
} }
} }
@@ -141,16 +125,16 @@ public class FlashlightSliceBuilder {
final Intent intent = new Intent(ACTION_FLASHLIGHT_SLICE_CHANGED); final Intent intent = new Intent(ACTION_FLASHLIGHT_SLICE_CHANGED);
intent.setClass(context, SliceBroadcastReceiver.class); intent.setClass(context, SliceBroadcastReceiver.class);
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent, return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
PendingIntent.FLAG_CANCEL_CURRENT); PendingIntent.FLAG_CANCEL_CURRENT);
} }
private static boolean isFlashlightAvailable(Context context) { private static boolean isFlashlightAvailable(Context context) {
return Settings.Secure.getInt( return Settings.Secure.getInt(
context.getContentResolver(), Secure.FLASHLIGHT_AVAILABLE, 0) == 1; context.getContentResolver(), Secure.FLASHLIGHT_AVAILABLE, 0) == 1;
} }
private static boolean isFlashlightEnabled(Context context) { private static boolean isFlashlightEnabled(Context context) {
return Settings.Secure.getInt( return Settings.Secure.getInt(
context.getContentResolver(), Secure.FLASHLIGHT_ENABLED, 0) == 1; context.getContentResolver(), Secure.FLASHLIGHT_ENABLED, 0) == 1;
} }
} }

View File

@@ -42,6 +42,9 @@ import java.util.Map;
* Controller in charge of the battery tip group * Controller in charge of the battery tip group
*/ */
public class BatteryTipPreferenceController extends BasePreferenceController { public class BatteryTipPreferenceController extends BasePreferenceController {
public static final String PREF_NAME = "battery_tip";
private static final String TAG = "BatteryTipPreferenceController"; private static final String TAG = "BatteryTipPreferenceController";
private static final int REQUEST_ANOMALY_ACTION = 0; private static final int REQUEST_ANOMALY_ACTION = 0;
private static final String KEY_BATTERY_TIPS = "key_battery_tips"; private static final String KEY_BATTERY_TIPS = "key_battery_tips";

View File

@@ -34,8 +34,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.slice.Slice; import androidx.slice.Slice;
import com.android.settings.homepage.contextualcards.slices.ConnectedDeviceSlice; import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.wifi.WifiSlice;
import com.android.settingslib.utils.AsyncLoaderCompat; import com.android.settingslib.utils.AsyncLoaderCompat;
import java.util.ArrayList; import java.util.ArrayList;
@@ -170,8 +169,8 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
private int getNumberOfLargeCard(List<ContextualCard> cards) { private int getNumberOfLargeCard(List<ContextualCard> cards) {
return (int) cards.stream() return (int) cards.stream()
.filter(card -> card.getSliceUri().equals(WifiSlice.WIFI_URI) .filter(card -> card.getSliceUri().equals(CustomSliceRegistry.WIFI_SLICE_URI)
|| card.getSliceUri().equals(ConnectedDeviceSlice.CONNECTED_DEVICE_URI)) || card.getSliceUri().equals(CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI))
.count(); .count();
} }

View File

@@ -16,16 +16,11 @@
package com.android.settings.homepage.contextualcards; package com.android.settings.homepage.contextualcards;
import static android.provider.SettingsSlicesContract.KEY_WIFI;
import android.annotation.Nullable; import android.annotation.Nullable;
import com.android.settings.homepage.contextualcards.slices.BatteryFixSlice;
import com.android.settings.homepage.contextualcards.slices.ConnectedDeviceSlice;
import com.android.settings.homepage.contextualcards.slices.LowStorageSlice;
import com.android.settings.intelligence.ContextualCardProto.ContextualCard; import com.android.settings.intelligence.ContextualCardProto.ContextualCard;
import com.android.settings.intelligence.ContextualCardProto.ContextualCardList; import com.android.settings.intelligence.ContextualCardProto.ContextualCardList;
import com.android.settings.wifi.WifiSlice; import com.android.settings.slices.CustomSliceRegistry;
import com.google.android.settings.intelligence.libs.contextualcards.ContextualCardProvider; import com.google.android.settings.intelligence.libs.contextualcards.ContextualCardProvider;
@@ -39,26 +34,26 @@ public class SettingsContextualCardProvider extends ContextualCardProvider {
public ContextualCardList getContextualCards() { public ContextualCardList getContextualCards() {
final ContextualCard wifiCard = final ContextualCard wifiCard =
ContextualCard.newBuilder() ContextualCard.newBuilder()
.setSliceUri(WifiSlice.WIFI_URI.toString()) .setSliceUri(CustomSliceRegistry.WIFI_SLICE_URI.toString())
.setCardName(KEY_WIFI) .setCardName(CustomSliceRegistry.WIFI_SLICE_URI.toString())
.setCardCategory(ContextualCard.Category.IMPORTANT) .setCardCategory(ContextualCard.Category.IMPORTANT)
.build(); .build();
final ContextualCard connectedDeviceCard = final ContextualCard connectedDeviceCard =
ContextualCard.newBuilder() ContextualCard.newBuilder()
.setSliceUri(ConnectedDeviceSlice.CONNECTED_DEVICE_URI.toString()) .setSliceUri(CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI.toString())
.setCardName(ConnectedDeviceSlice.PATH_CONNECTED_DEVICE) .setCardName(CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI.toString())
.setCardCategory(ContextualCard.Category.IMPORTANT) .setCardCategory(ContextualCard.Category.IMPORTANT)
.build(); .build();
final ContextualCard lowStorageCard = final ContextualCard lowStorageCard =
ContextualCard.newBuilder() ContextualCard.newBuilder()
.setSliceUri(LowStorageSlice.LOW_STORAGE_URI.toString()) .setSliceUri(CustomSliceRegistry.LOW_STORAGE_SLICE_URI.toString())
.setCardName(LowStorageSlice.PATH_LOW_STORAGE) .setCardName(CustomSliceRegistry.LOW_STORAGE_SLICE_URI.toString())
.setCardCategory(ContextualCard.Category.IMPORTANT) .setCardCategory(ContextualCard.Category.IMPORTANT)
.build(); .build();
final ContextualCard batteryFixCard = final ContextualCard batteryFixCard =
ContextualCard.newBuilder() ContextualCard.newBuilder()
.setSliceUri(BatteryFixSlice.BATTERY_FIX_URI.toString()) .setSliceUri(CustomSliceRegistry.BATTERY_FIX_SLICE_URI.toString())
.setCardName(BatteryFixSlice.PATH_BATTERY_FIX) .setCardName(CustomSliceRegistry.BATTERY_FIX_SLICE_URI.toString())
.setCardCategory(ContextualCard.Category.IMPORTANT) .setCardCategory(ContextualCard.Category.IMPORTANT)
.build(); .build();
final ContextualCardList cards = ContextualCardList.newBuilder() final ContextualCardList cards = ContextualCardList.newBuilder()

View File

@@ -16,8 +16,9 @@
package com.android.settings.homepage.contextualcards.deviceinfo; package com.android.settings.homepage.contextualcards.deviceinfo;
import static com.android.settings.slices.CustomSliceRegistry.BATTERY_INFO_SLICE_URI;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
@@ -37,7 +38,6 @@ import com.android.settings.Utils;
import com.android.settings.fuelgauge.BatteryInfo; import com.android.settings.fuelgauge.BatteryInfo;
import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.fuelgauge.PowerUsageSummary;
import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.CustomSliceable;
import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
/** /**
@@ -46,20 +46,6 @@ import com.android.settings.slices.SliceBuilderUtils;
public class BatterySlice implements CustomSliceable { public class BatterySlice implements CustomSliceable {
private static final String TAG = "BatterySlice"; private static final String TAG = "BatterySlice";
/**
* The path denotes the unique name of battery slice.
*/
public static final String PATH_BATTERY_INFO = "battery_card";
/**
* Backing Uri for the Battery Slice.
*/
public static final Uri BATTERY_CARD_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_BATTERY_INFO)
.build();
private final Context mContext; private final Context mContext;
private BatteryInfo mBatteryInfo; private BatteryInfo mBatteryInfo;
@@ -69,9 +55,6 @@ public class BatterySlice implements CustomSliceable {
mContext = context; mContext = context;
} }
/**
* Return a {@link BatterySlice} bound to {@link #BATTERY_CARD_URI}
*/
@Override @Override
public Slice getSlice() { public Slice getSlice() {
if (mBatteryInfo == null) { if (mBatteryInfo == null) {
@@ -82,7 +65,7 @@ public class BatterySlice implements CustomSliceable {
R.drawable.ic_settings_battery); R.drawable.ic_settings_battery);
final CharSequence title = mContext.getText(R.string.power_usage_summary_title); final CharSequence title = mContext.getText(R.string.power_usage_summary_title);
final SliceAction primarySliceAction = new SliceAction(getPrimaryAction(), icon, title); final SliceAction primarySliceAction = new SliceAction(getPrimaryAction(), icon, title);
final Slice slice = new ListBuilder(mContext, BATTERY_CARD_URI, ListBuilder.INFINITY) final Slice slice = new ListBuilder(mContext, BATTERY_INFO_SLICE_URI, ListBuilder.INFINITY)
.setAccentColor(Utils.getColorAccentDefaultColor(mContext)) .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
.setHeader(new ListBuilder.HeaderBuilder().setTitle(title)) .setHeader(new ListBuilder.HeaderBuilder().setTitle(title))
.addRow(new ListBuilder.RowBuilder() .addRow(new ListBuilder.RowBuilder()
@@ -97,7 +80,7 @@ public class BatterySlice implements CustomSliceable {
@Override @Override
public Uri getUri() { public Uri getUri() {
return BATTERY_CARD_URI; return BATTERY_INFO_SLICE_URI;
} }
@Override @Override
@@ -108,12 +91,10 @@ public class BatterySlice implements CustomSliceable {
@Override @Override
public Intent getIntent() { public Intent getIntent() {
final String screenTitle = mContext.getText(R.string.power_usage_summary_title).toString(); final String screenTitle = mContext.getText(R.string.power_usage_summary_title).toString();
final Uri contentUri = new Uri.Builder().appendPath(PATH_BATTERY_INFO).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
PowerUsageSummary.class.getName(), PATH_BATTERY_INFO, screenTitle, PowerUsageSummary.class.getName(), "" /* key */, screenTitle,
MetricsProto.MetricsEvent.SLICE) MetricsProto.MetricsEvent.SLICE)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName());
.setData(contentUri);
} }
@Override @Override

View File

@@ -17,7 +17,6 @@
package com.android.settings.homepage.contextualcards.deviceinfo; package com.android.settings.homepage.contextualcards.deviceinfo;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@@ -39,8 +38,8 @@ import com.android.settings.SubSettings;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.datausage.DataUsageSummary; import com.android.settings.datausage.DataUsageSummary;
import com.android.settings.datausage.DataUsageUtils; import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.CustomSliceable;
import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
import com.android.settingslib.net.DataUsageController; import com.android.settingslib.net.DataUsageController;
@@ -50,19 +49,6 @@ public class DataUsageSlice implements CustomSliceable {
private static final String TAG = "DataUsageSlice"; private static final String TAG = "DataUsageSlice";
private static final long MILLIS_IN_A_DAY = TimeUnit.DAYS.toMillis(1); private static final long MILLIS_IN_A_DAY = TimeUnit.DAYS.toMillis(1);
/**
* The path denotes the unique name of data usage slice.
*/
public static final String PATH_DATA_USAGE = "data_usage_card";
/**
* Backing Uri for the Data usage Slice.
*/
public static final Uri DATA_USAGE_CARD_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_DATA_USAGE)
.build();
private final Context mContext; private final Context mContext;
@@ -72,12 +58,9 @@ public class DataUsageSlice implements CustomSliceable {
@Override @Override
public Uri getUri() { public Uri getUri() {
return DATA_USAGE_CARD_URI; return CustomSliceRegistry.DATA_USAGE_SLICE_URI;
} }
/**
* Return a Data usage Slice bound to {@link #DATA_USAGE_CARD_URI}
*/
@Override @Override
public Slice getSlice() { public Slice getSlice() {
final IconCompat icon = IconCompat.createWithResource(mContext, final IconCompat icon = IconCompat.createWithResource(mContext,
@@ -87,7 +70,8 @@ public class DataUsageSlice implements CustomSliceable {
final DataUsageController dataUsageController = new DataUsageController(mContext); final DataUsageController dataUsageController = new DataUsageController(mContext);
final DataUsageController.DataUsageInfo info = dataUsageController.getDataUsageInfo(); final DataUsageController.DataUsageInfo info = dataUsageController.getDataUsageInfo();
final ListBuilder listBuilder = final ListBuilder listBuilder =
new ListBuilder(mContext, DATA_USAGE_CARD_URI, ListBuilder.INFINITY) new ListBuilder(mContext, CustomSliceRegistry.DATA_USAGE_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor(Utils.getColorAccentDefaultColor(mContext)) .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
.setHeader(new ListBuilder.HeaderBuilder().setTitle(title)); .setHeader(new ListBuilder.HeaderBuilder().setTitle(title));
if (DataUsageUtils.hasSim(mContext)) { if (DataUsageUtils.hasSim(mContext)) {
@@ -106,12 +90,10 @@ public class DataUsageSlice implements CustomSliceable {
@Override @Override
public Intent getIntent() { public Intent getIntent() {
final String screenTitle = mContext.getText(R.string.data_usage_wifi_title).toString(); final String screenTitle = mContext.getText(R.string.data_usage_wifi_title).toString();
final Uri contentUri = new Uri.Builder().appendPath(PATH_DATA_USAGE).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
DataUsageSummary.class.getName(), PATH_DATA_USAGE, screenTitle, DataUsageSummary.class.getName(), "" /* key */, screenTitle,
MetricsProto.MetricsEvent.SLICE) MetricsProto.MetricsEvent.SLICE)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName());
.setData(contentUri);
} }
private PendingIntent getPrimaryAction() { private PendingIntent getPrimaryAction() {

View File

@@ -17,7 +17,6 @@
package com.android.settings.homepage.contextualcards.deviceinfo; package com.android.settings.homepage.contextualcards.deviceinfo;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@@ -39,8 +38,8 @@ import com.android.settings.SubSettings;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.deviceinfo.DeviceModelPreferenceController; import com.android.settings.deviceinfo.DeviceModelPreferenceController;
import com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment; import com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.CustomSliceable;
import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.DeviceInfoUtils;
@@ -49,20 +48,6 @@ import java.util.List;
public class DeviceInfoSlice implements CustomSliceable { public class DeviceInfoSlice implements CustomSliceable {
private static final String TAG = "DeviceInfoSlice"; private static final String TAG = "DeviceInfoSlice";
/**
* The path denotes the unique name of device info slice
*/
public static final String PATH_DEVICE_INFO = "device_info_card";
/**
* Backing Uri for the Device info Slice.
*/
public static final Uri DEVICE_INFO_CARD_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_DEVICE_INFO)
.build();
private final Context mContext; private final Context mContext;
private final SubscriptionManager mSubscriptionManager; private final SubscriptionManager mSubscriptionManager;
@@ -71,16 +56,14 @@ public class DeviceInfoSlice implements CustomSliceable {
mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class); mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
} }
/**
* Return a device info slice bound to {@Link #DEVICE_INFO_CARD_URI}
*/
@Override @Override
public Slice getSlice() { public Slice getSlice() {
final IconCompat icon = IconCompat.createWithResource(mContext, final IconCompat icon = IconCompat.createWithResource(mContext,
R.drawable.ic_info_outline_24dp); R.drawable.ic_info_outline_24dp);
final String title = mContext.getString(R.string.device_info_label); final String title = mContext.getString(R.string.device_info_label);
final SliceAction primaryAction = new SliceAction(getPrimaryAction(), icon, title); final SliceAction primaryAction = new SliceAction(getPrimaryAction(), icon, title);
return new ListBuilder(mContext, DEVICE_INFO_CARD_URI, ListBuilder.INFINITY) return new ListBuilder(mContext, CustomSliceRegistry.DEVICE_INFO_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor((Utils.getColorAccentDefaultColor(mContext))) .setAccentColor((Utils.getColorAccentDefaultColor(mContext)))
.setHeader(new ListBuilder.HeaderBuilder().setTitle(title)) .setHeader(new ListBuilder.HeaderBuilder().setTitle(title))
.addRow(new ListBuilder.RowBuilder() .addRow(new ListBuilder.RowBuilder()
@@ -92,18 +75,16 @@ public class DeviceInfoSlice implements CustomSliceable {
@Override @Override
public Uri getUri() { public Uri getUri() {
return DEVICE_INFO_CARD_URI; return CustomSliceRegistry.DEVICE_INFO_SLICE_URI;
} }
@Override @Override
public Intent getIntent() { public Intent getIntent() {
final String screenTitle = mContext.getText(R.string.device_info_label).toString(); final String screenTitle = mContext.getText(R.string.device_info_label).toString();
final Uri contentUri = new Uri.Builder().appendPath(PATH_DEVICE_INFO).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
MyDeviceInfoFragment.class.getName(), PATH_DEVICE_INFO, screenTitle, MyDeviceInfoFragment.class.getName(), "" /* key */, screenTitle,
MetricsProto.MetricsEvent.SLICE) MetricsProto.MetricsEvent.SLICE)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName());
.setData(contentUri);
} }
private PendingIntent getPrimaryAction() { private PendingIntent getPrimaryAction() {

View File

@@ -17,10 +17,8 @@
package com.android.settings.homepage.contextualcards.deviceinfo; package com.android.settings.homepage.contextualcards.deviceinfo;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri;
import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.IconCompat;
import androidx.slice.Slice; import androidx.slice.Slice;
@@ -28,39 +26,27 @@ import androidx.slice.builders.ListBuilder;
import androidx.slice.builders.SliceAction; import androidx.slice.builders.SliceAction;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.CustomSliceRegistry;
// This is a slice helper class for EmergencyInfo // This is a slice helper class for EmergencyInfo
public class EmergencyInfoSlice { public class EmergencyInfoSlice {
/**
* The path denotes the unique name of emergency info slice.
*/
public static final String PATH_EMERGENCY_INFO_CARD = "emergency_info_card";
/**
* Backing Uri for the Emergency Info Slice.
*/
public static final Uri EMERGENCY_INFO_CARD_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_EMERGENCY_INFO_CARD)
.build();
private static final String ACTION_EDIT_EMERGENCY_INFO = "android.settings.EDIT_EMERGENCY_INFO"; private static final String ACTION_EDIT_EMERGENCY_INFO = "android.settings.EDIT_EMERGENCY_INFO";
public static Slice getSlice(Context context) { public static Slice getSlice(Context context) {
final ListBuilder listBuilder = new ListBuilder(context, EMERGENCY_INFO_CARD_URI, final ListBuilder listBuilder = new ListBuilder(context,
CustomSliceRegistry.EMERGENCY_INFO_SLICE_URI,
ListBuilder.INFINITY); ListBuilder.INFINITY);
listBuilder.addRow( listBuilder.addRow(
new ListBuilder.RowBuilder() new ListBuilder.RowBuilder()
.setTitle(context.getText(R.string.emergency_info_title)) .setTitle(context.getText(R.string.emergency_info_title))
.setSubtitle( .setSubtitle(
context.getText(R.string.emergency_info_contextual_card_summary)) context.getText(R.string.emergency_info_contextual_card_summary))
.setPrimaryAction(generatePrimaryAction(context))); .setPrimaryAction(createPrimaryAction(context)));
return listBuilder.build(); return listBuilder.build();
} }
private static SliceAction generatePrimaryAction(Context context) { private static SliceAction createPrimaryAction(Context context) {
PendingIntent pendingIntent = PendingIntent pendingIntent =
PendingIntent.getActivity( PendingIntent.getActivity(
context, context,

View File

@@ -17,7 +17,6 @@
package com.android.settings.homepage.contextualcards.deviceinfo; package com.android.settings.homepage.contextualcards.deviceinfo;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@@ -36,8 +35,8 @@ import com.android.settings.SubSettings;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.deviceinfo.StorageDashboardFragment; import com.android.settings.deviceinfo.StorageDashboardFragment;
import com.android.settings.deviceinfo.storage.StorageSummaryDonutPreferenceController; import com.android.settings.deviceinfo.storage.StorageSummaryDonutPreferenceController;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.CustomSliceable;
import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
import com.android.settingslib.deviceinfo.PrivateStorageInfo; import com.android.settingslib.deviceinfo.PrivateStorageInfo;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider; import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
@@ -45,20 +44,6 @@ import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
public class StorageSlice implements CustomSliceable { public class StorageSlice implements CustomSliceable {
private static final String TAG = "StorageSlice"; private static final String TAG = "StorageSlice";
/**
* The path denotes the unique name of storage slicel
*/
public static final String PATH_STORAGE_INFO = "storage_card";
/**
* Backing Uri for the storage slice.
*/
public static final Uri STORAGE_CARD_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_STORAGE_INFO)
.build();
private final Context mContext; private final Context mContext;
public StorageSlice(Context context) { public StorageSlice(Context context) {
@@ -67,12 +52,9 @@ public class StorageSlice implements CustomSliceable {
@Override @Override
public Uri getUri() { public Uri getUri() {
return STORAGE_CARD_URI; return CustomSliceRegistry.STORAGE_SLICE_URI;
} }
/**
* Return a storage slice bound to {@link #STORAGE_CARD_URI}
*/
@Override @Override
public Slice getSlice() { public Slice getSlice() {
final IconCompat icon = IconCompat.createWithResource(mContext, final IconCompat icon = IconCompat.createWithResource(mContext,
@@ -80,7 +62,8 @@ public class StorageSlice implements CustomSliceable {
final String title = mContext.getString(R.string.storage_label); final String title = mContext.getString(R.string.storage_label);
final SliceAction primaryAction = new SliceAction(getPrimaryAction(), icon, title); final SliceAction primaryAction = new SliceAction(getPrimaryAction(), icon, title);
final PrivateStorageInfo info = getPrivateStorageInfo(); final PrivateStorageInfo info = getPrivateStorageInfo();
return new ListBuilder(mContext, STORAGE_CARD_URI, ListBuilder.INFINITY) return new ListBuilder(mContext, CustomSliceRegistry.STORAGE_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor(Utils.getColorAccentDefaultColor(mContext)) .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
.setHeader(new ListBuilder.HeaderBuilder().setTitle(title)) .setHeader(new ListBuilder.HeaderBuilder().setTitle(title))
.addRow(new ListBuilder.RowBuilder() .addRow(new ListBuilder.RowBuilder()
@@ -93,12 +76,10 @@ public class StorageSlice implements CustomSliceable {
@Override @Override
public Intent getIntent() { public Intent getIntent() {
final String screenTitle = mContext.getText(R.string.storage_label).toString(); final String screenTitle = mContext.getText(R.string.storage_label).toString();
final Uri contentUri = new Uri.Builder().appendPath(PATH_STORAGE_INFO).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
StorageDashboardFragment.class.getName(), PATH_STORAGE_INFO, screenTitle, StorageDashboardFragment.class.getName(), "" /* key */, screenTitle,
MetricsProto.MetricsEvent.SLICE) MetricsProto.MetricsEvent.SLICE)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName());
.setData(contentUri);
} }
private PendingIntent getPrimaryAction() { private PendingIntent getPrimaryAction() {

View File

@@ -19,7 +19,6 @@ package com.android.settings.homepage.contextualcards.slices;
import static android.content.Context.MODE_PRIVATE; import static android.content.Context.MODE_PRIVATE;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@@ -34,7 +33,6 @@ import androidx.slice.builders.ListBuilder.RowBuilder;
import androidx.slice.builders.SliceAction; import androidx.slice.builders.SliceAction;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.os.BatteryStatsHelper; import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
@@ -42,9 +40,10 @@ import com.android.settings.Utils;
import com.android.settings.fuelgauge.BatteryStatsHelperLoader; import com.android.settings.fuelgauge.BatteryStatsHelperLoader;
import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.fuelgauge.PowerUsageSummary;
import com.android.settings.fuelgauge.batterytip.BatteryTipLoader; import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.CustomSliceable;
import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBackgroundWorker; import com.android.settings.slices.SliceBackgroundWorker;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.utils.ThreadUtils;
@@ -53,20 +52,6 @@ import java.util.List;
public class BatteryFixSlice implements CustomSliceable { public class BatteryFixSlice implements CustomSliceable {
/**
* Unique name of Battery Fix Slice.
*/
public static final String PATH_BATTERY_FIX = "battery_fix";
/**
* Uri for Battery Fix Slice.
*/
public static final Uri BATTERY_FIX_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_BATTERY_FIX)
.build();
@VisibleForTesting @VisibleForTesting
static final String PREFS = "battery_fix_prefs"; static final String PREFS = "battery_fix_prefs";
@VisibleForTesting @VisibleForTesting
@@ -82,12 +67,9 @@ public class BatteryFixSlice implements CustomSliceable {
@Override @Override
public Uri getUri() { public Uri getUri() {
return BATTERY_FIX_URI; return CustomSliceRegistry.BATTERY_FIX_SLICE_URI;
} }
/**
* Return a Slice bound to {@link #BATTERY_FIX_URI}.
*/
@Override @Override
public Slice getSlice() { public Slice getSlice() {
IconCompat icon; IconCompat icon;
@@ -109,7 +91,8 @@ public class BatteryFixSlice implements CustomSliceable {
primaryAction = new SliceAction(getPrimaryAction(), primaryAction = new SliceAction(getPrimaryAction(),
icon, icon,
batteryTip.getTitle(mContext)); batteryTip.getTitle(mContext));
slice = new ListBuilder(mContext, BATTERY_FIX_URI, ListBuilder.INFINITY) slice = new ListBuilder(mContext, CustomSliceRegistry.BATTERY_FIX_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor(Utils.getColorAccentDefaultColor(mContext)) .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
.addRow(new RowBuilder() .addRow(new RowBuilder()
.setTitle(batteryTip.getTitle(mContext)) .setTitle(batteryTip.getTitle(mContext))
@@ -125,7 +108,8 @@ public class BatteryFixSlice implements CustomSliceable {
R.drawable.ic_battery_status_good_24dp); R.drawable.ic_battery_status_good_24dp);
final String title = mContext.getString(R.string.power_usage_summary_title); final String title = mContext.getString(R.string.power_usage_summary_title);
primaryAction = new SliceAction(getPrimaryAction(), icon, title); primaryAction = new SliceAction(getPrimaryAction(), icon, title);
slice = new ListBuilder(mContext, BATTERY_FIX_URI, ListBuilder.INFINITY) slice = new ListBuilder(mContext, CustomSliceRegistry.BATTERY_FIX_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor(Utils.getColorAccentDefaultColor(mContext)) .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
.addRow(new RowBuilder() .addRow(new RowBuilder()
.setTitle(title) .setTitle(title)
@@ -140,10 +124,11 @@ public class BatteryFixSlice implements CustomSliceable {
public Intent getIntent() { public Intent getIntent() {
final String screenTitle = mContext.getText(R.string.power_usage_summary_title) final String screenTitle = mContext.getText(R.string.power_usage_summary_title)
.toString(); .toString();
final Uri contentUri = new Uri.Builder().appendPath(PATH_BATTERY_FIX).build(); final Uri contentUri = new Uri.Builder()
.appendPath(BatteryTipPreferenceController.PREF_NAME).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
PowerUsageSummary.class.getName(), PATH_BATTERY_FIX, PowerUsageSummary.class.getName(), BatteryTipPreferenceController.PREF_NAME,
screenTitle, screenTitle,
MetricsProto.MetricsEvent.SLICE) MetricsProto.MetricsEvent.SLICE)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName())

View File

@@ -18,7 +18,6 @@ package com.android.settings.homepage.contextualcards.slices;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@@ -43,8 +42,8 @@ import com.android.settings.Utils;
import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment; import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment; import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.CustomSliceable;
import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -67,20 +66,6 @@ import java.util.stream.Collectors;
*/ */
public class ConnectedDeviceSlice implements CustomSliceable { public class ConnectedDeviceSlice implements CustomSliceable {
/**
* The path denotes the unique name of Connected device Slice.
*/
public static final String PATH_CONNECTED_DEVICE = "connected_device";
/**
* Backing Uri for Connected device Slice.
*/
public static final Uri CONNECTED_DEVICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_CONNECTED_DEVICE)
.build();
/** /**
* To sort the Bluetooth devices by {@link CachedBluetoothDevice}. * To sort the Bluetooth devices by {@link CachedBluetoothDevice}.
* Refer compareTo method from {@link com.android.settings.bluetooth.BluetoothDevicePreference}. * Refer compareTo method from {@link com.android.settings.bluetooth.BluetoothDevicePreference}.
@@ -109,12 +94,9 @@ public class ConnectedDeviceSlice implements CustomSliceable {
@Override @Override
public Uri getUri() { public Uri getUri() {
return CONNECTED_DEVICE_URI; return CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI;
} }
/**
* Return a Connected Device Slice bound to {@link #CONNECTED_DEVICE_URI}.
*/
@Override @Override
public Slice getSlice() { public Slice getSlice() {
final IconCompat icon = IconCompat.createWithResource(mContext, final IconCompat icon = IconCompat.createWithResource(mContext,
@@ -127,7 +109,8 @@ public class ConnectedDeviceSlice implements CustomSliceable {
final SliceAction primarySliceAction = new SliceAction(primaryActionIntent, icon, final SliceAction primarySliceAction = new SliceAction(primaryActionIntent, icon,
title); title);
final ListBuilder listBuilder = final ListBuilder listBuilder =
new ListBuilder(mContext, CONNECTED_DEVICE_URI, ListBuilder.INFINITY) new ListBuilder(mContext, CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor(Utils.getColorAccentDefaultColor(mContext)); .setAccentColor(Utils.getColorAccentDefaultColor(mContext));
// Get row builders by connected devices, e.g. Bluetooth. // Get row builders by connected devices, e.g. Bluetooth.
@@ -159,14 +142,12 @@ public class ConnectedDeviceSlice implements CustomSliceable {
public Intent getIntent() { public Intent getIntent() {
final String screenTitle = mContext.getText(R.string.connected_devices_dashboard_title) final String screenTitle = mContext.getText(R.string.connected_devices_dashboard_title)
.toString(); .toString();
final Uri contentUri = new Uri.Builder().appendPath(PATH_CONNECTED_DEVICE).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
ConnectedDeviceDashboardFragment.class.getName(), PATH_CONNECTED_DEVICE, ConnectedDeviceDashboardFragment.class.getName(), "" /* key */,
screenTitle, screenTitle,
MetricsProto.MetricsEvent.SLICE) MetricsProto.MetricsEvent.SLICE)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName());
.setData(contentUri);
} }
@Override @Override

View File

@@ -17,7 +17,6 @@
package com.android.settings.homepage.contextualcards.slices; package com.android.settings.homepage.contextualcards.slices;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@@ -36,8 +35,8 @@ import com.android.settings.R;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.deviceinfo.StorageSettings; import com.android.settings.deviceinfo.StorageSettings;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.CustomSliceable;
import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
import com.android.settingslib.deviceinfo.PrivateStorageInfo; import com.android.settingslib.deviceinfo.PrivateStorageInfo;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider; import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
@@ -46,20 +45,6 @@ import java.text.NumberFormat;
public class LowStorageSlice implements CustomSliceable { public class LowStorageSlice implements CustomSliceable {
/**
* The path denotes the unique name of Low storage Slice.
*/
public static final String PATH_LOW_STORAGE = "low_storage";
/**
* Backing Uri for Low storage Slice.
*/
public static final Uri LOW_STORAGE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_LOW_STORAGE)
.build();
private static final String TAG = "LowStorageSlice"; private static final String TAG = "LowStorageSlice";
/** /**
@@ -73,9 +58,6 @@ public class LowStorageSlice implements CustomSliceable {
mContext = context; mContext = context;
} }
/**
* Return a Low storage Slice bound to {@link #LOW_STORAGE_URI}
*/
@Override @Override
public Slice getSlice() { public Slice getSlice() {
// Get current storage percentage from StorageManager. // Get current storage percentage from StorageManager.
@@ -108,7 +90,8 @@ public class LowStorageSlice implements CustomSliceable {
* Slices doesn't support "Icon on the left" in header. Now we intend to start with Icon * Slices doesn't support "Icon on the left" in header. Now we intend to start with Icon
* right aligned. Will update the icon to left until Slices support it. * right aligned. Will update the icon to left until Slices support it.
*/ */
return new ListBuilder(mContext, LOW_STORAGE_URI, ListBuilder.INFINITY) return new ListBuilder(mContext, CustomSliceRegistry.LOW_STORAGE_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor(Utils.getColorAccentDefaultColor(mContext)) .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
.addRow(new RowBuilder() .addRow(new RowBuilder()
.setTitle(title) .setTitle(title)
@@ -120,7 +103,7 @@ public class LowStorageSlice implements CustomSliceable {
@Override @Override
public Uri getUri() { public Uri getUri() {
return LOW_STORAGE_URI; return CustomSliceRegistry.LOW_STORAGE_SLICE_URI;
} }
@Override @Override
@@ -132,13 +115,11 @@ public class LowStorageSlice implements CustomSliceable {
public Intent getIntent() { public Intent getIntent() {
final String screenTitle = mContext.getText(R.string.storage_label) final String screenTitle = mContext.getText(R.string.storage_label)
.toString(); .toString();
final Uri contentUri = new Uri.Builder().appendPath(PATH_LOW_STORAGE).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
StorageSettings.class.getName(), PATH_LOW_STORAGE, StorageSettings.class.getName(), "" /* key */,
screenTitle, screenTitle,
MetricsProto.MetricsEvent.SLICE) MetricsProto.MetricsEvent.SLICE)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName());
.setData(contentUri);
} }
} }

View File

@@ -23,11 +23,9 @@ import static androidx.slice.builders.ListBuilder.ICON_IMAGE;
import android.annotation.ColorInt; import android.annotation.ColorInt;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.provider.SettingsSlicesContract;
import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.IconCompat;
import androidx.slice.Slice; import androidx.slice.Slice;
@@ -39,6 +37,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
/** /**
@@ -46,21 +45,11 @@ import com.android.settings.slices.SliceBuilderUtils;
*/ */
public class LocationSliceBuilder { public class LocationSliceBuilder {
/**
* Backing Uri for the Location Slice.
*/
public static final Uri LOCATION_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(KEY_LOCATION)
.build();
private LocationSliceBuilder() { private LocationSliceBuilder() {
} }
/** /**
* Return a Location Slice bound to {@link #LOCATION_URI}. * Return a Location Slice bound to {@link CustomSliceRegistry#LOCATION_SLICE_URI}.
*/ */
public static Slice getSlice(Context context) { public static Slice getSlice(Context context) {
final IconCompat icon = IconCompat.createWithResource(context, final IconCompat icon = IconCompat.createWithResource(context,
@@ -70,7 +59,8 @@ public class LocationSliceBuilder {
final PendingIntent primaryAction = getPrimaryAction(context); final PendingIntent primaryAction = getPrimaryAction(context);
final SliceAction primarySliceAction = new SliceAction(primaryAction, icon, title); final SliceAction primarySliceAction = new SliceAction(primaryAction, icon, title);
return new ListBuilder(context, LOCATION_URI, ListBuilder.INFINITY) return new ListBuilder(context, CustomSliceRegistry.LOCATION_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor(color) .setAccentColor(color)
.addRow(new RowBuilder() .addRow(new RowBuilder()
.setTitle(title) .setTitle(title)

View File

@@ -19,7 +19,6 @@ package com.android.settings.network.telephony;
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
import android.app.PendingIntent; import android.app.PendingIntent;
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;
@@ -40,9 +39,8 @@ import androidx.slice.builders.SliceAction;
import com.android.ims.ImsManager; import com.android.ims.ImsManager;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver;
import com.android.settings.slices.SliceBuilderUtils;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
@@ -57,12 +55,7 @@ import java.util.concurrent.TimeoutException;
*/ */
public class Enhanced4gLteSliceHelper { public class Enhanced4gLteSliceHelper {
private static final String TAG = "Enhanced4gLteSliceHelper"; private static final String TAG = "Enhanced4gLteSlice";
/**
* Settings slice path to enhanced 4g LTE setting.
*/
public static final String PATH_ENHANCED_4G_LTE = "enhanced_4g_lte";
/** /**
* Action passed for changes to enhanced 4g LTE slice (toggle). * Action passed for changes to enhanced 4g LTE slice (toggle).
@@ -70,14 +63,6 @@ public class Enhanced4gLteSliceHelper {
public static final String ACTION_ENHANCED_4G_LTE_CHANGED = public static final String ACTION_ENHANCED_4G_LTE_CHANGED =
"com.android.settings.mobilenetwork.action.ENHANCED_4G_LTE_CHANGED"; "com.android.settings.mobilenetwork.action.ENHANCED_4G_LTE_CHANGED";
/**
* Slice Uri for Enhanced 4G slice
*/
public static final Uri SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_ENHANCED_4G_LTE)
.build();
/** /**
* Action for mobile network settings activity which * Action for mobile network settings activity which
* allows setting configuration for Enhanced 4G LTE * allows setting configuration for Enhanced 4G LTE
@@ -225,8 +210,7 @@ public class Enhanced4gLteSliceHelper {
} }
// notify change in slice in any case to get re-queried. This would result in displaying // notify change in slice in any case to get re-queried. This would result in displaying
// appropriate message with the updated setting. // appropriate message with the updated setting.
final Uri uri = SliceBuilderUtils.getUri(PATH_ENHANCED_4G_LTE, false /*isPlatformSlice*/); mContext.getContentResolver().notifyChange(CustomSliceRegistry.ENHANCED_4G_SLICE_URI, null);
mContext.getContentResolver().notifyChange(uri, null);
} }
private CharSequence getEnhanced4glteModeTitle(int subId) { private CharSequence getEnhanced4glteModeTitle(int subId) {

View File

@@ -35,6 +35,9 @@ import com.android.settingslib.core.lifecycle.events.OnResume;
public class ZenModePreferenceController extends BasePreferenceController public class ZenModePreferenceController extends BasePreferenceController
implements LifecycleObserver, OnResume, OnPause { implements LifecycleObserver, OnResume, OnPause {
public static final String ZEN_MODE_KEY = "zen_mode";
private SettingObserver mSettingObserver; private SettingObserver mSettingObserver;
private ZenModeSettings.SummaryBuilder mSummaryBuilder; private ZenModeSettings.SummaryBuilder mSummaryBuilder;

View File

@@ -18,16 +18,16 @@ package com.android.settings.notification;
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
import static com.android.settings.notification.ZenModePreferenceController.ZEN_MODE_KEY;
import android.annotation.ColorInt; import android.annotation.ColorInt;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.Uri; import android.net.Uri;
import android.provider.Settings; import android.provider.Settings;
import android.provider.SettingsSlicesContract;
import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.IconCompat;
import androidx.slice.Slice; import androidx.slice.Slice;
@@ -39,7 +39,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver;
import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.slices.SliceBuilderUtils;
@@ -47,18 +47,6 @@ public class ZenModeSliceBuilder {
private static final String TAG = "ZenModeSliceBuilder"; private static final String TAG = "ZenModeSliceBuilder";
private static final String ZEN_MODE_KEY = "zen_mode";
/**
* Backing Uri for the Zen Mode Slice.
*/
public static final Uri ZEN_MODE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(ZEN_MODE_KEY)
.build();
/** /**
* Action notifying a change on the Zen Mode Slice. * Action notifying a change on the Zen Mode Slice.
*/ */
@@ -77,7 +65,7 @@ public class ZenModeSliceBuilder {
} }
/** /**
* Return a ZenMode Slice bound to {@link #ZEN_MODE_URI}. * Return a ZenMode Slice bound to {@link CustomSliceRegistry#ZEN_MODE_URI}.
* <p> * <p>
* Note that you should register a listener for {@link #INTENT_FILTER} to get changes for * Note that you should register a listener for {@link #INTENT_FILTER} to get changes for
* ZenMode. * ZenMode.
@@ -93,7 +81,8 @@ public class ZenModeSliceBuilder {
final SliceAction toggleSliceAction = new SliceAction(toggleAction, null /* actionTitle */, final SliceAction toggleSliceAction = new SliceAction(toggleAction, null /* actionTitle */,
isZenModeEnabled); isZenModeEnabled);
return new ListBuilder(context, ZEN_MODE_URI, ListBuilder.INFINITY) return new ListBuilder(context, CustomSliceRegistry.ZEN_MODE_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor(color) .setAccentColor(color)
.addRow(new RowBuilder() .addRow(new RowBuilder()
.setTitle(title) .setTitle(title)

View File

@@ -16,16 +16,12 @@
package com.android.settings.panel; package com.android.settings.panel;
import androidx.annotation.VisibleForTesting;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.provider.SettingsSlicesContract;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.wifi.WifiSlice; import com.android.settings.slices.CustomSliceRegistry;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -34,19 +30,11 @@ import java.util.List;
* Represents the Internet Connectivity Panel. * Represents the Internet Connectivity Panel.
* *
* <p> * <p>
* Displays Wifi (full Slice) and Airplane mode. * Displays Wifi (full Slice) and Airplane mode.
* </p> * </p>
*/ */
public class InternetConnectivityPanel implements PanelContent { public class InternetConnectivityPanel implements PanelContent {
@VisibleForTesting
static final Uri AIRPLANE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(SettingsSlicesContract.KEY_AIRPLANE_MODE)
.build();
private final Context mContext; private final Context mContext;
public static InternetConnectivityPanel create(Context context) { public static InternetConnectivityPanel create(Context context) {
@@ -65,8 +53,8 @@ public class InternetConnectivityPanel implements PanelContent {
@Override @Override
public List<Uri> getSlices() { public List<Uri> getSlices() {
final List<Uri> uris = new ArrayList<>(); final List<Uri> uris = new ArrayList<>();
uris.add(WifiSlice.WIFI_URI); uris.add(CustomSliceRegistry.WIFI_SLICE_URI);
uris.add(AIRPLANE_URI); uris.add(CustomSliceRegistry.AIRPLANE_URI);
return uris; return uris;
} }

View File

@@ -101,13 +101,13 @@ public class CustomSliceManager {
} }
private void addSlices() { private void addSlices() {
mUriMap.put(WifiSlice.WIFI_URI, WifiSlice.class); mUriMap.put(CustomSliceRegistry.BATTERY_FIX_SLICE_URI, BatteryFixSlice.class);
mUriMap.put(DataUsageSlice.DATA_USAGE_CARD_URI, DataUsageSlice.class); mUriMap.put(CustomSliceRegistry.BATTERY_INFO_SLICE_URI, BatterySlice.class);
mUriMap.put(DeviceInfoSlice.DEVICE_INFO_CARD_URI, DeviceInfoSlice.class); mUriMap.put(CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI, ConnectedDeviceSlice.class);
mUriMap.put(StorageSlice.STORAGE_CARD_URI, StorageSlice.class); mUriMap.put(CustomSliceRegistry.DATA_USAGE_SLICE_URI, DataUsageSlice.class);
mUriMap.put(BatterySlice.BATTERY_CARD_URI, BatterySlice.class); mUriMap.put(CustomSliceRegistry.DEVICE_INFO_SLICE_URI, DeviceInfoSlice.class);
mUriMap.put(ConnectedDeviceSlice.CONNECTED_DEVICE_URI, ConnectedDeviceSlice.class); mUriMap.put(CustomSliceRegistry.LOW_STORAGE_SLICE_URI, LowStorageSlice.class);
mUriMap.put(LowStorageSlice.LOW_STORAGE_URI, LowStorageSlice.class); mUriMap.put(CustomSliceRegistry.STORAGE_SLICE_URI, StorageSlice.class);
mUriMap.put(BatteryFixSlice.BATTERY_FIX_URI, BatteryFixSlice.class); mUriMap.put(CustomSliceRegistry.WIFI_SLICE_URI, WifiSlice.class);
} }
} }

View File

@@ -0,0 +1,184 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.slices;
import static android.provider.SettingsSlicesContract.KEY_LOCATION;
import static android.provider.SettingsSlicesContract.KEY_WIFI;
import static com.android.settings.notification.ZenModePreferenceController.ZEN_MODE_KEY;
import android.content.ContentResolver;
import android.net.Uri;
import android.provider.SettingsSlicesContract;
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
import com.android.settings.wifi.calling.WifiCallingSliceHelper;
/**
* A registry of custom slice Uris.
*/
public class CustomSliceRegistry {
/**
* Uri for Airplane mode Slice.
*/
public static final Uri AIRPLANE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(SettingsSlicesContract.KEY_AIRPLANE_MODE)
.build();
/**
* Uri for Battery Fix Slice.
*/
public static final Uri BATTERY_FIX_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendEncodedPath(SettingsSlicesContract.PATH_SETTING_INTENT)
.appendPath(BatteryTipPreferenceController.PREF_NAME)
.build();
/**
* Backing Uri for the Battery info Slice.
*/
public static final Uri BATTERY_INFO_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendEncodedPath(SettingsSlicesContract.PATH_SETTING_INTENT)
.appendPath("battery_card")
.build();
/**
* Backing Uri for the Bluetooth Slice.
*/
public static final Uri BLUETOOTH_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(SettingsSlicesContract.KEY_BLUETOOTH)
.build();
/**
* Backing Uri for Connected device Slice.
*/
public static final Uri CONNECTED_DEVICE_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath("connected_device")
.build();
/**
* Backing Uri for the Data usage Slice.
*/
public static final Uri DATA_USAGE_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath("data_usage_card")
.build();
/**
* Backing Uri for the Device info Slice.
*/
public static final Uri DEVICE_INFO_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath("device_info_card")
.build();
/**
* Backing Uri for the Emergency Info Slice.
*/
public static final Uri EMERGENCY_INFO_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath("emergency_info_card")
.build();
/**
* Slice Uri for Enhanced 4G slice
*/
public static final Uri ENHANCED_4G_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath("enhanced_4g_lte")
.build();
/**
* Backing Uri for the Flashlight Slice.
*/
public static final Uri FLASHLIGHT_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath("flashlight")
.build();
/**
* Backing Uri for the Location Slice.
*/
public static final Uri LOCATION_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(KEY_LOCATION)
.build();
/**
* Backing Uri for Low storage Slice.
*/
public static final Uri LOW_STORAGE_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendEncodedPath(SettingsSlicesContract.PATH_SETTING_INTENT)
.appendPath("low_storage")
.build();
/**
* Backing Uri for the storage slice.
*/
public static final Uri STORAGE_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath("storage_card")
.build();
/**
* Full {@link Uri} for the Wifi Calling Slice.
*/
public static final Uri WIFI_CALLING_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(WifiCallingSliceHelper.PATH_WIFI_CALLING)
.build();
/**
* Full {@link Uri} for the Wifi Calling Preference Slice.
*/
public static final Uri WIFI_CALLING_PREFERENCE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(WifiCallingSliceHelper.PATH_WIFI_CALLING_PREFERENCE)
.build();
/**
* Backing Uri for the Wifi Slice.
*/
public static final Uri WIFI_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(KEY_WIFI)
.build();
/**
* Backing Uri for the Zen Mode Slice.
*/
public static final Uri ZEN_MODE_SLICE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(ZEN_MODE_KEY)
.build();
}

View File

@@ -44,11 +44,8 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settings.flashlight.FlashlightSliceBuilder; import com.android.settings.flashlight.FlashlightSliceBuilder;
import com.android.settings.homepage.contextualcards.deviceinfo.EmergencyInfoSlice; import com.android.settings.homepage.contextualcards.deviceinfo.EmergencyInfoSlice;
import com.android.settings.location.LocationSliceBuilder; import com.android.settings.location.LocationSliceBuilder;
import com.android.settings.network.telephony.Enhanced4gLteSliceHelper;
import com.android.settings.notification.ZenModeSliceBuilder; import com.android.settings.notification.ZenModeSliceBuilder;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.WifiSlice;
import com.android.settings.wifi.calling.WifiCallingSliceHelper;
import com.android.settingslib.SliceBroadcastRelay; import com.android.settingslib.SliceBroadcastRelay;
import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.utils.ThreadUtils;
@@ -175,23 +172,21 @@ public class SettingsSliceProvider extends SliceProvider {
if (filter != null) { if (filter != null) {
registerIntentToUri(filter, sliceUri); registerIntentToUri(filter, sliceUri);
} }
ThreadUtils.postOnMainThread(() -> { ThreadUtils.postOnMainThread(() -> startBackgroundWorker(sliceable));
startBackgroundWorker(sliceable);
});
return; return;
} }
if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { if (CustomSliceRegistry.ZEN_MODE_SLICE_URI.equals(sliceUri)) {
registerIntentToUri(ZenModeSliceBuilder.INTENT_FILTER, sliceUri); registerIntentToUri(ZenModeSliceBuilder.INTENT_FILTER, sliceUri);
return; return;
} else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.BLUETOOTH_URI.equals(sliceUri)) {
registerIntentToUri(BluetoothSliceBuilder.INTENT_FILTER, sliceUri); registerIntentToUri(BluetoothSliceBuilder.INTENT_FILTER, sliceUri);
return; return;
} else if (FlashlightSliceBuilder.FLASHLIGHT_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.FLASHLIGHT_SLICE_URI.equals(sliceUri)) {
registerIntentToUri(FlashlightSliceBuilder.INTENT_FILTER, sliceUri); registerIntentToUri(FlashlightSliceBuilder.INTENT_FILTER, sliceUri);
mRegisteredUris.add(sliceUri); mRegisteredUris.add(sliceUri);
return; return;
} else if (EmergencyInfoSlice.EMERGENCY_INFO_CARD_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.EMERGENCY_INFO_SLICE_URI.equals(sliceUri)) {
return; return;
} }
@@ -236,30 +231,30 @@ public class SettingsSliceProvider extends SliceProvider {
return sliceable.getSlice(); return sliceable.getSlice();
} }
if (WifiCallingSliceHelper.WIFI_CALLING_URI.equals(sliceUri)) { if (CustomSliceRegistry.WIFI_CALLING_URI.equals(sliceUri)) {
return FeatureFactory.getFactory(getContext()) return FeatureFactory.getFactory(getContext())
.getSlicesFeatureProvider() .getSlicesFeatureProvider()
.getNewWifiCallingSliceHelper(getContext()) .getNewWifiCallingSliceHelper(getContext())
.createWifiCallingSlice(sliceUri); .createWifiCallingSlice(sliceUri);
} else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.ZEN_MODE_SLICE_URI.equals(sliceUri)) {
return ZenModeSliceBuilder.getSlice(getContext()); return ZenModeSliceBuilder.getSlice(getContext());
} else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.BLUETOOTH_URI.equals(sliceUri)) {
return BluetoothSliceBuilder.getSlice(getContext()); return BluetoothSliceBuilder.getSlice(getContext());
} else if (LocationSliceBuilder.LOCATION_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.LOCATION_SLICE_URI.equals(sliceUri)) {
return LocationSliceBuilder.getSlice(getContext()); return LocationSliceBuilder.getSlice(getContext());
} else if (Enhanced4gLteSliceHelper.SLICE_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.ENHANCED_4G_SLICE_URI.equals(sliceUri)) {
return FeatureFactory.getFactory(getContext()) return FeatureFactory.getFactory(getContext())
.getSlicesFeatureProvider() .getSlicesFeatureProvider()
.getNewEnhanced4gLteSliceHelper(getContext()) .getNewEnhanced4gLteSliceHelper(getContext())
.createEnhanced4gLteSlice(sliceUri); .createEnhanced4gLteSlice(sliceUri);
} else if (WifiCallingSliceHelper.WIFI_CALLING_PREFERENCE_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.WIFI_CALLING_PREFERENCE_URI.equals(sliceUri)) {
return FeatureFactory.getFactory(getContext()) return FeatureFactory.getFactory(getContext())
.getSlicesFeatureProvider() .getSlicesFeatureProvider()
.getNewWifiCallingSliceHelper(getContext()) .getNewWifiCallingSliceHelper(getContext())
.createWifiCallingPreferenceSlice(sliceUri); .createWifiCallingPreferenceSlice(sliceUri);
} else if (FlashlightSliceBuilder.FLASHLIGHT_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.FLASHLIGHT_SLICE_URI.equals(sliceUri)) {
return FlashlightSliceBuilder.getSlice(getContext()); return FlashlightSliceBuilder.getSlice(getContext());
} else if (EmergencyInfoSlice.EMERGENCY_INFO_CARD_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.EMERGENCY_INFO_SLICE_URI.equals(sliceUri)) {
return EmergencyInfoSlice.getSlice(getContext()); return EmergencyInfoSlice.getSlice(getContext());
} }
@@ -476,16 +471,16 @@ public class SettingsSliceProvider extends SliceProvider {
private List<Uri> getSpecialCasePlatformUris() { private List<Uri> getSpecialCasePlatformUris() {
return Arrays.asList( return Arrays.asList(
WifiSlice.WIFI_URI, CustomSliceRegistry.WIFI_SLICE_URI,
BluetoothSliceBuilder.BLUETOOTH_URI, CustomSliceRegistry.BLUETOOTH_URI,
LocationSliceBuilder.LOCATION_URI CustomSliceRegistry.LOCATION_SLICE_URI
); );
} }
private List<Uri> getSpecialCaseOemUris() { private List<Uri> getSpecialCaseOemUris() {
return Arrays.asList( return Arrays.asList(
ZenModeSliceBuilder.ZEN_MODE_URI, CustomSliceRegistry.ZEN_MODE_SLICE_URI,
FlashlightSliceBuilder.FLASHLIGHT_URI CustomSliceRegistry.FLASHLIGHT_SLICE_URI
); );
} }

View File

@@ -62,11 +62,11 @@ public class SliceDeepLinkSpringBoard extends Activity {
final CustomSliceable sliceable = final CustomSliceable sliceable =
customSliceManager.getSliceableFromUri(sliceUri); customSliceManager.getSliceableFromUri(sliceUri);
launchIntent = sliceable.getIntent(); launchIntent = sliceable.getIntent();
} else if (ZenModeSliceBuilder.ZEN_MODE_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.ZEN_MODE_SLICE_URI.equals(sliceUri)) {
launchIntent = ZenModeSliceBuilder.getIntent(this /* context */); launchIntent = ZenModeSliceBuilder.getIntent(this /* context */);
} else if (BluetoothSliceBuilder.BLUETOOTH_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.BLUETOOTH_URI.equals(sliceUri)) {
launchIntent = BluetoothSliceBuilder.getIntent(this /* context */); launchIntent = BluetoothSliceBuilder.getIntent(this /* context */);
} else if (LocationSliceBuilder.LOCATION_URI.equals(sliceUri)) { } else if (CustomSliceRegistry.LOCATION_SLICE_URI.equals(sliceUri)) {
launchIntent = LocationSliceBuilder.getIntent(this /* context */); launchIntent = LocationSliceBuilder.getIntent(this /* context */);
} else { } else {
final SlicesDatabaseAccessor slicesDatabaseAccessor = final SlicesDatabaseAccessor slicesDatabaseAccessor =

View File

@@ -19,9 +19,10 @@ package com.android.settings.wifi;
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
import static android.provider.SettingsSlicesContract.KEY_WIFI; import static android.provider.SettingsSlicesContract.KEY_WIFI;
import static com.android.settings.slices.CustomSliceRegistry.WIFI_SLICE_URI;
import android.annotation.ColorInt; import android.annotation.ColorInt;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
@@ -30,7 +31,6 @@ import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.net.wifi.WifiSsid; import android.net.wifi.WifiSsid;
import android.os.Bundle; import android.os.Bundle;
import android.provider.SettingsSlicesContract;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
@@ -60,16 +60,6 @@ import java.util.List;
*/ */
public class WifiSlice implements CustomSliceable { public class WifiSlice implements CustomSliceable {
/**
* Backing Uri for the Wifi Slice.
*/
public static final Uri WIFI_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSlicesContract.AUTHORITY)
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(KEY_WIFI)
.build();
@VisibleForTesting @VisibleForTesting
static final int DEFAULT_EXPANDED_ROW_COUNT = 3; static final int DEFAULT_EXPANDED_ROW_COUNT = 3;
@@ -81,7 +71,7 @@ public class WifiSlice implements CustomSliceable {
@Override @Override
public Uri getUri() { public Uri getUri() {
return WIFI_URI; return WIFI_SLICE_URI;
} }
@Override @Override
@@ -92,9 +82,6 @@ public class WifiSlice implements CustomSliceable {
return filter; return filter;
} }
/**
* Return a Wifi Slice bound to {@link #WIFI_URI}.
*/
@Override @Override
public Slice getSlice() { public Slice getSlice() {
final boolean isWifiEnabled = isWifiEnabled(); final boolean isWifiEnabled = isWifiEnabled();
@@ -109,7 +96,8 @@ public class WifiSlice implements CustomSliceable {
final SliceAction toggleSliceAction = new SliceAction(toggleAction, null /* actionTitle */, final SliceAction toggleSliceAction = new SliceAction(toggleAction, null /* actionTitle */,
isWifiEnabled); isWifiEnabled);
final ListBuilder listBuilder = new ListBuilder(mContext, WIFI_URI, ListBuilder.INFINITY) final ListBuilder listBuilder = new ListBuilder(mContext, WIFI_SLICE_URI,
ListBuilder.INFINITY)
.setAccentColor(color) .setAccentColor(color)
.addRow(new RowBuilder() .addRow(new RowBuilder()
.setTitle(title) .setTitle(title)

View File

@@ -18,9 +18,11 @@ package com.android.settings.wifi.calling;
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
import static com.android.settings.slices.CustomSliceRegistry.WIFI_CALLING_PREFERENCE_URI;
import static com.android.settings.slices.CustomSliceRegistry.WIFI_CALLING_URI;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@@ -42,9 +44,7 @@ import com.android.ims.ImsConfig;
import com.android.ims.ImsManager; import com.android.ims.ImsManager;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver;
import com.android.settings.slices.SliceBuilderUtils;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
@@ -103,24 +103,6 @@ public class WifiCallingSliceHelper {
public static final String ACTION_WIFI_CALLING_SETTINGS_ACTIVITY = public static final String ACTION_WIFI_CALLING_SETTINGS_ACTIVITY =
"android.settings.WIFI_CALLING_SETTINGS"; "android.settings.WIFI_CALLING_SETTINGS";
/**
* Full {@link Uri} for the Wifi Calling Slice.
*/
public static final Uri WIFI_CALLING_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_WIFI_CALLING)
.build();
/**
* Full {@link Uri} for the Wifi Calling Preference Slice.
*/
public static final Uri WIFI_CALLING_PREFERENCE_URI = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsSliceProvider.SLICE_AUTHORITY)
.appendPath(PATH_WIFI_CALLING_PREFERENCE)
.build();
/** /**
* Timeout for querying wifi calling setting from ims manager. * Timeout for querying wifi calling setting from ims manager.
*/ */
@@ -246,7 +228,7 @@ public class WifiCallingSliceHelper {
} }
final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled( final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled(
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId,false); CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId, false);
final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled( final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true); CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
final ImsManager imsManager = getImsManager(subId); final ImsManager imsManager = getImsManager(subId);
@@ -287,8 +269,8 @@ public class WifiCallingSliceHelper {
* Returns actionable wifi calling preference slice. * Returns actionable wifi calling preference slice.
* *
* @param isWifiOnlySupported adds row for wifi only if this is true * @param isWifiOnlySupported adds row for wifi only if this is true
* @param currentWfcPref current Preference {@link ImsConfig} * @param currentWfcPref current Preference {@link ImsConfig}
* @param sliceUri sliceUri * @param sliceUri sliceUri
* @return Slice for actionable wifi calling preference settings * @return Slice for actionable wifi calling preference settings
*/ */
private Slice getWifiCallingPreferenceSlice(boolean isWifiOnlySupported, private Slice getWifiCallingPreferenceSlice(boolean isWifiOnlySupported,
@@ -299,12 +281,12 @@ public class WifiCallingSliceHelper {
ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY) ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
.setAccentColor(Utils.getColorAccentDefaultColor(mContext)); .setAccentColor(Utils.getColorAccentDefaultColor(mContext));
listBuilder.setHeader(new ListBuilder.HeaderBuilder() listBuilder.setHeader(new ListBuilder.HeaderBuilder()
.setTitle(mContext.getText(R.string.wifi_calling_mode_title)) .setTitle(mContext.getText(R.string.wifi_calling_mode_title))
.setSubtitle(getWifiCallingPreferenceSummary(currentWfcPref)) .setSubtitle(getWifiCallingPreferenceSummary(currentWfcPref))
.setPrimaryAction(new SliceAction( .setPrimaryAction(new SliceAction(
getActivityIntent(ACTION_WIFI_CALLING_SETTINGS_ACTIVITY), getActivityIntent(ACTION_WIFI_CALLING_SETTINGS_ACTIVITY),
icon, icon,
mContext.getText(R.string.wifi_calling_mode_title)))); mContext.getText(R.string.wifi_calling_mode_title))));
if (isWifiOnlySupported) { if (isWifiOnlySupported) {
listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder, listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
@@ -329,9 +311,9 @@ public class WifiCallingSliceHelper {
/** /**
* Returns RowBuilder for a new row containing specific wifi calling preference. * Returns RowBuilder for a new row containing specific wifi calling preference.
* *
* @param listBuilder ListBuilder that will be the parent for this RowBuilder * @param listBuilder ListBuilder that will be the parent for this RowBuilder
* @param preferenceTitleResId resource Id for the preference row title * @param preferenceTitleResId resource Id for the preference row title
* @param action action to be added for the row * @param action action to be added for the row
* @return RowBuilder for the row * @return RowBuilder for the row
*/ */
private RowBuilder wifiPreferenceRowBuilder(ListBuilder listBuilder, private RowBuilder wifiPreferenceRowBuilder(ListBuilder listBuilder,
@@ -414,8 +396,7 @@ public class WifiCallingSliceHelper {
} }
// notify change in slice in any case to get re-queried. This would result in displaying // notify change in slice in any case to get re-queried. This would result in displaying
// appropriate message with the updated setting. // appropriate message with the updated setting.
final Uri uri = SliceBuilderUtils.getUri(PATH_WIFI_CALLING, false /*isPlatformSlice*/); mContext.getContentResolver().notifyChange(WIFI_CALLING_URI, null);
mContext.getContentResolver().notifyChange(uri, null);
} }
/** /**
@@ -433,7 +414,7 @@ public class WifiCallingSliceHelper {
if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (subId > SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled( final boolean isWifiCallingPrefEditable = isCarrierConfigManagerKeyEnabled(
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId,false); CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL, subId, false);
final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled( final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true); CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
@@ -470,15 +451,13 @@ public class WifiCallingSliceHelper {
// notify change in slice in any case to get re-queried. This would result in displaying // notify change in slice in any case to get re-queried. This would result in displaying
// appropriate message. // appropriate message.
final Uri uri = SliceBuilderUtils.getUri(PATH_WIFI_CALLING_PREFERENCE, mContext.getContentResolver().notifyChange(WIFI_CALLING_PREFERENCE_URI, null);
false /*isPlatformSlice*/);
mContext.getContentResolver().notifyChange(uri, null);
} }
/** /**
* Returns Slice with the title and subtitle provided as arguments with wifi signal Icon. * Returns Slice with the title and subtitle provided as arguments with wifi signal Icon.
* *
* @param title Title of the slice * @param title Title of the slice
* @param subtitle Subtitle of the slice * @param subtitle Subtitle of the slice
* @param sliceUri slice uri * @param sliceUri slice uri
* @return Slice with title and subtitle * @return Slice with title and subtitle

View File

@@ -51,7 +51,6 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowPowerManager;
import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.instantapps.InstantAppDataProvider; import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
@@ -93,6 +92,8 @@ public class RecentAppsPreferenceControllerTest {
private ApplicationsState.AppEntry mAppEntry; private ApplicationsState.AppEntry mAppEntry;
@Mock @Mock
private ApplicationInfo mApplicationInfo; private ApplicationInfo mApplicationInfo;
@Mock
private PowerManager mPowerManager;
private Context mContext; private Context mContext;
private RecentAppsPreferenceController mController; private RecentAppsPreferenceController mController;
@@ -104,6 +105,7 @@ public class RecentAppsPreferenceControllerTest {
doReturn(mUsageStatsManager).when(mContext).getSystemService(Context.USAGE_STATS_SERVICE); doReturn(mUsageStatsManager).when(mContext).getSystemService(Context.USAGE_STATS_SERVICE);
doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE); doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);
doReturn(mPackageManager).when(mContext).getPackageManager(); doReturn(mPackageManager).when(mContext).getPackageManager();
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
mController = new RecentAppsPreferenceController(mContext, mAppState, null); mController = new RecentAppsPreferenceController(mContext, mAppState, null);
when(mScreen.findPreference(anyString())).thenReturn(mCategory); when(mScreen.findPreference(anyString())).thenReturn(mCategory);
@@ -174,15 +176,15 @@ public class RecentAppsPreferenceControllerTest {
// stat1, stat2 are valid apps. stat3 is invalid. // stat1, stat2 are valid apps. stat3 is invalid.
when(mAppState.getEntry(stat1.mPackageName, UserHandle.myUserId())) when(mAppState.getEntry(stat1.mPackageName, UserHandle.myUserId()))
.thenReturn(mAppEntry); .thenReturn(mAppEntry);
when(mAppState.getEntry(stat2.mPackageName, UserHandle.myUserId())) when(mAppState.getEntry(stat2.mPackageName, UserHandle.myUserId()))
.thenReturn(mAppEntry); .thenReturn(mAppEntry);
when(mAppState.getEntry(stat3.mPackageName, UserHandle.myUserId())) when(mAppState.getEntry(stat3.mPackageName, UserHandle.myUserId()))
.thenReturn(null); .thenReturn(null);
when(mPackageManager.resolveActivity(any(Intent.class), anyInt())) when(mPackageManager.resolveActivity(any(Intent.class), anyInt()))
.thenReturn(new ResolveInfo()); .thenReturn(new ResolveInfo());
when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong())) when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong()))
.thenReturn(stats); .thenReturn(stats);
mAppEntry.info = mApplicationInfo; mAppEntry.info = mApplicationInfo;
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
@@ -199,7 +201,7 @@ public class RecentAppsPreferenceControllerTest {
@Test @Test
public void display_powerSaverMode_showNoRecents() { public void display_powerSaverMode_showNoRecents() {
mContext.getSystemService(PowerManager.class).setPowerSaveMode(true); when(mPowerManager.isPowerSaveMode()).thenReturn(true);
final List<UsageStats> stats = new ArrayList<>(); final List<UsageStats> stats = new ArrayList<>();
final UsageStats stat1 = new UsageStats(); final UsageStats stat1 = new UsageStats();
@@ -251,7 +253,7 @@ public class RecentAppsPreferenceControllerTest {
// Only the regular app stat1 should have its intent resolve. // Only the regular app stat1 should have its intent resolve.
when(mPackageManager.resolveActivity(argThat(intentMatcher(stat1.mPackageName)), anyInt())) when(mPackageManager.resolveActivity(argThat(intentMatcher(stat1.mPackageName)), anyInt()))
.thenReturn(new ResolveInfo()); .thenReturn(new ResolveInfo());
when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong())) when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong()))
.thenReturn(stats); .thenReturn(stats);
@@ -311,13 +313,13 @@ public class RecentAppsPreferenceControllerTest {
// stat1, stat2 are not displayable // stat1, stat2 are not displayable
when(mAppState.getEntry(stat1.mPackageName, UserHandle.myUserId())) when(mAppState.getEntry(stat1.mPackageName, UserHandle.myUserId()))
.thenReturn(mock(ApplicationsState.AppEntry.class)); .thenReturn(mock(ApplicationsState.AppEntry.class));
when(mAppState.getEntry(stat2.mPackageName, UserHandle.myUserId())) when(mAppState.getEntry(stat2.mPackageName, UserHandle.myUserId()))
.thenReturn(mock(ApplicationsState.AppEntry.class)); .thenReturn(mock(ApplicationsState.AppEntry.class));
when(mPackageManager.resolveActivity(any(Intent.class), anyInt())) when(mPackageManager.resolveActivity(any(Intent.class), anyInt()))
.thenReturn(new ResolveInfo()); .thenReturn(new ResolveInfo());
when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong())) when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong()))
.thenReturn(stats); .thenReturn(stats);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
@@ -336,11 +338,11 @@ public class RecentAppsPreferenceControllerTest {
stats.add(stat1); stats.add(stat1);
when(mAppState.getEntry(stat1.mPackageName, UserHandle.myUserId())) when(mAppState.getEntry(stat1.mPackageName, UserHandle.myUserId()))
.thenReturn(mAppEntry); .thenReturn(mAppEntry);
when(mPackageManager.resolveActivity(any(Intent.class), anyInt())) when(mPackageManager.resolveActivity(any(Intent.class), anyInt()))
.thenReturn(new ResolveInfo()); .thenReturn(new ResolveInfo());
when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong())) when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong()))
.thenReturn(stats); .thenReturn(stats);
mAppEntry.info = mApplicationInfo; mAppEntry.info = mApplicationInfo;
mController.displayPreference(mScreen); mController.displayPreference(mScreen);

View File

@@ -21,6 +21,8 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.os.PowerManager; import android.os.PowerManager;
@@ -37,21 +39,19 @@ import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowPowerManager;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = ShadowPowerManager.class)
public class BatterySaverButtonPreferenceControllerTest { public class BatterySaverButtonPreferenceControllerTest {
private BatterySaverButtonPreferenceController mController; private BatterySaverButtonPreferenceController mController;
private Context mContext; private Context mContext;
private Button mButtonOn; private Button mButtonOn;
private Button mButtonOff; private Button mButtonOff;
private PowerManager mPowerManager;
private TwoStateButtonPreference mPreference; private TwoStateButtonPreference mPreference;
@Mock
private PowerManager mPowerManager;
@Mock @Mock
private PreferenceScreen mPreferenceScreen; private PreferenceScreen mPreferenceScreen;
@@ -61,10 +61,11 @@ public class BatterySaverButtonPreferenceControllerTest {
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
mButtonOn = new Button(mContext); mButtonOn = new Button(mContext);
mButtonOff = new Button(mContext); mButtonOff = new Button(mContext);
mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mPreference = spy(new TwoStateButtonPreference(mContext, null /* AttributeSet */)); mPreference = spy(new TwoStateButtonPreference(mContext, null /* AttributeSet */));
ReflectionHelpers.setField(mPreference, "mButtonOn", mButtonOn); ReflectionHelpers.setField(mPreference, "mButtonOn", mButtonOn);
ReflectionHelpers.setField(mPreference, "mButtonOff", mButtonOff); ReflectionHelpers.setField(mPreference, "mButtonOff", mButtonOff);
doReturn(mPowerManager).when(mContext).getSystemService(Context.POWER_SERVICE);
doReturn(mPreference).when(mPreferenceScreen).findPreference(anyString()); doReturn(mPreference).when(mPreferenceScreen).findPreference(anyString());
mController = new BatterySaverButtonPreferenceController(mContext, "test_key"); mController = new BatterySaverButtonPreferenceController(mContext, "test_key");
@@ -73,7 +74,7 @@ public class BatterySaverButtonPreferenceControllerTest {
@Test @Test
public void updateState_lowPowerOn_preferenceIsChecked() { public void updateState_lowPowerOn_preferenceIsChecked() {
mPowerManager.setPowerSaveMode(true); when(mPowerManager.isPowerSaveMode()).thenReturn(true);
mController.updateState(mPreference); mController.updateState(mPreference);
@@ -82,7 +83,7 @@ public class BatterySaverButtonPreferenceControllerTest {
@Test @Test
public void testUpdateState_lowPowerOff_preferenceIsUnchecked() { public void testUpdateState_lowPowerOff_preferenceIsUnchecked() {
mPowerManager.setPowerSaveMode(false); when(mPowerManager.isPowerSaveMode()).thenReturn(false);
mController.updateState(mPreference); mController.updateState(mPreference);
@@ -93,13 +94,13 @@ public class BatterySaverButtonPreferenceControllerTest {
public void setChecked_on_setPowerSaveMode() { public void setChecked_on_setPowerSaveMode() {
mController.setChecked(true); mController.setChecked(true);
assertThat(mPowerManager.isPowerSaveMode()).isTrue(); verify(mPowerManager).setPowerSaveMode(true);
} }
@Test @Test
public void setChecked_off_unsetPowerSaveMode() { public void setChecked_off_unsetPowerSaveMode() {
mController.setChecked(false); mController.setChecked(false);
assertThat(mPowerManager.isPowerSaveMode()).isFalse(); verify(mPowerManager).setPowerSaveMode(false);
} }
} }

View File

@@ -27,11 +27,9 @@ import static org.mockito.Mockito.spy;
import android.content.Context; import android.content.Context;
import android.net.Uri; import android.net.Uri;
import com.android.settings.homepage.contextualcards.deviceinfo.BatterySlice; import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.homepage.contextualcards.slices.ConnectedDeviceSlice;
import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wifi.WifiSlice;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -153,7 +151,7 @@ public class ContextualCardLoaderTest {
cards.add(new ContextualCard.Builder() cards.add(new ContextualCard.Builder()
.setName("test_wifi") .setName("test_wifi")
.setCardType(ContextualCard.CardType.SLICE) .setCardType(ContextualCard.CardType.SLICE)
.setSliceUri(WifiSlice.WIFI_URI) .setSliceUri(CustomSliceRegistry.WIFI_SLICE_URI)
.build()); .build());
cards.add(new ContextualCard.Builder() cards.add(new ContextualCard.Builder()
.setName("test_flashlight") .setName("test_flashlight")
@@ -164,7 +162,7 @@ public class ContextualCardLoaderTest {
cards.add(new ContextualCard.Builder() cards.add(new ContextualCard.Builder()
.setName("test_connected") .setName("test_connected")
.setCardType(ContextualCard.CardType.SLICE) .setCardType(ContextualCard.CardType.SLICE)
.setSliceUri(ConnectedDeviceSlice.CONNECTED_DEVICE_URI) .setSliceUri(CustomSliceRegistry.CONNECTED_DEVICE_SLICE_URI)
.build()); .build());
cards.add(new ContextualCard.Builder() cards.add(new ContextualCard.Builder()
.setName("test_gesture") .setName("test_gesture")
@@ -175,7 +173,7 @@ public class ContextualCardLoaderTest {
cards.add(new ContextualCard.Builder() cards.add(new ContextualCard.Builder()
.setName("test_battery") .setName("test_battery")
.setCardType(ContextualCard.CardType.SLICE) .setCardType(ContextualCard.CardType.SLICE)
.setSliceUri(BatterySlice.BATTERY_CARD_URI) .setSliceUri(CustomSliceRegistry.BATTERY_INFO_SLICE_URI)
.build()); .build());
return cards; return cards;
} }
@@ -208,7 +206,7 @@ public class ContextualCardLoaderTest {
cards.add(new ContextualCard.Builder() cards.add(new ContextualCard.Builder()
.setName("test_battery") .setName("test_battery")
.setCardType(ContextualCard.CardType.SLICE) .setCardType(ContextualCard.CardType.SLICE)
.setSliceUri(BatterySlice.BATTERY_CARD_URI) .setSliceUri(CustomSliceRegistry.BATTERY_INFO_SLICE_URI)
.build()); .build());
return cards; return cards;
} }

View File

@@ -23,15 +23,13 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import android.app.slice.SliceManager; import android.app.slice.SliceManager;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import com.android.settings.intelligence.ContextualCardProto.ContextualCard; import com.android.settings.intelligence.ContextualCardProto.ContextualCard;
import com.android.settings.intelligence.ContextualCardProto.ContextualCardList; import com.android.settings.intelligence.ContextualCardProto.ContextualCardList;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wifi.WifiSlice;
import com.google.android.settings.intelligence.libs.contextualcards.ContextualCardProvider; import com.google.android.settings.intelligence.libs.contextualcards.ContextualCardProvider;
@@ -48,18 +46,11 @@ public class SettingsContextualCardProviderTest {
@Mock @Mock
private SliceManager mSliceManager; private SliceManager mSliceManager;
private ContentResolver mResolver;
private Uri mUri;
private SettingsContextualCardProvider mProvider; private SettingsContextualCardProvider mProvider;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mResolver = RuntimeEnvironment.application.getContentResolver();
mUri = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(SettingsContextualCardProvider.CARD_AUTHORITY)
.build();
mProvider = spy(Robolectric.setupContentProvider(SettingsContextualCardProvider.class)); mProvider = spy(Robolectric.setupContentProvider(SettingsContextualCardProvider.class));
final Context context = spy(RuntimeEnvironment.application); final Context context = spy(RuntimeEnvironment.application);
doReturn(mSliceManager).when(context).getSystemService(SliceManager.class); doReturn(mSliceManager).when(context).getSystemService(SliceManager.class);
@@ -83,7 +74,7 @@ public class SettingsContextualCardProviderTest {
final ContextualCardList cards = mProvider.getContextualCards(); final ContextualCardList cards = mProvider.getContextualCards();
ContextualCard wifiCard = null; ContextualCard wifiCard = null;
for (ContextualCard card : cards.getCardList()) { for (ContextualCard card : cards.getCardList()) {
if (card.getSliceUri().equals(WifiSlice.WIFI_URI.toString())) { if (card.getSliceUri().equals(CustomSliceRegistry.WIFI_SLICE_URI.toString())) {
wifiCard = card; wifiCard = card;
} }
} }

View File

@@ -44,6 +44,7 @@ import androidx.slice.widget.SliceLiveData;
import com.android.ims.ImsManager; import com.android.ims.ImsManager;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.slices.CustomSliceManager; import com.android.settings.slices.CustomSliceManager;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver;
import com.android.settings.slices.SlicesFeatureProvider; import com.android.settings.slices.SlicesFeatureProvider;
@@ -107,7 +108,7 @@ public class Enhanced4gLteSliceHelperTest {
mEnhanced4gLteSliceHelper.setDefaultVoiceSubId(-1); mEnhanced4gLteSliceHelper.setDefaultVoiceSubId(-1);
final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice( final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice(
Enhanced4gLteSliceHelper.SLICE_URI); CustomSliceRegistry.ENHANCED_4G_SLICE_URI);
assertThat(slice).isNull(); assertThat(slice).isNull();
} }
@@ -117,7 +118,7 @@ public class Enhanced4gLteSliceHelperTest {
when(mMockImsManager.isVolteEnabledByPlatform()).thenReturn(false); when(mMockImsManager.isVolteEnabledByPlatform()).thenReturn(false);
final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice( final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice(
Enhanced4gLteSliceHelper.SLICE_URI); CustomSliceRegistry.ENHANCED_4G_SLICE_URI);
assertThat(mEnhanced4gLteSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mEnhanced4gLteSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
assertThat(slice).isNull(); assertThat(slice).isNull();
@@ -132,7 +133,7 @@ public class Enhanced4gLteSliceHelperTest {
when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null);
final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice( final Slice slice = mEnhanced4gLteSliceHelper.createEnhanced4gLteSlice(
Enhanced4gLteSliceHelper.SLICE_URI); CustomSliceRegistry.ENHANCED_4G_SLICE_URI);
assertThat(mEnhanced4gLteSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mEnhanced4gLteSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
testEnhanced4gLteSettingsToggleSlice(slice); testEnhanced4gLteSettingsToggleSlice(slice);
@@ -148,7 +149,7 @@ public class Enhanced4gLteSliceHelperTest {
when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext)) when(mSlicesFeatureProvider.getNewEnhanced4gLteSliceHelper(mContext))
.thenReturn(mEnhanced4gLteSliceHelper); .thenReturn(mEnhanced4gLteSliceHelper);
final Slice slice = mProvider.onBindSlice(Enhanced4gLteSliceHelper.SLICE_URI); final Slice slice = mProvider.onBindSlice(CustomSliceRegistry.ENHANCED_4G_SLICE_URI);
assertThat(mEnhanced4gLteSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mEnhanced4gLteSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
testEnhanced4gLteSettingsToggleSlice(slice); testEnhanced4gLteSettingsToggleSlice(slice);

View File

@@ -21,8 +21,8 @@ import static com.google.common.truth.Truth.assertThat;
import android.net.Uri; import android.net.Uri;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wifi.WifiSlice;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -46,7 +46,7 @@ public class InternetConnectivityPanelTest {
public void getSlices_containsNecessarySlices() { public void getSlices_containsNecessarySlices() {
final List<Uri> uris = mPanel.getSlices(); final List<Uri> uris = mPanel.getSlices();
assertThat(uris).containsExactly(WifiSlice.WIFI_URI, assertThat(uris).containsExactly(CustomSliceRegistry.WIFI_SLICE_URI,
InternetConnectivityPanel.AIRPLANE_URI); CustomSliceRegistry.AIRPLANE_URI);
} }
} }

View File

@@ -48,10 +48,6 @@ import androidx.slice.SliceProvider;
import androidx.slice.widget.SliceLiveData; import androidx.slice.widget.SliceLiveData;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.bluetooth.BluetoothSliceBuilder;
import com.android.settings.flashlight.FlashlightSliceBuilder;
import com.android.settings.location.LocationSliceBuilder;
import com.android.settings.notification.ZenModeSliceBuilder;
import com.android.settings.testutils.DatabaseTestUtils; import com.android.settings.testutils.DatabaseTestUtils;
import com.android.settings.testutils.FakeToggleController; import com.android.settings.testutils.FakeToggleController;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -113,14 +109,14 @@ public class SettingsSliceProviderTest {
private SliceManager mManager; private SliceManager mManager;
private static final List<Uri> SPECIAL_CASE_PLATFORM_URIS = Arrays.asList( private static final List<Uri> SPECIAL_CASE_PLATFORM_URIS = Arrays.asList(
WifiSlice.WIFI_URI, CustomSliceRegistry.WIFI_SLICE_URI,
BluetoothSliceBuilder.BLUETOOTH_URI, CustomSliceRegistry.BLUETOOTH_URI,
LocationSliceBuilder.LOCATION_URI CustomSliceRegistry.LOCATION_SLICE_URI
); );
private static final List<Uri> SPECIAL_CASE_OEM_URIS = Arrays.asList( private static final List<Uri> SPECIAL_CASE_OEM_URIS = Arrays.asList(
ZenModeSliceBuilder.ZEN_MODE_URI, CustomSliceRegistry.ZEN_MODE_SLICE_URI,
FlashlightSliceBuilder.FLASHLIGHT_URI CustomSliceRegistry.FLASHLIGHT_SLICE_URI
); );
@Before @Before
@@ -472,9 +468,9 @@ public class SettingsSliceProviderTest {
@Test @Test
public void bindSlice_wifiSlice_returnsWifiSlice() { public void bindSlice_wifiSlice_returnsWifiSlice() {
final Slice wifiSlice = mProvider.onBindSlice(WifiSlice.WIFI_URI); final Slice wifiSlice = mProvider.onBindSlice(CustomSliceRegistry.WIFI_SLICE_URI);
assertThat(wifiSlice.getUri()).isEqualTo(WifiSlice.WIFI_URI); assertThat(wifiSlice.getUri()).isEqualTo(CustomSliceRegistry.WIFI_SLICE_URI);
} }
@Test @Test
@@ -482,9 +478,10 @@ public class SettingsSliceProviderTest {
Settings.Secure.putInt( Settings.Secure.putInt(
mContext.getContentResolver(), Settings.Secure.FLASHLIGHT_AVAILABLE, 1); mContext.getContentResolver(), Settings.Secure.FLASHLIGHT_AVAILABLE, 1);
final Slice flashlightSlice = mProvider.onBindSlice(FlashlightSliceBuilder.FLASHLIGHT_URI); final Slice flashlightSlice = mProvider.onBindSlice(
CustomSliceRegistry.FLASHLIGHT_SLICE_URI);
assertThat(flashlightSlice.getUri()).isEqualTo(FlashlightSliceBuilder.FLASHLIGHT_URI); assertThat(flashlightSlice.getUri()).isEqualTo(CustomSliceRegistry.FLASHLIGHT_SLICE_URI);
} }
@Test @Test
@@ -526,22 +523,22 @@ public class SettingsSliceProviderTest {
@Test @Test
public void onSlicePinned_backgroundWorker_started() { public void onSlicePinned_backgroundWorker_started() {
mProvider.onSlicePinned(WifiSlice.WIFI_URI); mProvider.onSlicePinned(CustomSliceRegistry.WIFI_SLICE_URI);
verify(ShadowWifiScanWorker.getWifiTracker()).onStart(); verify(ShadowWifiScanWorker.getWifiTracker()).onStart();
} }
@Test @Test
public void onSlicePinned_backgroundWorker_stopped() { public void onSlicePinned_backgroundWorker_stopped() {
mProvider.onSlicePinned(WifiSlice.WIFI_URI); mProvider.onSlicePinned(CustomSliceRegistry.WIFI_SLICE_URI);
mProvider.onSliceUnpinned(WifiSlice.WIFI_URI); mProvider.onSliceUnpinned(CustomSliceRegistry.WIFI_SLICE_URI);
verify(ShadowWifiScanWorker.getWifiTracker()).onStop(); verify(ShadowWifiScanWorker.getWifiTracker()).onStop();
} }
@Test @Test
public void shutdown_backgroundWorker_closed() { public void shutdown_backgroundWorker_closed() {
mProvider.onSlicePinned(WifiSlice.WIFI_URI); mProvider.onSlicePinned(CustomSliceRegistry.WIFI_SLICE_URI);
mProvider.shutdown(); mProvider.shutdown();
verify(ShadowWifiScanWorker.getWifiTracker()).onDestroy(); verify(ShadowWifiScanWorker.getWifiTracker()).onDestroy();

View File

@@ -49,6 +49,7 @@ import com.android.ims.ImsConfig;
import com.android.ims.ImsManager; import com.android.ims.ImsManager;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.slices.CustomSliceManager; import com.android.settings.slices.CustomSliceManager;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.slices.SettingsSliceProvider;
import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBroadcastReceiver;
import com.android.settings.slices.SliceData; import com.android.settings.slices.SliceData;
@@ -113,7 +114,7 @@ public class WifiCallingSliceHelperTest {
mWfcSliceHelper.setDefaultVoiceSubId(-1); mWfcSliceHelper.setDefaultVoiceSubId(-1);
final Slice slice = mWfcSliceHelper.createWifiCallingSlice( final Slice slice = mWfcSliceHelper.createWifiCallingSlice(
WifiCallingSliceHelper.WIFI_CALLING_URI); CustomSliceRegistry.WIFI_CALLING_URI);
assertThat(slice).isNull(); assertThat(slice).isNull();
} }
@@ -123,7 +124,7 @@ public class WifiCallingSliceHelperTest {
when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(false); when(mMockImsManager.isWfcEnabledByPlatform()).thenReturn(false);
final Slice slice = mWfcSliceHelper.createWifiCallingSlice( final Slice slice = mWfcSliceHelper.createWifiCallingSlice(
WifiCallingSliceHelper.WIFI_CALLING_URI); CustomSliceRegistry.WIFI_CALLING_URI);
assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
assertThat(slice).isNull(); assertThat(slice).isNull();
@@ -144,7 +145,7 @@ public class WifiCallingSliceHelperTest {
mWfcSliceHelper.setActivationAppIntent(new Intent()); // dummy Intent mWfcSliceHelper.setActivationAppIntent(new Intent()); // dummy Intent
final Slice slice = mWfcSliceHelper.createWifiCallingSlice( final Slice slice = mWfcSliceHelper.createWifiCallingSlice(
WifiCallingSliceHelper.WIFI_CALLING_URI); CustomSliceRegistry.WIFI_CALLING_URI);
assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
testWifiCallingSettingsUnavailableSlice(slice, null, testWifiCallingSettingsUnavailableSlice(slice, null,
@@ -161,7 +162,7 @@ public class WifiCallingSliceHelperTest {
when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null); when(mMockCarrierConfigManager.getConfigForSubId(1)).thenReturn(null);
final Slice slice = mWfcSliceHelper.createWifiCallingSlice( final Slice slice = mWfcSliceHelper.createWifiCallingSlice(
WifiCallingSliceHelper.WIFI_CALLING_URI); CustomSliceRegistry.WIFI_CALLING_URI);
assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
testWifiCallingSettingsToggleSlice(slice, null); testWifiCallingSettingsToggleSlice(slice, null);
@@ -177,7 +178,7 @@ public class WifiCallingSliceHelperTest {
when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext)) when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext))
.thenReturn(mWfcSliceHelper); .thenReturn(mWfcSliceHelper);
final Slice slice = mProvider.onBindSlice(WifiCallingSliceHelper.WIFI_CALLING_URI); final Slice slice = mProvider.onBindSlice(CustomSliceRegistry.WIFI_CALLING_URI);
assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
testWifiCallingSettingsToggleSlice(slice, null); testWifiCallingSettingsToggleSlice(slice, null);
@@ -217,7 +218,7 @@ public class WifiCallingSliceHelperTest {
mWfcSliceHelper.setIsWifiCallingPrefEditable(false); mWfcSliceHelper.setIsWifiCallingPrefEditable(false);
final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice( final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice(
WifiCallingSliceHelper.WIFI_CALLING_PREFERENCE_URI); CustomSliceRegistry.WIFI_CALLING_PREFERENCE_URI);
assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
assertThat(slice).isNull(); assertThat(slice).isNull();
@@ -232,7 +233,7 @@ public class WifiCallingSliceHelperTest {
mWfcSliceHelper.setIsWifiCallingPrefEditable(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice( final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice(
WifiCallingSliceHelper.WIFI_CALLING_PREFERENCE_URI); CustomSliceRegistry.WIFI_CALLING_PREFERENCE_URI);
assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
testWifiCallingSettingsUnavailableSlice(slice, null, testWifiCallingSettingsUnavailableSlice(slice, null,
@@ -251,7 +252,7 @@ public class WifiCallingSliceHelperTest {
mWfcSliceHelper.setIsWifiCallingPrefEditable(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice( final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice(
WifiCallingSliceHelper.WIFI_CALLING_PREFERENCE_URI); CustomSliceRegistry.WIFI_CALLING_PREFERENCE_URI);
assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
testWifiCallingPreferenceSlice(slice, null, testWifiCallingPreferenceSlice(slice, null,
@@ -271,7 +272,7 @@ public class WifiCallingSliceHelperTest {
mWfcSliceHelper.setIsWifiCallingPrefEditable(true); mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
final Slice slice = mProvider.onBindSlice( final Slice slice = mProvider.onBindSlice(
WifiCallingSliceHelper.WIFI_CALLING_PREFERENCE_URI); CustomSliceRegistry.WIFI_CALLING_PREFERENCE_URI);
assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1); assertThat(mWfcSliceHelper.getDefaultVoiceSubId()).isEqualTo(1);
testWifiCallingPreferenceSlice(slice, null, testWifiCallingPreferenceSlice(slice, null,

View File

@@ -26,11 +26,6 @@ import android.support.test.InstrumentationRegistry;
import android.support.test.filters.MediumTest; import android.support.test.filters.MediumTest;
import android.support.test.runner.AndroidJUnit4; import android.support.test.runner.AndroidJUnit4;
import com.android.settings.bluetooth.BluetoothSliceBuilder;
import com.android.settings.location.LocationSliceBuilder;
import com.android.settings.notification.ZenModeSliceBuilder;
import com.android.settings.wifi.WifiSlice;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -57,7 +52,8 @@ public class SliceDeepLinkSpringBoardTest {
@Test @Test
@Presubmit @Presubmit
public void launchesDeepLinkIntent_wifiSlice_shouldNotCrash() { public void launchesDeepLinkIntent_wifiSlice_shouldNotCrash() {
final Intent deepLinkIntent = getSpringboardIntent(WifiSlice.WIFI_URI.toString()); final Intent deepLinkIntent = getSpringboardIntent(
CustomSliceRegistry.WIFI_SLICE_URI.toString());
mContext.startActivity(deepLinkIntent); mContext.startActivity(deepLinkIntent);
} }
@@ -66,7 +62,7 @@ public class SliceDeepLinkSpringBoardTest {
@Presubmit @Presubmit
public void launchesDeepLinkIntent_bluetoothSlice_shouldNotCrash() { public void launchesDeepLinkIntent_bluetoothSlice_shouldNotCrash() {
final Intent deepLinkIntent = getSpringboardIntent( final Intent deepLinkIntent = getSpringboardIntent(
BluetoothSliceBuilder.BLUETOOTH_URI.toString()); CustomSliceRegistry.BLUETOOTH_URI.toString());
mContext.startActivity(deepLinkIntent); mContext.startActivity(deepLinkIntent);
} }
@@ -75,7 +71,7 @@ public class SliceDeepLinkSpringBoardTest {
@Presubmit @Presubmit
public void launchesDeepLinkIntent_dndSlice_shouldNotCrash() { public void launchesDeepLinkIntent_dndSlice_shouldNotCrash() {
final Intent deepLinkIntent = getSpringboardIntent( final Intent deepLinkIntent = getSpringboardIntent(
ZenModeSliceBuilder.ZEN_MODE_URI.toString()); CustomSliceRegistry.ZEN_MODE_SLICE_URI.toString());
mContext.startActivity(deepLinkIntent); mContext.startActivity(deepLinkIntent);
} }
@@ -84,7 +80,7 @@ public class SliceDeepLinkSpringBoardTest {
@Presubmit @Presubmit
public void launchesDeepLinkIntent_locationSlice_shouldNotCrash() { public void launchesDeepLinkIntent_locationSlice_shouldNotCrash() {
final Intent deepLinkIntent = getSpringboardIntent( final Intent deepLinkIntent = getSpringboardIntent(
LocationSliceBuilder.LOCATION_URI.toString()); CustomSliceRegistry.LOCATION_SLICE_URI.toString());
mContext.startActivity(deepLinkIntent); mContext.startActivity(deepLinkIntent);
} }