diff --git a/res/layout/preference_single_target.xml b/res/layout/preference_single_target.xml
new file mode 100644
index 00000000000..b4a9de01636
--- /dev/null
+++ b/res/layout/preference_single_target.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 84100dd7660..f808dfc84e6 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2390,8 +2390,6 @@
AndroidAP WPA2 PSK hotspot
AndroidHotspot
-
- Unavailable because airplane mode is turned on
@@ -5242,8 +5240,8 @@
Tablet used more than usual
Device used more than usual
-
- Battery may run out soon
+
+ Battery may run out earlier than usual
Your phone has been used more than usual. Your battery may run out sooner than expected.\n\nTop %1$d apps you used since full charge:
@@ -10686,6 +10684,9 @@
Volume
+
+ Unavailable during airplane mode
+
Force desktop mode
@@ -10736,8 +10737,8 @@
- - 1 service has full access to your device
- - %1$d services have full access to your device
+ - 1 app has full access to your device
+ - %1$d apps have full access to your device
diff --git a/res/xml/firmware_version.xml b/res/xml/firmware_version.xml
index 2914ef1acf3..75336ce86b0 100644
--- a/res/xml/firmware_version.xml
+++ b/res/xml/firmware_version.xml
@@ -68,6 +68,7 @@
android:title="@string/build_number"
android:summary="@string/summary_placeholder"
settings:enableCopying="true"
+ settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.deviceinfo.firmwareversion.SimpleBuildNumberPreferenceController"/>
\ No newline at end of file
diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml
index 83bf5c45d08..bc498d2205f 100644
--- a/res/xml/my_device_info.xml
+++ b/res/xml/my_device_info.xml
@@ -115,6 +115,7 @@
android:title="@string/status_imei"
settings:keywords="@string/keywords_imei_info"
android:summary="@string/summary_placeholder"
+ settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.deviceinfo.imei.ImeiInfoPreferenceController"/>
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 541ca3a66ad..001e65be8be 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -50,6 +50,8 @@ import androidx.preference.PreferenceManager;
import com.android.internal.util.ArrayUtils;
import com.android.settings.Settings.WifiSettingsActivity;
import com.android.settings.applications.manageapplications.ManageApplications;
+import com.android.settings.backup.BackupSettingsHelper;
+import com.android.settings.backup.UserBackupSettingsActivity;
import com.android.settings.core.OnActivityResultListener;
import com.android.settings.core.SettingsBaseActivity;
import com.android.settings.core.SubSettingLauncher;
@@ -630,6 +632,12 @@ public class SettingsActivity extends SettingsBaseActivity
showDev, isAdmin)
|| somethingChanged;
+ // Enable/disable backup settings depending on whether backup is activated for the user.
+ boolean isBackupActive = new BackupSettingsHelper(this).isBackupServiceActive();
+ somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
+ UserBackupSettingsActivity.class.getName()), isBackupActive, isAdmin)
+ || somethingChanged;
+
somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
Settings.WifiDisplaySettingsActivity.class.getName()),
WifiDisplaySettings.isAvailable(this), isAdmin)
diff --git a/src/com/android/settings/backup/BackupSettingsHelper.java b/src/com/android/settings/backup/BackupSettingsHelper.java
index fa77154081c..b836e55a9cf 100644
--- a/src/com/android/settings/backup/BackupSettingsHelper.java
+++ b/src/com/android/settings/backup/BackupSettingsHelper.java
@@ -209,7 +209,7 @@ public class BackupSettingsHelper {
}
/** Checks if backup service is enabled for this user. */
- private boolean isBackupServiceActive() {
+ public boolean isBackupServiceActive() {
boolean backupOkay;
try {
backupOkay = mBackupManager.isBackupServiceActive(UserHandle.myUserId());
diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
index f13af9466cd..855a988a178 100644
--- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
@@ -16,12 +16,8 @@
package com.android.settings.deviceinfo;
-import static android.content.Context.CLIPBOARD_SERVICE;
-
import android.app.Activity;
import android.app.settings.SettingsEnums;
-import android.content.ClipData;
-import android.content.ClipboardManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -79,11 +75,7 @@ public class BuildNumberPreferenceController extends BasePreferenceController im
@Override
public CharSequence getSummary() {
- try {
- return BidiFormatter.getInstance().unicodeWrap(Build.DISPLAY);
- } catch (Exception e) {
- return mContext.getText(R.string.device_info_default);
- }
+ return BidiFormatter.getInstance().unicodeWrap(Build.DISPLAY);
}
@Override
@@ -99,29 +91,7 @@ public class BuildNumberPreferenceController extends BasePreferenceController im
@Override
public int getAvailabilityStatus() {
- return AVAILABLE;
- }
-
- @Override
- public boolean isSliceable() {
- return true;
- }
-
- @Override
- public boolean isCopyableSlice() {
- return true;
- }
-
- @Override
- public void copy() {
- final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(
- CLIPBOARD_SERVICE);
- final ClipData clip = ClipData.newPlainText("text", getSummary());
- clipboard.setPrimaryClip(clip);
-
- final String toast = mContext.getString(R.string.copyable_slice_toast,
- mContext.getText(R.string.build_number));
- Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
+ return AVAILABLE_UNSEARCHABLE;
}
@Override
diff --git a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java
index c7d4459aa24..36f1a43f220 100644
--- a/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceController.java
@@ -16,10 +16,16 @@
package com.android.settings.deviceinfo.firmwareversion;
+import static android.content.Context.CLIPBOARD_SERVICE;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
import android.content.Context;
import android.os.Build;
import android.text.BidiFormatter;
+import android.widget.Toast;
+import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
public class SimpleBuildNumberPreferenceController extends BasePreferenceController {
@@ -38,4 +44,26 @@ public class SimpleBuildNumberPreferenceController extends BasePreferenceControl
public CharSequence getSummary() {
return BidiFormatter.getInstance().unicodeWrap(Build.DISPLAY);
}
+
+ @Override
+ public boolean isSliceable() {
+ return true;
+ }
+
+ @Override
+ public boolean isCopyableSlice() {
+ return true;
+ }
+
+ @Override
+ public void copy() {
+ final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(
+ CLIPBOARD_SERVICE);
+ final ClipData clip = ClipData.newPlainText("text", getSummary());
+ clipboard.setPrimaryClip(clip);
+
+ final String toast = mContext.getString(R.string.copyable_slice_toast,
+ mContext.getText(R.string.build_number));
+ Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
+ }
}
diff --git a/src/com/android/settings/homepage/contextualcards/deviceinfo/BatteryInfoSlice.java b/src/com/android/settings/homepage/contextualcards/deviceinfo/BatteryInfoSlice.java
deleted file mode 100644
index 6c7f930a5e2..00000000000
--- a/src/com/android/settings/homepage/contextualcards/deviceinfo/BatteryInfoSlice.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * 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.homepage.contextualcards.deviceinfo;
-
-import android.app.PendingIntent;
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.net.Uri;
-import android.os.PowerManager;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.core.graphics.drawable.IconCompat;
-import androidx.slice.Slice;
-import androidx.slice.builders.ListBuilder;
-import androidx.slice.builders.SliceAction;
-
-import com.android.settings.R;
-import com.android.settings.SubSettings;
-import com.android.settings.Utils;
-import com.android.settings.fuelgauge.BatteryInfo;
-import com.android.settings.fuelgauge.PowerUsageSummary;
-import com.android.settings.slices.CustomSliceRegistry;
-import com.android.settings.slices.CustomSliceable;
-import com.android.settings.slices.SliceBuilderUtils;
-
-/**
- * Utility class to build a Battery Slice, and handle all associated actions.
- */
-public class BatteryInfoSlice implements CustomSliceable {
- private static final String TAG = "BatteryInfoSlice";
-
- private final Context mContext;
-
- private BatteryInfo mBatteryInfo;
- private boolean mIsBatteryInfoLoading;
-
- public BatteryInfoSlice(Context context) {
- mContext = context;
- }
-
- @Override
- public Slice getSlice() {
- if (mBatteryInfo == null) {
- mIsBatteryInfoLoading = true;
- loadBatteryInfo();
- }
- final IconCompat icon = IconCompat.createWithResource(mContext,
- R.drawable.ic_settings_battery);
- final CharSequence title = mContext.getText(R.string.power_usage_summary_title);
- final SliceAction primarySliceAction = SliceAction.createDeeplink(getPrimaryAction(), icon,
- ListBuilder.ICON_IMAGE, title);
- final Slice slice = new ListBuilder(mContext, CustomSliceRegistry.BATTERY_INFO_SLICE_URI,
- ListBuilder.INFINITY)
- .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
- .setHeader(new ListBuilder.HeaderBuilder().setTitle(title))
- .addRow(new ListBuilder.RowBuilder()
- .setTitle(getBatteryPercentString(), mIsBatteryInfoLoading)
- .setSubtitle(getSummary(), mIsBatteryInfoLoading)
- .setPrimaryAction(primarySliceAction))
- .build();
- mBatteryInfo = null;
- mIsBatteryInfoLoading = false;
- return slice;
- }
-
- @Override
- public Uri getUri() {
- return CustomSliceRegistry.BATTERY_INFO_SLICE_URI;
- }
-
- @Override
- public void onNotifyChange(Intent intent) {
-
- }
-
- @Override
- public Intent getIntent() {
- final String screenTitle = mContext.getText(R.string.power_usage_summary_title).toString();
- return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
- PowerUsageSummary.class.getName(), "" /* key */, screenTitle,
- SettingsEnums.SLICE)
- .setClassName(mContext.getPackageName(), SubSettings.class.getName())
- .setData(CustomSliceRegistry.BATTERY_INFO_SLICE_URI);
- }
-
- @Override
- public IntentFilter getIntentFilter() {
- final IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED);
- intentFilter.addAction(Intent.ACTION_POWER_CONNECTED);
- intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
- intentFilter.addAction(Intent.ACTION_BATTERY_LEVEL_CHANGED);
- return intentFilter;
- }
-
- @VisibleForTesting
- void loadBatteryInfo() {
- BatteryInfo.getBatteryInfo(mContext, info -> {
- mBatteryInfo = info;
- mContext.getContentResolver().notifyChange(getUri(), null);
- }, true);
- }
-
- @VisibleForTesting
- CharSequence getBatteryPercentString() {
- return mBatteryInfo == null ? null : mBatteryInfo.batteryPercentString;
- }
-
- @VisibleForTesting
- CharSequence getSummary() {
- if (mBatteryInfo == null) {
- return null;
- }
- return mBatteryInfo.remainingLabel == null ? mBatteryInfo.statusLabel
- : mBatteryInfo.remainingLabel;
- }
-
- private PendingIntent getPrimaryAction() {
- final Intent intent = getIntent();
- return PendingIntent.getActivity(mContext, 0 /* requestCode */,
- intent, 0 /* flags */);
- }
-}
\ No newline at end of file
diff --git a/src/com/android/settings/network/telephony/MobileDataSlice.java b/src/com/android/settings/network/telephony/MobileDataSlice.java
index 6efd8c3aed6..5a5d6a2467b 100644
--- a/src/com/android/settings/network/telephony/MobileDataSlice.java
+++ b/src/com/android/settings/network/telephony/MobileDataSlice.java
@@ -74,8 +74,27 @@ public class MobileDataSlice implements CustomSliceable {
final IconCompat icon = IconCompat.createWithResource(mContext,
R.drawable.ic_network_cell);
final String title = mContext.getText(R.string.mobile_data_settings_title).toString();
- final CharSequence summary = getSummary();
@ColorInt final int color = Utils.getColorAccentDefaultColor(mContext);
+
+ // Return a Slice without the mobile data toggle when airplane mode is on.
+ if (isAirplaneModeEnabled()) {
+ final CharSequence summary = mContext.getText(R.string.mobile_data_ap_mode_disabled);
+ // Intent does nothing, but we have to pass an intent to the Row.
+ final PendingIntent intent = PendingIntent.getActivity(mContext, 0 /* requestCode */,
+ new Intent(), 0 /* flags */);
+ final SliceAction deadAction =
+ SliceAction.create(intent, icon, ListBuilder.ICON_IMAGE, title);
+ final ListBuilder listBuilder = new ListBuilder(mContext, getUri(),
+ ListBuilder.INFINITY)
+ .setAccentColor(color)
+ .addRow(new ListBuilder.RowBuilder()
+ .setTitle(title)
+ .setSubtitle(summary)
+ .setPrimaryAction(deadAction));
+ return listBuilder.build();
+ }
+
+ final CharSequence summary = getSummary();
final PendingIntent toggleAction = getBroadcastIntent(mContext);
final PendingIntent primaryAction = getPrimaryAction();
final SliceAction primarySliceAction = SliceAction.createDeeplink(primaryAction, icon,
@@ -101,11 +120,6 @@ public class MobileDataSlice implements CustomSliceable {
@Override
public void onNotifyChange(Intent intent) {
- // Don't make a change if we are in Airplane Mode.
- if (isAirplaneModeEnabled()) {
- return;
- }
-
final boolean newState = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
isMobileDataEnabled());
diff --git a/src/com/android/settings/slices/CustomSliceManager.java b/src/com/android/settings/slices/CustomSliceManager.java
index c9e473a9c20..91f55ae9832 100644
--- a/src/com/android/settings/slices/CustomSliceManager.java
+++ b/src/com/android/settings/slices/CustomSliceManager.java
@@ -18,25 +18,6 @@ package com.android.settings.slices;
import android.content.Context;
import android.net.Uri;
-import android.util.ArrayMap;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.settings.flashlight.FlashlightSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.BatteryInfoSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.DataUsageSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.DeviceInfoSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.EmergencyInfoSlice;
-import com.android.settings.homepage.contextualcards.deviceinfo.StorageSlice;
-import com.android.settings.homepage.contextualcards.slices.BatteryFixSlice;
-import com.android.settings.homepage.contextualcards.slices.BluetoothDevicesSlice;
-import com.android.settings.homepage.contextualcards.slices.LowStorageSlice;
-import com.android.settings.homepage.contextualcards.slices.NotificationChannelSlice;
-import com.android.settings.location.LocationSlice;
-import com.android.settings.media.MediaOutputSlice;
-import com.android.settings.network.telephony.MobileDataSlice;
-import com.android.settings.wifi.slice.ContextualWifiSlice;
-import com.android.settings.wifi.slice.WifiSlice;
import java.util.Map;
import java.util.WeakHashMap;
@@ -47,17 +28,12 @@ import java.util.WeakHashMap;
*/
public class CustomSliceManager {
- @VisibleForTesting
- final Map> mUriMap;
-
private final Context mContext;
private final Map mSliceableCache;
public CustomSliceManager(Context context) {
mContext = context.getApplicationContext();
- mUriMap = new ArrayMap<>();
mSliceableCache = new WeakHashMap<>();
- addSlices();
}
/**
@@ -67,12 +43,12 @@ public class CustomSliceManager {
* the only thing that should be needed to create the object.
*/
public CustomSliceable getSliceableFromUri(Uri uri) {
- final Uri newUri = removeParameterFromUri(uri);
+ final Uri newUri = CustomSliceRegistry.removeParameterFromUri(uri);
if (mSliceableCache.containsKey(newUri)) {
return mSliceableCache.get(newUri);
}
- final Class clazz = mUriMap.get(newUri);
+ final Class clazz = CustomSliceRegistry.getSliceClassByUri(newUri);
if (clazz == null) {
throw new IllegalArgumentException("No Slice found for uri: " + uri);
}
@@ -82,9 +58,6 @@ public class CustomSliceManager {
return sliceable;
}
- private Uri removeParameterFromUri(Uri uri) {
- return uri != null ? uri.buildUpon().clearQuery().build() : null;
- }
/**
* Return a {@link CustomSliceable} associated to the Action.
@@ -95,39 +68,4 @@ public class CustomSliceManager {
public CustomSliceable getSliceableFromIntentAction(String action) {
return getSliceableFromUri(Uri.parse(action));
}
-
- /**
- * Returns {@code true} if {@param uri} is a valid Slice Uri handled by
- * {@link CustomSliceManager}.
- */
- public boolean isValidUri(Uri uri) {
- return mUriMap.containsKey(removeParameterFromUri(uri));
- }
-
- /**
- * Returns {@code true} if {@param action} is a valid intent action handled by
- * {@link CustomSliceManager}.
- */
- public boolean isValidAction(String action) {
- return isValidUri(Uri.parse(action));
- }
-
- private void addSlices() {
- mUriMap.put(CustomSliceRegistry.BATTERY_FIX_SLICE_URI, BatteryFixSlice.class);
- mUriMap.put(CustomSliceRegistry.BATTERY_INFO_SLICE_URI, BatteryInfoSlice.class);
- mUriMap.put(CustomSliceRegistry.BLUETOOTH_DEVICES_SLICE_URI, BluetoothDevicesSlice.class);
- mUriMap.put(CustomSliceRegistry.CONTEXTUAL_WIFI_SLICE_URI, ContextualWifiSlice.class);
- mUriMap.put(CustomSliceRegistry.DATA_USAGE_SLICE_URI, DataUsageSlice.class);
- mUriMap.put(CustomSliceRegistry.DEVICE_INFO_SLICE_URI, DeviceInfoSlice.class);
- mUriMap.put(CustomSliceRegistry.EMERGENCY_INFO_SLICE_URI, EmergencyInfoSlice.class);
- mUriMap.put(CustomSliceRegistry.FLASHLIGHT_SLICE_URI, FlashlightSlice.class);
- mUriMap.put(CustomSliceRegistry.LOCATION_SLICE_URI, LocationSlice.class);
- mUriMap.put(CustomSliceRegistry.LOW_STORAGE_SLICE_URI, LowStorageSlice.class);
- mUriMap.put(CustomSliceRegistry.MOBILE_DATA_SLICE_URI, MobileDataSlice.class);
- mUriMap.put(CustomSliceRegistry.NOTIFICATION_CHANNEL_SLICE_URI,
- NotificationChannelSlice.class);
- mUriMap.put(CustomSliceRegistry.STORAGE_SLICE_URI, StorageSlice.class);
- mUriMap.put(CustomSliceRegistry.WIFI_SLICE_URI, WifiSlice.class);
- mUriMap.put(CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI, MediaOutputSlice.class);
- }
}
diff --git a/src/com/android/settings/slices/CustomSliceRegistry.java b/src/com/android/settings/slices/CustomSliceRegistry.java
index 3a1db69c00a..12e7b48ffb2 100644
--- a/src/com/android/settings/slices/CustomSliceRegistry.java
+++ b/src/com/android/settings/slices/CustomSliceRegistry.java
@@ -24,11 +24,30 @@ import static com.android.settings.notification.ZenModePreferenceController.ZEN_
import android.content.ContentResolver;
import android.net.Uri;
import android.provider.SettingsSlicesContract;
+import android.util.ArrayMap;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settings.flashlight.FlashlightSlice;
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController;
+import com.android.settings.homepage.contextualcards.deviceinfo.DataUsageSlice;
+import com.android.settings.homepage.contextualcards.deviceinfo.DeviceInfoSlice;
+import com.android.settings.homepage.contextualcards.deviceinfo.EmergencyInfoSlice;
+import com.android.settings.homepage.contextualcards.deviceinfo.StorageSlice;
+import com.android.settings.homepage.contextualcards.slices.BatteryFixSlice;
+import com.android.settings.homepage.contextualcards.slices.BluetoothDevicesSlice;
+import com.android.settings.homepage.contextualcards.slices.LowStorageSlice;
+import com.android.settings.homepage.contextualcards.slices.NotificationChannelSlice;
+import com.android.settings.location.LocationSlice;
+import com.android.settings.media.MediaOutputSlice;
+import com.android.settings.network.telephony.MobileDataSlice;
import com.android.settings.wifi.calling.WifiCallingSliceHelper;
+import com.android.settings.wifi.slice.ContextualWifiSlice;
+import com.android.settings.wifi.slice.WifiSlice;
import com.android.settingslib.media.MediaOutputSliceConstants;
+import java.util.Map;
+
/**
* A registry of custom slice Uris.
*/
@@ -53,15 +72,7 @@ public class CustomSliceRegistry {
.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.
*/
@@ -287,4 +298,51 @@ public class CustomSliceRegistry {
.appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
.appendPath(MediaOutputSliceConstants.KEY_MEDIA_OUTPUT)
.build();
+
+ @VisibleForTesting
+ static final Map> sUriToSlice;
+
+ static {
+ sUriToSlice = new ArrayMap<>();
+
+ sUriToSlice.put(BATTERY_FIX_SLICE_URI, BatteryFixSlice.class);
+ sUriToSlice.put(BLUETOOTH_DEVICES_SLICE_URI, BluetoothDevicesSlice.class);
+ sUriToSlice.put(CONTEXTUAL_WIFI_SLICE_URI, ContextualWifiSlice.class);
+ sUriToSlice.put(DATA_USAGE_SLICE_URI, DataUsageSlice.class);
+ sUriToSlice.put(DEVICE_INFO_SLICE_URI, DeviceInfoSlice.class);
+ sUriToSlice.put(EMERGENCY_INFO_SLICE_URI, EmergencyInfoSlice.class);
+ sUriToSlice.put(FLASHLIGHT_SLICE_URI, FlashlightSlice.class);
+ sUriToSlice.put(LOCATION_SLICE_URI, LocationSlice.class);
+ sUriToSlice.put(LOW_STORAGE_SLICE_URI, LowStorageSlice.class);
+ sUriToSlice.put(MOBILE_DATA_SLICE_URI, MobileDataSlice.class);
+ sUriToSlice.put(NOTIFICATION_CHANNEL_SLICE_URI, NotificationChannelSlice.class);
+ sUriToSlice.put(STORAGE_SLICE_URI, StorageSlice.class);
+ sUriToSlice.put(WIFI_SLICE_URI, WifiSlice.class);
+ sUriToSlice.put(MEDIA_OUTPUT_SLICE_URI, MediaOutputSlice.class);
+ }
+
+ public static Class extends CustomSliceable> getSliceClassByUri(Uri uri) {
+ return sUriToSlice.get(uri);
+ }
+
+ public static Uri removeParameterFromUri(Uri uri) {
+ return uri != null ? uri.buildUpon().clearQuery().build() : null;
+ }
+
+ /**
+ * Returns {@code true} if {@param uri} is a valid Slice Uri handled by
+ * {@link CustomSliceManager}.
+ */
+ public static boolean isValidUri(Uri uri) {
+ return sUriToSlice.containsKey(removeParameterFromUri(uri));
+ }
+
+ /**
+ * Returns {@code true} if {@param action} is a valid intent action handled by
+ * {@link CustomSliceManager}.
+ */
+ public static boolean isValidAction(String action) {
+ return isValidUri(Uri.parse(action));
+ }
+
}
diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java
index 397b2fc631c..d019368fd62 100644
--- a/src/com/android/settings/slices/SettingsSliceProvider.java
+++ b/src/com/android/settings/slices/SettingsSliceProvider.java
@@ -147,7 +147,7 @@ public class SettingsSliceProvider extends SliceProvider {
@Override
public void onSlicePinned(Uri sliceUri) {
- if (mCustomSliceManager.isValidUri(sliceUri)) {
+ if (CustomSliceRegistry.isValidUri(sliceUri)) {
final CustomSliceable sliceable = mCustomSliceManager.getSliceableFromUri(sliceUri);
final IntentFilter filter = sliceable.getIntentFilter();
if (filter != null) {
@@ -194,7 +194,7 @@ public class SettingsSliceProvider extends SliceProvider {
// Before adding a slice to {@link CustomSliceManager}, please get approval
// from the Settings team.
- if (mCustomSliceManager.isValidUri(sliceUri)) {
+ if (CustomSliceRegistry.isValidUri(sliceUri)) {
final CustomSliceable sliceable = mCustomSliceManager.getSliceableFromUri(
sliceUri);
return sliceable.getSlice();
diff --git a/src/com/android/settings/slices/SliceBroadcastReceiver.java b/src/com/android/settings/slices/SliceBroadcastReceiver.java
index b2ea5830fe2..8b6fc9801be 100644
--- a/src/com/android/settings/slices/SliceBroadcastReceiver.java
+++ b/src/com/android/settings/slices/SliceBroadcastReceiver.java
@@ -63,7 +63,7 @@ public class SliceBroadcastReceiver extends BroadcastReceiver {
final CustomSliceManager mCustomSliceManager = FeatureFactory.getFactory(
context).getSlicesFeatureProvider().getCustomSliceManager(context);
- if (mCustomSliceManager.isValidAction(action)) {
+ if (CustomSliceRegistry.isValidAction(action)) {
final CustomSliceable sliceable =
mCustomSliceManager.getSliceableFromIntentAction(action);
sliceable.onNotifyChange(intent);
diff --git a/src/com/android/settings/slices/SliceDeepLinkSpringBoard.java b/src/com/android/settings/slices/SliceDeepLinkSpringBoard.java
index f4afa16d7af..d2179d20ebc 100644
--- a/src/com/android/settings/slices/SliceDeepLinkSpringBoard.java
+++ b/src/com/android/settings/slices/SliceDeepLinkSpringBoard.java
@@ -47,7 +47,7 @@ public class SliceDeepLinkSpringBoard extends Activity {
// TODO (b/80263568) Avoid duplicating this list of Slice Uris.
final CustomSliceManager customSliceManager = FeatureFactory.getFactory(this)
.getSlicesFeatureProvider().getCustomSliceManager(this);
- if (customSliceManager.isValidUri(sliceUri)) {
+ if (CustomSliceRegistry.isValidUri(sliceUri)) {
final CustomSliceable sliceable =
customSliceManager.getSliceableFromUri(sliceUri);
launchIntent = sliceable.getIntent();
diff --git a/src/com/android/settings/widget/SingleTargetGearPreference.java b/src/com/android/settings/widget/SingleTargetGearPreference.java
index 48876fa81d9..f6496ed4d88 100644
--- a/src/com/android/settings/widget/SingleTargetGearPreference.java
+++ b/src/com/android/settings/widget/SingleTargetGearPreference.java
@@ -18,9 +18,10 @@ package com.android.settings.widget;
import android.content.Context;
import android.util.AttributeSet;
+import android.view.View;
-import androidx.core.content.res.TypedArrayUtils;
import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
@@ -28,23 +29,38 @@ import com.android.settings.R;
* A preference with single target and a gear icon on the side.
*/
public class SingleTargetGearPreference extends Preference {
-
- public SingleTargetGearPreference(Context context, AttributeSet attrs,
- int defStyleAttr, int defStyleRes) {
+ public SingleTargetGearPreference(Context context, AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
- setWidgetLayoutResource(R.layout.preference_widget_gear_no_bg);
+ init();
}
public SingleTargetGearPreference(Context context, AttributeSet attrs, int defStyleAttr) {
- this(context, attrs, defStyleAttr, 0 /* defStyleRes */);
+ super(context, attrs, defStyleAttr);
+ init();
}
public SingleTargetGearPreference(Context context, AttributeSet attrs) {
- this(context, attrs, TypedArrayUtils.getAttr(context, R.attr.preferenceStyle,
- android.R.attr.preferenceStyle));
+ super(context, attrs);
+ init();
}
public SingleTargetGearPreference(Context context) {
- this(context, null /* attrs */);
+ super(context);
+ init();
}
-}
\ No newline at end of file
+
+ private void init() {
+ setLayoutResource(R.layout.preference_single_target);
+ setWidgetLayoutResource(R.layout.preference_widget_gear_optional_background);
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+ final View divider = holder.findViewById(com.android.settingslib.R.id.two_target_divider);
+ if (divider != null) {
+ divider.setVisibility(View.INVISIBLE);
+ }
+ }
+}
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index 4255f3c964c..625de38f082 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -40,7 +40,6 @@ import android.widget.Switch;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
-import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceClickListener;
import androidx.preference.PreferenceScreen;
@@ -141,20 +140,17 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
}
};
+ /*
+ * Launch carrier emergency address managemnent activity
+ */
private final OnPreferenceClickListener mUpdateAddressListener =
- new OnPreferenceClickListener() {
- /*
- * Launch carrier emergency address managemnent activity
- */
- @Override
- public boolean onPreferenceClick(Preference preference) {
- Intent carrierAppIntent = getCarrierActivityIntent();
- if (carrierAppIntent != null) {
- carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_UPDATE);
- startActivity(carrierAppIntent);
- }
- return true;
+ preference -> {
+ Intent carrierAppIntent = getCarrierActivityIntent();
+ if (carrierAppIntent != null) {
+ carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_UPDATE);
+ startActivity(carrierAppIntent);
}
+ return true;
};
private final ProvisioningManager.Callback mProvisioningCallback =
@@ -174,8 +170,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- final SettingsActivity activity = (SettingsActivity) getActivity();
-
mEmptyView = getView().findViewById(android.R.id.empty);
setEmptyView(mEmptyView);
final Resources res = SubscriptionManager.getResourcesForSubId(getContext(), mSubId);
@@ -265,14 +259,13 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
mTelephonyManager = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE))
.createForSubscriptionId(mSubId);
- mButtonWfcMode = (ListWithEntrySummaryPreference) findPreference(BUTTON_WFC_MODE);
+ mButtonWfcMode = findPreference(BUTTON_WFC_MODE);
mButtonWfcMode.setOnPreferenceChangeListener(this);
- mButtonWfcRoamingMode = (ListWithEntrySummaryPreference) findPreference(
- BUTTON_WFC_ROAMING_MODE);
+ mButtonWfcRoamingMode = findPreference(BUTTON_WFC_ROAMING_MODE);
mButtonWfcRoamingMode.setOnPreferenceChangeListener(this);
- mUpdateAddress = (Preference) findPreference(PREFERENCE_EMERGENCY_ADDRESS);
+ mUpdateAddress = findPreference(PREFERENCE_EMERGENCY_ADDRESS);
mUpdateAddress.setOnPreferenceClickListener(mUpdateAddressListener);
mIntentFilter = new IntentFilter();
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
index 8fae45c584c..18ddd8a6884 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
@@ -16,18 +16,14 @@
package com.android.settings.deviceinfo;
-import static android.content.Context.CLIPBOARD_SERVICE;
-
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Answers.RETURNS_DEEP_STUBS;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import android.app.Activity;
-import android.content.ClipboardManager;
import android.content.Context;
import android.os.Process;
import android.os.UserManager;
@@ -35,7 +31,6 @@ import android.provider.Settings;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.core.InstrumentedPreferenceFragment;
@@ -62,13 +57,8 @@ import org.robolectric.shadows.ShadowUserManager;
public class BuildNumberPreferenceControllerTest {
private static final String KEY_BUILD_NUMBER = "build_number";
-
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private Activity mActivity;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private InstrumentedPreferenceFragment mFragment;
- @Mock(answer = RETURNS_DEEP_STUBS)
- private PreferenceScreen mScreen;
private ShadowUserManager mShadowUserManager;
@@ -200,14 +190,4 @@ public class BuildNumberPreferenceControllerTest {
assertThat(activityResultHandled).isTrue();
assertThat(DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(mContext)).isTrue();
}
-
- @Test
- public void copy_shouldCopyBuildNumberToClipboard() {
- mController.copy();
-
- final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(
- CLIPBOARD_SERVICE);
- final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
- assertThat(data.toString()).isEqualTo(mController.getSummary());
- }
}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java
new file mode 100644
index 00000000000..3784f086da9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SimpleBuildNumberPreferenceControllerTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2019 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.deviceinfo.firmwareversion;
+
+import static android.content.Context.CLIPBOARD_SERVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ClipboardManager;
+import android.content.Context;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class SimpleBuildNumberPreferenceControllerTest {
+
+ private SimpleBuildNumberPreferenceController mController;
+ private Context mContext;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+
+ mController = new SimpleBuildNumberPreferenceController(mContext, "test");
+ }
+
+ @Test
+ public void copy_shouldCopyBuildNumberToClipboard() {
+ mController.copy();
+
+ final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(
+ CLIPBOARD_SERVICE);
+ final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
+ assertThat(data.toString()).isEqualTo(mController.getSummary());
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
index e66774eca74..40e69391b4d 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
@@ -229,11 +229,6 @@ public class ContextualCardLoaderTest {
.setSliceUri(Uri.parse(
"content://com.android.settings.test.slices/action/gesture_pick_up"))
.build());
- cards.add(new ContextualCard.Builder()
- .setName("test_battery")
- .setCardType(ContextualCard.CardType.SLICE)
- .setSliceUri(CustomSliceRegistry.BATTERY_INFO_SLICE_URI)
- .build());
return cards;
}
@@ -262,11 +257,6 @@ public class ContextualCardLoaderTest {
.setSliceUri(Uri.parse(
"content://com.android.settings.test.slices/action/gesture_pick_up"))
.build());
- cards.add(new ContextualCard.Builder()
- .setName("test_battery")
- .setCardType(ContextualCard.CardType.SLICE)
- .setSliceUri(CustomSliceRegistry.BATTERY_INFO_SLICE_URI)
- .build());
return cards;
}
}
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
index eb9a4614c80..8087716c9e1 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
@@ -460,7 +460,7 @@ public class ContextualCardManagerTest {
cards.add(new ContextualCard.Builder()
.setName("test_battery")
.setCardType(ContextualCard.CardType.SLICE)
- .setSliceUri(CustomSliceRegistry.BATTERY_INFO_SLICE_URI)
+ .setSliceUri(CustomSliceRegistry.BATTERY_FIX_SLICE_URI)
.setViewType(VIEW_TYPE_FULL_WIDTH)
.build());
return cards;
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/deviceinfo/BatteryInfoSliceTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/deviceinfo/BatteryInfoSliceTest.java
deleted file mode 100644
index ff276d64d54..00000000000
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/deviceinfo/BatteryInfoSliceTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.homepage.contextualcards.deviceinfo;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-
-import android.content.Context;
-
-import androidx.core.graphics.drawable.IconCompat;
-import androidx.slice.Slice;
-import androidx.slice.SliceMetadata;
-import androidx.slice.SliceProvider;
-import androidx.slice.core.SliceAction;
-import androidx.slice.widget.SliceLiveData;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class BatteryInfoSliceTest {
-
- private Context mContext;
- private BatteryInfoSlice mBatteryInfoSlice;
-
- @Before
- public void setUp() {
- mContext = RuntimeEnvironment.application;
-
- // Set-up specs for SliceMetadata.
- SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
-
- mBatteryInfoSlice = spy(new BatteryInfoSlice(mContext));
- }
-
- @Test
- public void getSlice_shouldBeCorrectSliceContent() {
- doNothing().when(mBatteryInfoSlice).loadBatteryInfo();
- doReturn("10%").when(mBatteryInfoSlice).getBatteryPercentString();
- doReturn("test").when(mBatteryInfoSlice).getSummary();
-
- final Slice slice = mBatteryInfoSlice.getSlice();
-
- final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
- assertThat(metadata.getTitle()).isEqualTo(
- mContext.getString(R.string.power_usage_summary_title));
-
- final SliceAction primaryAction = metadata.getPrimaryAction();
- final IconCompat expectedIcon = IconCompat.createWithResource(mContext,
- R.drawable.ic_settings_battery);
- assertThat(primaryAction.getIcon().toString()).isEqualTo(expectedIcon.toString());
- }
-}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java
index c497cf82665..e488d0c7fb2 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
@@ -162,4 +163,27 @@ public class MobileDataSliceTest {
assertThat(isMobileDataEnabled).isEqualTo(seed);
}
+
+ @Test
+ public void airplaneModeEnabled_slicePrimaryActionIsEmpty() {
+ doReturn(true).when(mMobileDataSlice).isAirplaneModeEnabled();
+ doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
+ final Slice mobileData = mMobileDataSlice.getSlice();
+
+ final SliceMetadata metadata = SliceMetadata.from(mContext, mobileData);
+ assertThat(metadata.getTitle())
+ .isEqualTo(mContext.getString(R.string.mobile_data_settings_title));
+
+ assertThat(metadata.getSubtitle())
+ .isEqualTo(mContext.getString(R.string.mobile_data_ap_mode_disabled));
+
+ final List toggles = metadata.getToggles();
+ assertThat(toggles).hasSize(0);
+
+ final SliceAction primaryAction = metadata.getPrimaryAction();
+ final PendingIntent pendingIntent = primaryAction.getAction();
+ final Intent actionIntent = pendingIntent.getIntent();
+
+ assertThat(actionIntent).isNull();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java b/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java
index 82726dff70d..53922844a0c 100644
--- a/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SpecialCaseSliceManagerTest.java
@@ -47,8 +47,8 @@ public class SpecialCaseSliceManagerTest {
public void setUp() {
mContext = RuntimeEnvironment.application;
mCustomSliceManager = spy(new CustomSliceManager(mContext));
- mCustomSliceManager.mUriMap.clear();
- mCustomSliceManager.mUriMap.put(FakeSliceable.URI, FakeSliceable.class);
+ CustomSliceRegistry.sUriToSlice.clear();
+ CustomSliceRegistry.sUriToSlice.put(FakeSliceable.URI, FakeSliceable.class);
}
@Test
@@ -69,14 +69,14 @@ public class SpecialCaseSliceManagerTest {
@Test
public void isValidUri_validUri_returnsTrue() {
- final boolean isValidUri = mCustomSliceManager.isValidUri(FakeSliceable.URI);
+ final boolean isValidUri = CustomSliceRegistry.isValidUri(FakeSliceable.URI);
assertThat(isValidUri).isTrue();
}
@Test
public void isValidUri_invalidUri_returnsFalse() {
- final boolean isValidUri = mCustomSliceManager.isValidUri(null);
+ final boolean isValidUri = CustomSliceRegistry.isValidUri(null);
assertThat(isValidUri).isFalse();
}
@@ -84,14 +84,14 @@ public class SpecialCaseSliceManagerTest {
@Test
public void isValidAction_validActions_returnsTrue() {
final boolean isValidAction =
- mCustomSliceManager.isValidAction(FakeSliceable.URI.toString());
+ CustomSliceRegistry.isValidAction(FakeSliceable.URI.toString());
assertThat(isValidAction).isTrue();
}
@Test
public void isValidAction_invalidAction_returnsFalse() {
- final boolean isValidAction = mCustomSliceManager.isValidAction("action");
+ final boolean isValidAction = CustomSliceRegistry.isValidAction("action");
assertThat(isValidAction).isFalse();
}
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/ListWithEntrySummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/wifi/calling/ListWithEntrySummaryPreferenceTest.java
index cc2622f4b35..307c0ac202d 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/ListWithEntrySummaryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/ListWithEntrySummaryPreferenceTest.java
@@ -33,8 +33,6 @@ import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import java.io.IOException;
-
@RunWith(RobolectricTestRunner.class)
public class ListWithEntrySummaryPreferenceTest {
@@ -54,6 +52,7 @@ public class ListWithEntrySummaryPreferenceTest {
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
+ mContext.setTheme(R.style.Theme_Settings_Home);
mPreference = new ListWithEntrySummaryPreference(mContext, null);
mPreference.setEntries(mDefaultEntries);
mPreference.setEntryValues(mDefaultEntryValues);
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
index 39de254b846..70f1916781e 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
@@ -41,11 +41,9 @@ import android.telephony.ims.ProvisioningManager;
import android.view.View;
import android.widget.TextView;
-import androidx.preference.ListPreference;
import androidx.preference.PreferenceScreen;
import com.android.ims.ImsConfig;
-import com.android.ims.ImsException;
import com.android.ims.ImsManager;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
@@ -80,11 +78,11 @@ public class WifiCallingSettingsForSubTest {
@Mock private ToggleSwitch mToggleSwitch;
@Mock private View mView;
@Mock private ImsConfig mImsConfig;
- @Mock private ListPreference mButtonWfcMode;
- @Mock private ListPreference mButtonWfcRoamingMode;
+ @Mock private ListWithEntrySummaryPreference mButtonWfcMode;
+ @Mock private ListWithEntrySummaryPreference mButtonWfcRoamingMode;
@Before
- public void setUp() throws NoSuchFieldException, ImsException {
+ public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
@@ -100,7 +98,7 @@ public class WifiCallingSettingsForSubTest {
final Bundle bundle = new Bundle();
when(mFragment.getArguments()).thenReturn(bundle);
doNothing().when(mFragment).addPreferencesFromResource(anyInt());
- doReturn(mock(ListPreference.class)).when(mFragment).findPreference(any());
+ doReturn(mock(ListWithEntrySummaryPreference.class)).when(mFragment).findPreference(any());
doReturn(mButtonWfcMode).when(mFragment).findPreference(BUTTON_WFC_MODE);
doReturn(mButtonWfcRoamingMode).when(mFragment).findPreference(BUTTON_WFC_ROAMING_MODE);
doNothing().when(mFragment).finish();
@@ -141,7 +139,7 @@ public class WifiCallingSettingsForSubTest {
}
@Test
- public void onResume_provisioningAllowed_shouldNotFinish() throws ImsException {
+ public void onResume_provisioningAllowed_shouldNotFinish() {
// Call onResume while provisioning is allowed.
mFragment.onResume();
@@ -160,7 +158,7 @@ public class WifiCallingSettingsForSubTest {
}
@Test
- public void onResumeOnPause_provisioningCallbackRegistration() throws ImsException {
+ public void onResumeOnPause_provisioningCallbackRegistration() throws Exception {
// Verify that provisioning callback is registered after call to onResume().
mFragment.onResume();
verify(mImsConfig).addConfigCallback(any(ProvisioningManager.Callback.class));