diff options
author | Matthew Fritze <mfritze@google.com> | 2018-05-18 17:59:26 -0700 |
---|---|---|
committer | Matthew Fritze <mfritze@google.com> | 2018-05-22 11:06:42 -0700 |
commit | bf1f5b58138478ca350c3853445c06d871064a62 (patch) | |
tree | 10a7bc319cf93a144a0a7b6b3d397f299923dc6f | |
parent | 49d8b0a3e4e8c73ce0dac0e681855eccd1c34511 (diff) | |
download | packages_apps_Settings-bf1f5b58138478ca350c3853445c06d871064a62.tar.gz packages_apps_Settings-bf1f5b58138478ca350c3853445c06d871064a62.tar.bz2 packages_apps_Settings-bf1f5b58138478ca350c3853445c06d871064a62.zip |
Add isSliceable API to BasePrefController
Only support explicitly approved Settings Slices,
dictated by controllers which return true for the new
method isSliceable.
Updating the supported settings to a whitelist means that
the method to return all available slices must be updated,
and checking slicability when we index slices.
Test: robotests
Bug: 79779103
Change-Id: Ib2b9690cdd0036b5cc4a1cb846c52bce7c824ab9
47 files changed, 475 insertions, 18 deletions
diff --git a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java index ec988cd0f2..d1a60faa74 100644 --- a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java +++ b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java @@ -90,6 +90,11 @@ public class AccessibilitySlicePreferenceController extends TogglePreferenceCont return getAccessibilityServiceInfo() == null ? UNSUPPORTED_ON_DEVICE : AVAILABLE; } + @Override + public boolean isSliceable() { + return true; + } + private AccessibilityServiceInfo getAccessibilityServiceInfo() { final AccessibilityManager accessibilityManager = mContext.getSystemService( AccessibilityManager.class); diff --git a/src/com/android/settings/core/BasePreferenceController.java b/src/com/android/settings/core/BasePreferenceController.java index 7110b77fcf..4c4d74dfa5 100644 --- a/src/com/android/settings/core/BasePreferenceController.java +++ b/src/com/android/settings/core/BasePreferenceController.java @@ -235,6 +235,23 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl } /** + * Determines if the controller should be used as a Slice. + * <p> + * Important criteria for a Slice are: + * - Must be secure + * - Must not be a privacy leak + * - Must be understandable as a stand-alone Setting. + * <p> + * This does not guarantee the setting is available. {@link #isAvailable()} should sill be + * called. + * + * @return {@code true} if the controller should be used externally as a Slice. + */ + public boolean isSliceable() { + return false; + } + + /** * Updates non-indexable keys for search provider. * * Called by SearchIndexProvider#getNonIndexableKeys diff --git a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java index 20c5bc4e25..557f36909e 100644 --- a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java +++ b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java @@ -19,6 +19,7 @@ import android.content.Context; import android.content.Intent; import android.os.UserHandle; import android.provider.Settings; +import android.text.TextUtils; import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.settings.R; @@ -55,6 +56,11 @@ public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreference } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "ambient_display_always_on"); + } + + @Override public boolean isChecked() { return mConfig.alwaysOnEnabled(MY_USER); } diff --git a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java index 10775c4b2d..a6abe823cb 100644 --- a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java +++ b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.Intent; import android.os.UserHandle; import android.provider.Settings; +import android.text.TextUtils; import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.settings.R; @@ -91,6 +92,11 @@ public class AmbientDisplayNotificationsPreferenceController extends } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "ambient_display_notification"); + } + + @Override //TODO (b/69808376): Remove result payload public ResultPayload getResultPayload() { final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext, diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceController.java b/src/com/android/settings/display/AutoBrightnessPreferenceController.java index 564e27ad3d..7c93d28590 100644 --- a/src/com/android/settings/display/AutoBrightnessPreferenceController.java +++ b/src/com/android/settings/display/AutoBrightnessPreferenceController.java @@ -16,6 +16,7 @@ package com.android.settings.display; import android.content.Context; import android.content.Intent; import android.provider.Settings; +import android.text.TextUtils; import com.android.settings.DisplaySettings; import com.android.settings.core.TogglePreferenceController; @@ -61,6 +62,11 @@ public class AutoBrightnessPreferenceController extends TogglePreferenceControll } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "auto_brightness"); + } + + @Override public ResultPayload getResultPayload() { // TODO remove result payload final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext, diff --git a/src/com/android/settings/display/AutoRotatePreferenceController.java b/src/com/android/settings/display/AutoRotatePreferenceController.java index 749f6e6c14..6bdf75aebf 100644 --- a/src/com/android/settings/display/AutoRotatePreferenceController.java +++ b/src/com/android/settings/display/AutoRotatePreferenceController.java @@ -15,6 +15,7 @@ package com.android.settings.display; import android.content.Context; import androidx.preference.Preference; +import android.text.TextUtils; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.view.RotationPolicy; @@ -71,7 +72,12 @@ public class AutoRotatePreferenceController extends TogglePreferenceController i @Override public int getAvailabilityStatus() { return RotationPolicy.isRotationLockToggleVisible(mContext) - ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + ? AVAILABLE : UNSUPPORTED_ON_DEVICE; + } + + @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "auto_rotate"); } @Override diff --git a/src/com/android/settings/display/NightDisplayActivationPreferenceController.java b/src/com/android/settings/display/NightDisplayActivationPreferenceController.java index 6e30f6fd95..ffc73860c2 100644 --- a/src/com/android/settings/display/NightDisplayActivationPreferenceController.java +++ b/src/com/android/settings/display/NightDisplayActivationPreferenceController.java @@ -19,6 +19,7 @@ package com.android.settings.display; import android.content.Context; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; @@ -54,6 +55,11 @@ public class NightDisplayActivationPreferenceController extends TogglePreference } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "night_display_activated"); + } + + @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); diff --git a/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java b/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java index f5bc49aa6d..048e08472b 100644 --- a/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java +++ b/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java @@ -16,9 +16,12 @@ package com.android.settings.display; -import android.content.Context; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; + +import android.content.Context; +import android.text.TextUtils; + import com.android.internal.app.ColorDisplayController; import com.android.settings.core.SliderPreferenceController; import com.android.settings.widget.SeekBarPreference; @@ -43,6 +46,11 @@ public class NightDisplayIntensityPreferenceController extends SliderPreferenceC } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "night_display_temperature"); + } + + @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); final SeekBarPreference preference = (SeekBarPreference) screen.findPreference( diff --git a/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java b/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java index b8b7239d79..4433dd6e29 100644 --- a/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java +++ b/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java @@ -23,6 +23,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.provider.Settings; import androidx.annotation.VisibleForTesting; +import android.text.TextUtils; import com.android.settings.R; import com.android.settings.search.DatabaseIndexingUtils; @@ -62,6 +63,11 @@ public class DoubleTapPowerPreferenceController extends GesturePreferenceControl } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "gesture_double_tap_power"); + } + + @Override protected String getVideoPrefKey() { return PREF_KEY_VIDEO; } diff --git a/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java b/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java index def6e20b5a..c99fd3f66e 100644 --- a/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java +++ b/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java @@ -91,6 +91,11 @@ public class DoubleTapScreenPreferenceController extends GesturePreferenceContro } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "gesture_double_tap_screen"); + } + + @Override public boolean setChecked(boolean isChecked) { return Settings.Secure.putInt(mContext.getContentResolver(), SECURE_KEY, isChecked ? ON : OFF); diff --git a/src/com/android/settings/gestures/DoubleTwistPreferenceController.java b/src/com/android/settings/gestures/DoubleTwistPreferenceController.java index 313e67ba86..6a72dc4e4d 100644 --- a/src/com/android/settings/gestures/DoubleTwistPreferenceController.java +++ b/src/com/android/settings/gestures/DoubleTwistPreferenceController.java @@ -72,6 +72,11 @@ public class DoubleTwistPreferenceController extends GesturePreferenceController } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "gesture_double_twist"); + } + + @Override protected String getVideoPrefKey() { return PREF_KEY_VIDEO; } diff --git a/src/com/android/settings/gestures/PickupGesturePreferenceController.java b/src/com/android/settings/gestures/PickupGesturePreferenceController.java index 8f79cb1926..6d01e52e84 100644 --- a/src/com/android/settings/gestures/PickupGesturePreferenceController.java +++ b/src/com/android/settings/gestures/PickupGesturePreferenceController.java @@ -84,6 +84,11 @@ public class PickupGesturePreferenceController extends GesturePreferenceControll } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "gesture_pick_up"); + } + + @Override protected String getVideoPrefKey() { return PREF_KEY_VIDEO; } diff --git a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java index bb6a26d880..104abf98d1 100644 --- a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java +++ b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java @@ -21,6 +21,7 @@ import static android.provider.Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED; import android.content.Context; import android.content.SharedPreferences; import android.provider.Settings; +import android.text.TextUtils; import com.android.settings.Utils; @@ -60,6 +61,11 @@ public class SwipeToNotificationPreferenceController extends GesturePreferenceCo } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "gesture_swipe_down_fingerprint"); + } + + @Override public boolean setChecked(boolean isChecked) { setSwipeToNotification(mContext, isChecked); return true; diff --git a/src/com/android/settings/gestures/SwipeUpPreferenceController.java b/src/com/android/settings/gestures/SwipeUpPreferenceController.java index b4695cca15..f48d21b90d 100644 --- a/src/com/android/settings/gestures/SwipeUpPreferenceController.java +++ b/src/com/android/settings/gestures/SwipeUpPreferenceController.java @@ -22,6 +22,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.os.UserManager; import android.provider.Settings; +import android.text.TextUtils; import com.android.internal.R; @@ -61,6 +62,11 @@ public class SwipeUpPreferenceController extends GesturePreferenceController { } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "gesture_swipe_up"); + } + + @Override protected String getVideoPrefKey() { return PREF_KEY_VIDEO; } diff --git a/src/com/android/settings/network/AirplaneModePreferenceController.java b/src/com/android/settings/network/AirplaneModePreferenceController.java index b4ef0d235f..b88ebeb2c3 100644 --- a/src/com/android/settings/network/AirplaneModePreferenceController.java +++ b/src/com/android/settings/network/AirplaneModePreferenceController.java @@ -23,6 +23,7 @@ import android.os.SystemProperties; import androidx.preference.SwitchPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import android.text.TextUtils; import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyProperties; @@ -91,6 +92,11 @@ public class AirplaneModePreferenceController extends TogglePreferenceController } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "toggle_airplane"); + } + + @Override @AvailabilityStatus public int getAvailabilityStatus() { return isAvailable(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; diff --git a/src/com/android/settings/notification/BadgingNotificationPreferenceController.java b/src/com/android/settings/notification/BadgingNotificationPreferenceController.java index c9e190f41f..6576e02108 100644 --- a/src/com/android/settings/notification/BadgingNotificationPreferenceController.java +++ b/src/com/android/settings/notification/BadgingNotificationPreferenceController.java @@ -28,10 +28,10 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.TwoStatePreference; +import android.text.TextUtils; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.TogglePreferenceController; -import com.android.settingslib.core.AbstractPreferenceController; import com.android.settings.R; import com.android.settings.search.DatabaseIndexingUtils; import com.android.settings.search.InlineSwitchPayload; @@ -89,6 +89,11 @@ public class BadgingNotificationPreferenceController extends TogglePreferenceCon } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "notification_badging"); + } + + @Override public boolean isChecked() { return Settings.Secure.getInt(mContext.getContentResolver(), NOTIFICATION_BADGING, ON) == ON; diff --git a/src/com/android/settings/notification/CallVolumePreferenceController.java b/src/com/android/settings/notification/CallVolumePreferenceController.java index c0e16331f4..a3eb87f898 100644 --- a/src/com/android/settings/notification/CallVolumePreferenceController.java +++ b/src/com/android/settings/notification/CallVolumePreferenceController.java @@ -18,6 +18,7 @@ package com.android.settings.notification; import android.content.Context; import android.media.AudioManager; +import android.text.TextUtils; import com.android.settings.R; @@ -38,6 +39,11 @@ public class CallVolumePreferenceController extends VolumeSeekBarPreferenceContr } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "call_volume"); + } + + @Override public int getAudioStream() { if (mAudioManager.isBluetoothScoOn()) { return AudioManager.STREAM_BLUETOOTH_SCO; diff --git a/src/com/android/settings/notification/MediaVolumePreferenceController.java b/src/com/android/settings/notification/MediaVolumePreferenceController.java index f3bffe075e..46f57292a3 100644 --- a/src/com/android/settings/notification/MediaVolumePreferenceController.java +++ b/src/com/android/settings/notification/MediaVolumePreferenceController.java @@ -18,6 +18,7 @@ package com.android.settings.notification; import android.content.Context; import android.media.AudioManager; +import android.text.TextUtils; import com.android.settings.R; @@ -38,6 +39,11 @@ public class MediaVolumePreferenceController extends } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), KEY_MEDIA_VOLUME); + } + + @Override public String getPreferenceKey() { return KEY_MEDIA_VOLUME; } diff --git a/src/com/android/settings/notification/NotificationVolumePreferenceController.java b/src/com/android/settings/notification/NotificationVolumePreferenceController.java index c3c8793cf2..5995462053 100644 --- a/src/com/android/settings/notification/NotificationVolumePreferenceController.java +++ b/src/com/android/settings/notification/NotificationVolumePreferenceController.java @@ -18,6 +18,7 @@ package com.android.settings.notification; import android.content.Context; import android.media.AudioManager; +import android.text.TextUtils; import com.android.settings.R; import com.android.settings.Utils; @@ -39,6 +40,11 @@ public class NotificationVolumePreferenceController extends } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), KEY_NOTIFICATION_VOLUME); + } + + @Override public String getPreferenceKey() { return KEY_NOTIFICATION_VOLUME; } diff --git a/src/com/android/settings/notification/RingVolumePreferenceController.java b/src/com/android/settings/notification/RingVolumePreferenceController.java index 2ae12c450d..a1c17c7180 100644 --- a/src/com/android/settings/notification/RingVolumePreferenceController.java +++ b/src/com/android/settings/notification/RingVolumePreferenceController.java @@ -29,6 +29,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.Vibrator; +import android.text.TextUtils; import com.android.settings.R; import com.android.settings.Utils; @@ -90,6 +91,11 @@ public class RingVolumePreferenceController extends VolumeSeekBarPreferenceContr } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), KEY_RING_VOLUME); + } + + @Override public int getAudioStream() { return AudioManager.STREAM_RING; } diff --git a/src/com/android/settings/notification/VibrateWhenRingPreferenceController.java b/src/com/android/settings/notification/VibrateWhenRingPreferenceController.java index 7f26731852..ae111b2081 100644 --- a/src/com/android/settings/notification/VibrateWhenRingPreferenceController.java +++ b/src/com/android/settings/notification/VibrateWhenRingPreferenceController.java @@ -24,6 +24,8 @@ import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; import android.provider.Settings; +import android.text.TextUtils; + import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -64,6 +66,11 @@ public class VibrateWhenRingPreferenceController extends TogglePreferenceControl } @Override + public boolean isSliceable() { + return TextUtils.equals(getPreferenceKey(), "vibrate_when_ringing"); + } + + @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); Preference preference = screen.findPreference(KEY_VIBRATE_WHEN_RINGING); diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java index 907ede2d3a..6a03ea0966 100644 --- a/src/com/android/settings/slices/SettingsSliceProvider.java +++ b/src/com/android/settings/slices/SettingsSliceProvider.java @@ -23,9 +23,11 @@ import android.content.ContentResolver; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; +import android.provider.Settings; import android.provider.SettingsSlicesContract; import android.text.TextUtils; import android.util.ArraySet; +import android.util.KeyValueListParser; import android.util.Log; import android.util.Pair; @@ -42,6 +44,7 @@ import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -115,10 +118,13 @@ public class SettingsSliceProvider extends SliceProvider { @VisibleForTesting Map<Uri, SliceData> mSliceDataCache; + private final KeyValueListParser mParser; + final Set<Uri> mRegisteredUris = new ArraySet<>(); public SettingsSliceProvider() { super(READ_SEARCH_INDEXABLES); + mParser = new KeyValueListParser(','); } @Override @@ -352,4 +358,32 @@ public class SettingsSliceProvider extends SliceProvider { SliceBroadcastRelay.registerReceiver(getContext(), sliceUri, SliceBroadcastReceiver.class, intentFilter); } + + @VisibleForTesting + Set<String> getBlockedKeys() { + final String value = Settings.Global.getString(getContext().getContentResolver(), + Settings.Global.BLOCKED_SLICES); + final Set<String> set = new ArraySet<>(); + + try { + mParser.setString(value); + } catch (IllegalArgumentException e) { + Log.e(TAG, "Bad Settings Slices Whitelist flags", e); + return set; + } + + final String[] parsedValues = parseStringArray(value); + Collections.addAll(set, parsedValues); + return set; + } + + private String[] parseStringArray(String value) { + if (value != null) { + String[] parts = value.split(":"); + if (parts.length > 0) { + return parts; + } + } + return new String[0]; + } } diff --git a/src/com/android/settings/slices/SliceDataConverter.java b/src/com/android/settings/slices/SliceDataConverter.java index 7bd66baa39..bfe090e846 100644 --- a/src/com/android/settings/slices/SliceDataConverter.java +++ b/src/com/android/settings/slices/SliceDataConverter.java @@ -19,7 +19,6 @@ package com.android.settings.slices; import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_CONTROLLER; import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_ICON; import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_KEY; -import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_KEYWORDS; import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_PLATFORM_SLICE_FLAG; import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_SUMMARY; import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_TITLE; @@ -44,6 +43,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.accessibility.AccessibilitySettings; import com.android.settings.accessibility.AccessibilitySlicePreferenceController; +import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceXmlParserUtils; import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag; import com.android.settings.dashboard.DashboardFragment; @@ -194,6 +194,7 @@ class SliceDataConverter { if (TextUtils.isEmpty(controllerClassName)) { continue; } + final String key = bundle.getString(METADATA_KEY); final String title = bundle.getString(METADATA_TITLE); final String summary = bundle.getString(METADATA_SUMMARY); @@ -214,7 +215,13 @@ class SliceDataConverter { .setPlatformDefined(isPlatformSlice) .build(); - xmlSliceData.add(xmlSlice); + final BasePreferenceController controller = + SliceBuilderUtils.getPreferenceController(mContext, xmlSlice); + + // Only add pre-approved Slices available on the device. + if (controller.isAvailable() && controller.isSliceable()) { + xmlSliceData.add(xmlSlice); + } } } catch (SliceData.InvalidSliceDataException e) { Log.w(TAG, "Invalid data when building SliceData for " + fragmentName, e); diff --git a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java index 624b07fbd9..42d24f8e35 100644 --- a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java @@ -150,4 +150,19 @@ public class AmbientDisplayAlwaysOnPreferenceControllerTest { assertThat(newValue).isEqualTo(currentValue); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final AmbientDisplayAlwaysOnPreferenceController controller = + new AmbientDisplayAlwaysOnPreferenceController(mContext, + "ambient_display_always_on"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final AmbientDisplayAlwaysOnPreferenceController controller = + new AmbientDisplayAlwaysOnPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java index c026a3b7b9..77390d3473 100644 --- a/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java @@ -182,4 +182,19 @@ public class AmbientDisplayNotificationsPreferenceControllerTest { assertThat(newValue).isEqualTo(currentValue); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final AmbientDisplayNotificationsPreferenceController controller = + new AmbientDisplayNotificationsPreferenceController(mContext, + "ambient_display_notification"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final AmbientDisplayNotificationsPreferenceController controller = + new AmbientDisplayNotificationsPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java index 5bd77111db..188cb92a64 100644 --- a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java @@ -93,4 +93,19 @@ public class AutoBrightnessPreferenceControllerTest { assertThat(newValue).isEqualTo(SCREEN_BRIGHTNESS_MODE_AUTOMATIC); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final AutoBrightnessPreferenceController controller = + new AutoBrightnessPreferenceController(mContext, + "auto_brightness"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final AutoBrightnessPreferenceController controller = + new AutoBrightnessPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/display/AutoRotatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoRotatePreferenceControllerTest.java index c4ef0c9225..5a31e3b494 100644 --- a/tests/robotests/src/com/android/settings/display/AutoRotatePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/AutoRotatePreferenceControllerTest.java @@ -104,7 +104,7 @@ public class AutoRotatePreferenceControllerTest { @Test public void testGetAvailabilityStatus() { assertThat(mController.getAvailabilityStatus()).isEqualTo(BasePreferenceController - .CONDITIONALLY_UNAVAILABLE); + .UNSUPPORTED_ON_DEVICE); enableAutoRotationPreference(); @@ -114,7 +114,7 @@ public class AutoRotatePreferenceControllerTest { disableAutoRotationPreference(); assertThat(mController.getAvailabilityStatus()).isEqualTo(BasePreferenceController - .CONDITIONALLY_UNAVAILABLE); + .UNSUPPORTED_ON_DEVICE); } @Test @@ -144,6 +144,20 @@ public class AutoRotatePreferenceControllerTest { assertThat(RotationPolicy.isRotationLocked(mContext)).isFalse(); } + @Test + public void isSliceableCorrectKey_returnsTrue() { + final AutoRotatePreferenceController controller = + new AutoRotatePreferenceController(mContext, "auto_rotate"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final AutoRotatePreferenceController controller = + new AutoRotatePreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } + private void enableAutoRotationPreference() { when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true); when(mContext.getResources().getBoolean(anyInt())).thenReturn(true); diff --git a/tests/robotests/src/com/android/settings/display/NightDisplayActivationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/NightDisplayActivationPreferenceControllerTest.java index 5fa1a473cd..a4b0e54362 100644 --- a/tests/robotests/src/com/android/settings/display/NightDisplayActivationPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/NightDisplayActivationPreferenceControllerTest.java @@ -73,6 +73,20 @@ public class NightDisplayActivationPreferenceControllerTest { } @Test + public void isSliceableCorrectKey_returnsTrue() { + final NightDisplayActivationPreferenceController controller = + new NightDisplayActivationPreferenceController(mContext,"night_display_activated"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final NightDisplayActivationPreferenceController controller = + new NightDisplayActivationPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } + + @Test public void onClick_activates() { Secure.putInt(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 0); diff --git a/tests/robotests/src/com/android/settings/display/NightDisplayIntensityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/NightDisplayIntensityPreferenceControllerTest.java index 1a69b6b84e..40101a4bd7 100644 --- a/tests/robotests/src/com/android/settings/display/NightDisplayIntensityPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/NightDisplayIntensityPreferenceControllerTest.java @@ -76,4 +76,18 @@ public class NightDisplayIntensityPreferenceControllerTest { Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, -1)) .isEqualTo(3030); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final NightDisplayIntensityPreferenceController controller = + new NightDisplayIntensityPreferenceController(mContext,"night_display_temperature"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final NightDisplayIntensityPreferenceController controller = + new NightDisplayIntensityPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java index d681bc36f2..8c0be96d26 100644 --- a/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java @@ -17,10 +17,13 @@ package com.android.settings.gestures; import static android.provider.Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED; + import static com.android.settings.gestures.DoubleTapPowerPreferenceController.OFF; import static com.android.settings.gestures.DoubleTapPowerPreferenceController.ON; import static com.android.settings.gestures.DoubleTapPowerPreferenceController.isSuggestionComplete; + import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.when; import android.content.ContentResolver; @@ -29,6 +32,7 @@ import android.content.SharedPreferences; import android.provider.Settings; import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl; +import com.android.settings.display.AmbientDisplayAlwaysOnPreferenceController; import com.android.settings.search.InlinePayload; import com.android.settings.search.InlineSwitchPayload; import com.android.settings.search.ResultPayload; @@ -67,7 +71,8 @@ public class DoubleTapPowerPreferenceControllerTest { @Test public void isAvailable_configIsTrue_shouldReturnTrue() { SettingsShadowResources.overrideResource( - com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled, Boolean.TRUE); + com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled, + Boolean.TRUE); assertThat(mController.isAvailable()).isTrue(); } @@ -75,7 +80,8 @@ public class DoubleTapPowerPreferenceControllerTest { @Test public void isAvailable_configIsTrue_shouldReturnFalse() { SettingsShadowResources.overrideResource( - com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled, Boolean.FALSE); + com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled, + Boolean.FALSE); assertThat(mController.isAvailable()).isFalse(); } @@ -101,7 +107,7 @@ public class DoubleTapPowerPreferenceControllerTest { @Test public void testPreferenceController_ProperResultPayloadType() { DoubleTapPowerPreferenceController controller = - new DoubleTapPowerPreferenceController(mContext, KEY_DOUBLE_TAP_POWER); + new DoubleTapPowerPreferenceController(mContext, KEY_DOUBLE_TAP_POWER); ResultPayload payload = controller.getResultPayload(); assertThat(payload).isInstanceOf(InlineSwitchPayload.class); } @@ -111,7 +117,7 @@ public class DoubleTapPowerPreferenceControllerTest { public void testSetValue_updatesCorrectly() { int newValue = 1; Settings.Secure.putInt(mContentResolver, - Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, 0); + Settings.Secure.CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED, 0); InlinePayload payload = ((InlineSwitchPayload) mController.getResultPayload()); payload.setValue(mContext, newValue); @@ -148,7 +154,7 @@ public class DoubleTapPowerPreferenceControllerTest { com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled, true); // No stored value in shared preferences if not visited yet. final SharedPreferences prefs = - new SuggestionFeatureProviderImpl(mContext).getSharedPrefs(mContext); + new SuggestionFeatureProviderImpl(mContext).getSharedPrefs(mContext); assertThat(isSuggestionComplete(mContext, prefs)).isFalse(); } @@ -158,9 +164,23 @@ public class DoubleTapPowerPreferenceControllerTest { com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled, true); // No stored value in shared preferences if not visited yet. final SharedPreferences prefs = - new SuggestionFeatureProviderImpl(mContext).getSharedPrefs(mContext); + new SuggestionFeatureProviderImpl(mContext).getSharedPrefs(mContext); prefs.edit().putBoolean(DoubleTapPowerSettings.PREF_KEY_SUGGESTION_COMPLETE, true).commit(); assertThat(isSuggestionComplete(mContext, prefs)).isTrue(); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final DoubleTapPowerPreferenceController controller = + new DoubleTapPowerPreferenceController(mContext, "gesture_double_tap_power"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final DoubleTapPowerPreferenceController controller = + new DoubleTapPowerPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/gestures/DoubleTapScreenPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/DoubleTapScreenPreferenceControllerTest.java index 63a1027615..3d25ac724d 100644 --- a/tests/robotests/src/com/android/settings/gestures/DoubleTapScreenPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/DoubleTapScreenPreferenceControllerTest.java @@ -178,5 +178,20 @@ public class DoubleTapScreenPreferenceControllerTest { final int availabilityStatus = mController.getAvailabilityStatus(); assertThat(availabilityStatus).isEqualTo(AVAILABLE); + + } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final DoubleTapScreenPreferenceController controller = + new DoubleTapScreenPreferenceController(mContext,"gesture_double_tap_screen"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final DoubleTapScreenPreferenceController controller = + new DoubleTapScreenPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); } } diff --git a/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java index 901da37086..0ec5ae1d5b 100644 --- a/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java @@ -155,4 +155,18 @@ public class DoubleTwistPreferenceControllerTest { assertThat(mController.isChecked()).isFalse(); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final DoubleTwistPreferenceController controller = + new DoubleTwistPreferenceController(mContext,"gesture_double_twist"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final DoubleTwistPreferenceController controller = + new DoubleTwistPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/gestures/PickupGesturePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/PickupGesturePreferenceControllerTest.java index 98c32ad9ba..f609373aa7 100644 --- a/tests/robotests/src/com/android/settings/gestures/PickupGesturePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/PickupGesturePreferenceControllerTest.java @@ -170,4 +170,18 @@ public class PickupGesturePreferenceControllerTest { assertThat(availabilityStatus).isEqualTo(AVAILABLE); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final PickupGesturePreferenceController controller = + new PickupGesturePreferenceController(mContext,"gesture_pick_up"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final PickupGesturePreferenceController controller = + new PickupGesturePreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java index c164fbf737..8522229b8e 100644 --- a/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java @@ -168,4 +168,18 @@ public class SwipeToNotificationPreferenceControllerTest { when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) .thenReturn(enabled); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final SwipeToNotificationPreferenceController controller = new + SwipeToNotificationPreferenceController(mContext,"gesture_swipe_down_fingerprint"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final SwipeToNotificationPreferenceController controller = + new SwipeToNotificationPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/gestures/SwipeUpPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/SwipeUpPreferenceControllerTest.java index 3585650a58..a001a4a36a 100644 --- a/tests/robotests/src/com/android/settings/gestures/SwipeUpPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/SwipeUpPreferenceControllerTest.java @@ -123,4 +123,18 @@ public class SwipeUpPreferenceControllerTest { mController.setChecked(false); assertThat(mController.isChecked()).isFalse(); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final SwipeUpPreferenceController controller = + new SwipeUpPreferenceController(mContext,"gesture_swipe_up"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final SwipeUpPreferenceController controller = + new SwipeUpPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java index 47e4b5af94..7613021e15 100644 --- a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java @@ -177,4 +177,18 @@ public class AirplaneModePreferenceControllerTest { assertThat(mPreference.isChecked()).isTrue(); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final AirplaneModePreferenceController controller = + new AirplaneModePreferenceController(mContext,"toggle_airplane"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final AirplaneModePreferenceController controller = + new AirplaneModePreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java index 326e4951cd..68991246ae 100644 --- a/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java @@ -183,4 +183,19 @@ public class BadgingNotificationPreferenceControllerTest { assertThat(updatedValue).isEqualTo(ON); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final BadgingNotificationPreferenceController controller = + new BadgingNotificationPreferenceController(mContext, + "notification_badging"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final BadgingNotificationPreferenceController controller = + new BadgingNotificationPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceControllerTest.java index bed45e5081..f20409a6ab 100644 --- a/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/CallVolumePreferenceControllerTest.java @@ -92,4 +92,18 @@ public class CallVolumePreferenceControllerTest { assertThat(mController.getAudioStream()).isEqualTo(AudioManager.STREAM_BLUETOOTH_SCO); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final CallVolumePreferenceController controller = + new CallVolumePreferenceController(mContext,"call_volume"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final CallVolumePreferenceController controller = + new CallVolumePreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java index 3659a30adc..49fd6d4937 100644 --- a/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java @@ -18,6 +18,7 @@ package com.android.settings.notification; import static com.google.common.truth.Truth.assertThat; +import android.content.Context; import android.media.AudioManager; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -33,9 +34,12 @@ public class MediaVolumePreferenceControllerTest { private MediaVolumePreferenceController mController; + private Context mContext; + @Before public void setUp() { - mController = new MediaVolumePreferenceController(RuntimeEnvironment.application); + mContext = RuntimeEnvironment.application; + mController = new MediaVolumePreferenceController(mContext); } @Test @@ -53,4 +57,11 @@ public class MediaVolumePreferenceControllerTest { public void getAudioStream_shouldReturnMusic() { assertThat(mController.getAudioStream()).isEqualTo(AudioManager.STREAM_MUSIC); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final MediaVolumePreferenceController controller = new MediaVolumePreferenceController( + mContext); + assertThat(controller.isSliceable()).isTrue(); + } } diff --git a/tests/robotests/src/com/android/settings/notification/NotificationVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/NotificationVolumePreferenceControllerTest.java index c209c1befa..9d805e8785 100644 --- a/tests/robotests/src/com/android/settings/notification/NotificationVolumePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/NotificationVolumePreferenceControllerTest.java @@ -95,4 +95,11 @@ public class NotificationVolumePreferenceControllerTest { public void getAudioStream_shouldReturnNotification() { assertThat(mController.getAudioStream()).isEqualTo(AudioManager.STREAM_NOTIFICATION); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final NotificationVolumePreferenceController controller = + new NotificationVolumePreferenceController(mContext); + assertThat(controller.isSliceable()).isTrue(); + } } diff --git a/tests/robotests/src/com/android/settings/notification/RingVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/RingVolumePreferenceControllerTest.java index e0065304fb..65bc7e6c40 100644 --- a/tests/robotests/src/com/android/settings/notification/RingVolumePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/RingVolumePreferenceControllerTest.java @@ -97,4 +97,11 @@ public class RingVolumePreferenceControllerTest { public void getAudioStream_shouldReturnRing() { assertThat(mController.getAudioStream()).isEqualTo(AudioManager.STREAM_RING); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final RingVolumePreferenceController controller = + new RingVolumePreferenceController(mContext); + assertThat(controller.isSliceable()).isTrue(); + } } diff --git a/tests/robotests/src/com/android/settings/notification/VibrateWhenRingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/VibrateWhenRingPreferenceControllerTest.java index 19dd042a91..82357d8f6b 100644 --- a/tests/robotests/src/com/android/settings/notification/VibrateWhenRingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/VibrateWhenRingPreferenceControllerTest.java @@ -183,4 +183,18 @@ public class VibrateWhenRingPreferenceControllerTest { assertThat(shadowContentResolver.getContentObservers( Settings.System.getUriFor(VIBRATE_WHEN_RINGING))).isEmpty(); } + + @Test + public void isSliceableCorrectKey_returnsTrue() { + final VibrateWhenRingPreferenceController controller = + new VibrateWhenRingPreferenceController(mContext, "vibrate_when_ringing"); + assertThat(controller.isSliceable()).isTrue(); + } + + @Test + public void isSliceableIncorrectKey_returnsFalse() { + final VibrateWhenRingPreferenceController controller = + new VibrateWhenRingPreferenceController(mContext, "bad_key"); + assertThat(controller.isSliceable()).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/slices/FakePreferenceController.java b/tests/robotests/src/com/android/settings/slices/FakePreferenceController.java index 6c861dbb34..d0e33f0ec2 100644 --- a/tests/robotests/src/com/android/settings/slices/FakePreferenceController.java +++ b/tests/robotests/src/com/android/settings/slices/FakePreferenceController.java @@ -35,4 +35,9 @@ public class FakePreferenceController extends BasePreferenceController { public int getSliceType() { return SliceData.SliceType.SLIDER; } + + @Override + public boolean isSliceable() { + return true; + } } diff --git a/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java b/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java index 1788d93075..c571d85ccb 100644 --- a/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java +++ b/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java @@ -70,6 +70,11 @@ public class SlicesDatabaseAccessorTest { mAccessor = spy(new SlicesDatabaseAccessor(mContext)); mDb = SlicesDatabaseHelper.getInstance(mContext).getWritableDatabase(); SlicesDatabaseHelper.getInstance(mContext).setIndexedState(); + + // Register the fake a11y Service + ShadowAccessibilityManager shadowAccessibilityManager = Shadow.extract( + RuntimeEnvironment.application.getSystemService(AccessibilityManager.class)); + shadowAccessibilityManager.setInstalledAccessibilityServiceList(new ArrayList<>()); } @After @@ -173,10 +178,6 @@ public class SlicesDatabaseAccessorTest { public void getSliceKeys_indexesDatabase() { // Force new indexing Locale.setDefault(new Locale("ca")); - // Register the fake a11y Service - ShadowAccessibilityManager shadowAccessibilityManager = Shadow.extract( - RuntimeEnvironment.application.getSystemService(AccessibilityManager.class)); - shadowAccessibilityManager.setInstalledAccessibilityServiceList(new ArrayList<>()); final SearchFeatureProvider provider = new SearchFeatureProviderImpl(); final SlicesFeatureProvider sliceProvider = spy(new SlicesFeatureProviderImpl()); final FakeFeatureFactory factory = FakeFeatureFactory.setupForTest(); diff --git a/tests/robotests/src/com/android/settings/testutils/FakeSliderController.java b/tests/robotests/src/com/android/settings/testutils/FakeSliderController.java index 530bdee97f..ca306dad8f 100644 --- a/tests/robotests/src/com/android/settings/testutils/FakeSliderController.java +++ b/tests/robotests/src/com/android/settings/testutils/FakeSliderController.java @@ -53,4 +53,9 @@ public class FakeSliderController extends SliderPreferenceController { return Settings.Global.getInt(mContext.getContentResolver(), AVAILABILITY_KEY, AVAILABLE); } + + @Override + public boolean isSliceable() { + return true; + } } diff --git a/tests/robotests/src/com/android/settings/testutils/FakeToggleController.java b/tests/robotests/src/com/android/settings/testutils/FakeToggleController.java index bae267a622..680a04de10 100644 --- a/tests/robotests/src/com/android/settings/testutils/FakeToggleController.java +++ b/tests/robotests/src/com/android/settings/testutils/FakeToggleController.java @@ -62,4 +62,9 @@ public class FakeToggleController extends TogglePreferenceController { public IntentFilter getIntentFilter() { return INTENT_FILTER; } + + @Override + public boolean isSliceable() { + return true; + } } diff --git a/tests/robotests/src/com/android/settings/testutils/FakeUnavailablePreferenceController.java b/tests/robotests/src/com/android/settings/testutils/FakeUnavailablePreferenceController.java index 1ceaad864e..eef4761ecb 100644 --- a/tests/robotests/src/com/android/settings/testutils/FakeUnavailablePreferenceController.java +++ b/tests/robotests/src/com/android/settings/testutils/FakeUnavailablePreferenceController.java @@ -18,4 +18,9 @@ public class FakeUnavailablePreferenceController extends BasePreferenceControlle return Settings.Global.getInt(mContext.getContentResolver(), AVAILABILITY_KEY, 0); } + + @Override + public boolean isSliceable() { + return true; + } } |