Convert xml based API allowDynamicSummaryInSlice to java

- Add boolean useDynamicSliceSummary() in Sliceable interface. This is
  the switch equivalent to android:allowDynamicSummaryInSlice in xml. It
  moves the setter closer to regular Sliceable APIs, thus less easily to
  miss.
- Coverted all android:allowDynamicSummaryInSlice to use the java API.
  - Except 2 prefs in my_device_info. They incorrectly set this to true
  previously (controller is not sliceable, no point setting
  dynamicSliceSummary to true. They just won't do anything)

Fixes: 128446156
Test: robolectric
Change-Id: Ic57acd590dec3e87dcf4592df137321d14b854d9
This commit is contained in:
Fan Zhang
2019-03-29 15:43:46 -07:00
parent 961f038c4d
commit b1b07e2030
38 changed files with 108 additions and 224 deletions

View File

@@ -72,8 +72,6 @@
<attr name="controller" format="string" />
<!-- {@code true} when the controller declared represents a slice from {@link android.app.SettingsSliceContract} -->
<attr name="platform_slice" format="boolean" />
<!-- Whether or not dynamic summary text from PreferenceController is allowed when creating slice object, by default it's false. -->
<attr name="allowDynamicSummaryInSlice" format="boolean" />
<!-- customized subtitle if it's an unavailable slice -->
<attr name="unavailableSliceSubtitle" format="string" />
</declare-styleable>

View File

@@ -28,7 +28,6 @@
android:title="@string/firmware_version"
android:summary="@string/summary_placeholder"
settings:enableCopying="true"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.deviceinfo.firmwareversion.FirmwareVersionDetailPreferenceController"/>
<!-- Security patch -->
@@ -68,7 +67,6 @@
android:title="@string/build_number"
android:summary="@string/summary_placeholder"
settings:enableCopying="true"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.deviceinfo.firmwareversion.SimpleBuildNumberPreferenceController"/>
</PreferenceScreen>

View File

@@ -27,7 +27,6 @@
android:key="hardware_info_device_model"
android:title="@string/model_info"
android:summary="@string/summary_placeholder"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.deviceinfo.hardwareinfo.DeviceModelPreferenceController"
settings:enableCopying="true"/>
@@ -36,7 +35,6 @@
android:key="hardware_info_device_serial"
android:title="@string/status_serial_number"
android:summary="@string/summary_placeholder"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.deviceinfo.hardwareinfo.SerialNumberPreferenceController"
settings:enableCopying="true"/>
@@ -45,7 +43,6 @@
android:key="hardware_info_device_revision"
android:title="@string/hardware_revision"
android:summary="@string/summary_placeholder"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.deviceinfo.hardwareinfo.HardwareRevisionPreferenceController"
settings:enableCopying="true"/>

View File

@@ -52,7 +52,6 @@
android:title="@string/status_number"
android:summary="@string/summary_placeholder"
android:selectable="false"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.deviceinfo.PhoneNumberPreferenceController"
settings:enableCopying="true"/>
@@ -104,7 +103,6 @@
android:title="@string/hardware_info"
settings:keywords="@string/keywords_model_and_hardware"
android:summary="@string/summary_placeholder"
settings:allowDynamicSummaryInSlice="true"
android:fragment="com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFragment"
settings:controller="com.android.settings.deviceinfo.HardwareInfoPreferenceController"/>
@@ -115,7 +113,6 @@
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"/>
<!-- Android version -->
@@ -124,7 +121,6 @@
android:order="32"
android:title="@string/firmware_version"
android:summary="@string/summary_placeholder"
settings:allowDynamicSummaryInSlice="true"
android:fragment="com.android.settings.deviceinfo.firmwareversion.FirmwareVersionSettings"
settings:controller="com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceController"/>

View File

@@ -28,7 +28,6 @@
android:icon="@drawable/ic_volume_remote"
android:title="@string/remote_media_volume_option_title"
android:order="-185"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.notification.RemoteVolumePreferenceController"/>
<!-- Media volume -->
@@ -37,7 +36,6 @@
android:icon="@drawable/ic_media_stream"
android:title="@string/media_volume_option_title"
android:order="-180"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.notification.MediaVolumePreferenceController"/>
<!-- Media output switcher -->
@@ -54,7 +52,6 @@
android:icon="@drawable/ic_local_phone_24_lib"
android:title="@string/call_volume_option_title"
android:order="-170"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.notification.CallVolumePreferenceController"/>
<!-- Hands free profile output switcher -->
@@ -71,7 +68,6 @@
android:icon="@drawable/ic_notifications"
android:title="@string/ring_volume_option_title"
android:order="-160"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.notification.RingVolumePreferenceController"/>
@@ -81,7 +77,6 @@
android:icon="@*android:drawable/ic_audio_alarm"
android:title="@string/alarm_volume_option_title"
android:order="-150"
settings:allowDynamicSummaryInSlice="true"
settings:controller="com.android.settings.notification.AlarmVolumePreferenceController"/>
<!-- Notification volume -->

View File

@@ -72,7 +72,6 @@ public class PreferenceXmlParserUtils {
MetadataFlag.FLAG_NEED_PREF_SUMMARY,
MetadataFlag.FLAG_NEED_PREF_ICON,
MetadataFlag.FLAG_NEED_SEARCHABLE,
MetadataFlag.FLAG_ALLOW_DYNAMIC_SUMMARY_IN_SLICE,
MetadataFlag.FLAG_UNAVAILABLE_SLICE_SUBTITLE})
@Retention(RetentionPolicy.SOURCE)
public @interface MetadataFlag {
@@ -87,9 +86,8 @@ public class PreferenceXmlParserUtils {
int FLAG_NEED_PLATFORM_SLICE_FLAG = 1 << 7;
int FLAG_NEED_KEYWORDS = 1 << 8;
int FLAG_NEED_SEARCHABLE = 1 << 9;
int FLAG_ALLOW_DYNAMIC_SUMMARY_IN_SLICE = 1 << 10;
int FLAG_NEED_PREF_APPEND = 1 << 11;
int FLAG_UNAVAILABLE_SLICE_SUBTITLE = 1 << 12;
int FLAG_NEED_PREF_APPEND = 1 << 10;
int FLAG_UNAVAILABLE_SLICE_SUBTITLE = 1 << 11;
}
public static final String METADATA_PREF_TYPE = "type";
@@ -101,8 +99,6 @@ public class PreferenceXmlParserUtils {
public static final String METADATA_PLATFORM_SLICE_FLAG = "platform_slice";
public static final String METADATA_KEYWORDS = "keywords";
public static final String METADATA_SEARCHABLE = "searchable";
public static final String METADATA_ALLOW_DYNAMIC_SUMMARY_IN_SLICE =
"allow_dynamic_summary_in_slice";
public static final String METADATA_APPEND = "staticPreferenceLocation";
public static final String METADATA_UNAVAILABLE_SLICE_SUBTITLE =
"unavailable_slice_subtitle";
@@ -246,10 +242,6 @@ public class PreferenceXmlParserUtils {
preferenceMetadata.putBoolean(METADATA_SEARCHABLE,
isSearchable(preferenceAttributes));
}
if (hasFlag(flags, MetadataFlag.FLAG_ALLOW_DYNAMIC_SUMMARY_IN_SLICE)) {
preferenceMetadata.putBoolean(METADATA_ALLOW_DYNAMIC_SUMMARY_IN_SLICE,
isDynamicSummaryAllowed(preferenceAttributes));
}
if (hasFlag(flags, MetadataFlag.FLAG_NEED_PREF_APPEND) && hasPrefScreenFlag) {
preferenceMetadata.putBoolean(METADATA_APPEND,
isAppended(preferenceScreenAttributes));
@@ -267,14 +259,6 @@ public class PreferenceXmlParserUtils {
return metadata;
}
/**
* Returns the fragment name if this preference launches a child fragment.
*/
public static String getDataChildFragment(Context context, AttributeSet attrs) {
return getStringData(context, attrs, R.styleable.Preference,
R.styleable.Preference_android_fragment);
}
/**
* Call {@link #extractMetadata(Context, int, int)} with a {@link MetadataFlag} instead.
*/
@@ -342,11 +326,6 @@ public class PreferenceXmlParserUtils {
return styledAttributes.getBoolean(R.styleable.Preference_searchable, true /* default */);
}
private static boolean isDynamicSummaryAllowed(TypedArray styledAttributes) {
return styledAttributes.getBoolean(R.styleable.Preference_allowDynamicSummaryInSlice,
false /* default */);
}
private static String getKeywords(TypedArray styledAttributes) {
return styledAttributes.getString(R.styleable.Preference_keywords);
}

View File

@@ -101,6 +101,11 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
return true;
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public void copy() {
final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(

View File

@@ -58,6 +58,11 @@ public class FirmwareVersionDetailPreferenceController extends BasePreferenceCon
return AVAILABLE;
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public boolean isSliceable() {
return true;

View File

@@ -55,6 +55,11 @@ public class SimpleBuildNumberPreferenceController extends BasePreferenceControl
return true;
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public void copy() {
final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(

View File

@@ -44,4 +44,9 @@ public class DeviceModelPreferenceController extends HardwareInfoPreferenceContr
public CharSequence getSummary() {
return HardwareInfoPreferenceController.getDeviceModel();
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
}

View File

@@ -34,6 +34,11 @@ public class HardwareRevisionPreferenceController extends BasePreferenceControll
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public boolean isSliceable() {
return true;

View File

@@ -45,6 +45,11 @@ public class SerialNumberPreferenceController extends BasePreferenceController {
return true;
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public void copy() {
Sliceable.setCopyContent(mContext, getSummary(),

View File

@@ -110,6 +110,11 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
return true;
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public void copy() {
Sliceable.setCopyContent(mContext, getSummary(), mContext.getText(R.string.status_imei));

View File

@@ -26,7 +26,6 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import com.android.settings.accounts.AccountRestrictionHelper;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SliderPreferenceController;
import com.android.settingslib.RestrictedPreference;
@@ -35,7 +34,7 @@ import com.android.settingslib.RestrictedPreference;
* restriction
*/
public abstract class AdjustVolumeRestrictedPreferenceController extends
SliderPreferenceController implements PreferenceControllerMixin {
SliderPreferenceController {
private AccountRestrictionHelper mHelper;

View File

@@ -22,8 +22,7 @@ import android.text.TextUtils;
import com.android.settings.R;
public class AlarmVolumePreferenceController extends
VolumeSeekBarPreferenceController {
public class AlarmVolumePreferenceController extends VolumeSeekBarPreferenceController {
private static final String KEY_ALARM_VOLUME = "alarm_volume";
@@ -42,6 +41,11 @@ public class AlarmVolumePreferenceController extends
return TextUtils.equals(getPreferenceKey(), "alarm_volume");
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public String getPreferenceKey() {
return KEY_ALARM_VOLUME;

View File

@@ -43,6 +43,11 @@ public class CallVolumePreferenceController extends VolumeSeekBarPreferenceContr
return TextUtils.equals(getPreferenceKey(), "call_volume");
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public int getAudioStream() {
if (mAudioManager.isBluetoothScoOn()) {

View File

@@ -22,8 +22,7 @@ import android.text.TextUtils;
import com.android.settings.R;
public class MediaVolumePreferenceController extends
VolumeSeekBarPreferenceController {
public class MediaVolumePreferenceController extends VolumeSeekBarPreferenceController {
private static final String KEY_MEDIA_VOLUME = "media_volume";
@@ -43,6 +42,11 @@ public class MediaVolumePreferenceController extends
return TextUtils.equals(getPreferenceKey(), KEY_MEDIA_VOLUME);
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public String getPreferenceKey() {
return KEY_MEDIA_VOLUME;

View File

@@ -37,8 +37,7 @@ import java.io.IOException;
import java.util.List;
import java.util.Objects;
public class RemoteVolumePreferenceController extends
VolumeSeekBarPreferenceController {
public class RemoteVolumePreferenceController extends VolumeSeekBarPreferenceController {
private static final String KEY_REMOTE_VOLUME = "remote_volume";
@VisibleForTesting
@@ -167,6 +166,11 @@ public class RemoteVolumePreferenceController extends
return TextUtils.equals(getPreferenceKey(), KEY_REMOTE_VOLUME);
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public String getPreferenceKey() {
return KEY_REMOTE_VOLUME;

View File

@@ -95,6 +95,11 @@ public class RingVolumePreferenceController extends VolumeSeekBarPreferenceContr
return TextUtils.equals(getPreferenceKey(), KEY_RING_VOLUME);
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
@Override
public int getAudioStream() {
return AudioManager.STREAM_RING;

View File

@@ -207,7 +207,7 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
if (System.getProperty(SYSPROP_CRASH_ON_ERROR) != null) {
throw new RuntimeException(e);
}
Log.e(TAG, "Error trying to get non-indexable keys from: " + clazz.getName() , e);
Log.e(TAG, "Error trying to get non-indexable keys from: " + clazz.getName(), e);
continue;
}

View File

@@ -188,8 +188,8 @@ public class SliceBuilderUtils {
* @return the summary text for a {@link Slice} built for {@param sliceData}.
*/
public static CharSequence getSubtitleText(Context context,
AbstractPreferenceController controller, SliceData sliceData) {
final boolean isDynamicSummaryAllowed = sliceData.isDynamicSummaryAllowed();
BasePreferenceController controller, SliceData sliceData) {
final boolean isDynamicSummaryAllowed = controller.useDynamicSliceSummary();
CharSequence summaryText = controller.getSummary();
// Priority 1 : User prefers showing the dynamic summary in slice view rather than static

View File

@@ -73,8 +73,6 @@ public class SliceData {
private final boolean mIsPlatformDefined;
private final boolean mIsDynamicSummaryAllowed;
private final String mUnavailableSliceSubtitle;
public String getKey() {
@@ -121,10 +119,6 @@ public class SliceData {
return mIsPlatformDefined;
}
public boolean isDynamicSummaryAllowed() {
return mIsDynamicSummaryAllowed;
}
public String getUnavailableSliceSubtitle() {
return mUnavailableSliceSubtitle;
}
@@ -141,7 +135,6 @@ public class SliceData {
mPreferenceController = builder.mPrefControllerClassName;
mSliceType = builder.mSliceType;
mIsPlatformDefined = builder.mIsPlatformDefined;
mIsDynamicSummaryAllowed = builder.mIsDynamicSummaryAllowed;
mUnavailableSliceSubtitle = builder.mUnavailableSliceSubtitle;
}
@@ -182,8 +175,6 @@ public class SliceData {
private boolean mIsPlatformDefined;
private boolean mIsDynamicSummaryAllowed;
private String mUnavailableSliceSubtitle;
public Builder setKey(String key) {
@@ -241,11 +232,6 @@ public class SliceData {
return this;
}
public Builder setDynamicSummaryAllowed(boolean isDynamicSummaryAllowed) {
mIsDynamicSummaryAllowed = isDynamicSummaryAllowed;
return this;
}
public Builder setUnavailableSliceSubtitle(
String unavailableSliceSubtitle) {
mUnavailableSliceSubtitle = unavailableSliceSubtitle;

View File

@@ -16,7 +16,6 @@
package com.android.settings.slices;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_ALLOW_DYNAMIC_SUMMARY_IN_SLICE;
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;
@@ -189,7 +188,6 @@ class SliceDataConverter {
| MetadataFlag.FLAG_NEED_PREF_ICON
| MetadataFlag.FLAG_NEED_PREF_SUMMARY
| MetadataFlag.FLAG_NEED_PLATFORM_SLICE_FLAG
| MetadataFlag.FLAG_ALLOW_DYNAMIC_SUMMARY_IN_SLICE
| MetadataFlag.FLAG_UNAVAILABLE_SLICE_SUBTITLE);
for (Bundle bundle : metadata) {
@@ -207,8 +205,6 @@ class SliceDataConverter {
final int sliceType = SliceBuilderUtils.getSliceType(mContext, controllerClassName,
key);
final boolean isPlatformSlice = bundle.getBoolean(METADATA_PLATFORM_SLICE_FLAG);
final boolean isDynamicSummaryAllowed = bundle.getBoolean(
METADATA_ALLOW_DYNAMIC_SUMMARY_IN_SLICE);
final String unavailableSliceSubtitle = bundle.getString(
METADATA_UNAVAILABLE_SLICE_SUBTITLE);
@@ -222,7 +218,6 @@ class SliceDataConverter {
.setFragmentName(fragmentName)
.setSliceType(sliceType)
.setPlatformDefined(isPlatformSlice)
.setDynamicSummaryAllowed(isDynamicSummaryAllowed)
.setUnavailableSliceSubtitle(unavailableSliceSubtitle)
.build();

View File

@@ -78,6 +78,13 @@ public interface Sliceable {
return false;
}
/**
* Whether or not summary comes from something dynamic (ie, not hardcoded in xml)
*/
default boolean useDynamicSliceSummary() {
return false;
}
/**
* Set the copy content to the clipboard and show the toast.
*/

View File

@@ -49,7 +49,6 @@ public class SlicesDatabaseAccessor {
IndexColumns.CONTROLLER,
IndexColumns.PLATFORM_SLICE,
IndexColumns.SLICE_TYPE,
IndexColumns.ALLOW_DYNAMIC_SUMMARY_IN_SLICE,
IndexColumns.UNAVAILABLE_SLICE_SUBTITLE,
};
@@ -166,8 +165,6 @@ public class SlicesDatabaseAccessor {
cursor.getColumnIndex(IndexColumns.CONTROLLER));
final boolean isPlatformDefined = cursor.getInt(
cursor.getColumnIndex(IndexColumns.PLATFORM_SLICE)) == TRUE;
final boolean isDynamicSummaryAllowed = cursor.getInt(
cursor.getColumnIndex(IndexColumns.ALLOW_DYNAMIC_SUMMARY_IN_SLICE)) == TRUE;
int sliceType = cursor.getInt(
cursor.getColumnIndex(IndexColumns.SLICE_TYPE));
final String unavailableSliceSubtitle = cursor.getString(
@@ -189,7 +186,6 @@ public class SlicesDatabaseAccessor {
.setUri(uri)
.setPlatformDefined(isPlatformDefined)
.setSliceType(sliceType)
.setDynamicSummaryAllowed(isDynamicSummaryAllowed)
.setUnavailableSliceSubtitle(unavailableSliceSubtitle)
.build();
}

View File

@@ -36,7 +36,7 @@ public class SlicesDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "slices_index.db";
private static final String SHARED_PREFS_TAG = "slices_shared_prefs";
private static final int DATABASE_VERSION = 4;
private static final int DATABASE_VERSION = 5;
public interface Tables {
String TABLE_SLICES_INDEX = "slices_index";
@@ -94,12 +94,6 @@ public class SlicesDatabaseHelper extends SQLiteOpenHelper {
*/
String SLICE_TYPE = "slice_type";
/**
* Boolean flag, {@code true} when the slice object prefers using the dynamic summary from
* preference controller.
*/
String ALLOW_DYNAMIC_SUMMARY_IN_SLICE = "allow_dynamic_summary_in_slice";
/**
* Customized subtitle if it's a unavailable slice
*/
@@ -129,8 +123,6 @@ public class SlicesDatabaseHelper extends SQLiteOpenHelper {
", " +
IndexColumns.SLICE_TYPE +
", " +
IndexColumns.ALLOW_DYNAMIC_SUMMARY_IN_SLICE +
", " +
IndexColumns.UNAVAILABLE_SLICE_SUBTITLE +
");";

View File

@@ -110,8 +110,6 @@ class SlicesIndexer implements Runnable {
values.put(IndexColumns.CONTROLLER, dataRow.getPreferenceController());
values.put(IndexColumns.PLATFORM_SLICE, dataRow.isPlatformDefined());
values.put(IndexColumns.SLICE_TYPE, dataRow.getSliceType());
values.put(IndexColumns.ALLOW_DYNAMIC_SUMMARY_IN_SLICE,
dataRow.isDynamicSummaryAllowed());
values.put(IndexColumns.UNAVAILABLE_SLICE_SUBTITLE,
dataRow.getUnavailableSliceSubtitle());

View File

@@ -25,15 +25,13 @@
android:title="title"
android:icon="@drawable/ic_android"
android:summary="summary1"
settings:controller="com.android.settings.core.BadPreferenceController"
settings:allowDynamicSummaryInSlice="true"/>
settings:controller="com.android.settings.core.BadPreferenceController"/>
<Preference
android:key="key2"
android:title="title"
android:icon="@drawable/ic_android"
android:summary="summary2"
settings:controller="com.android.settings.slices.FakePreferenceController"
settings:allowDynamicSummaryInSlice="true"/>
settings:controller="com.android.settings.slices.FakePreferenceController"/>
</PreferenceScreen>

View File

@@ -27,7 +27,6 @@
settings:controller="com.android.settings.slices.FakePreferenceController"
settings:keywords="a, b, c"
settings:platform_slice="true"
settings:allowDynamicSummaryInSlice="true"
settings:unavailableSliceSubtitle="subtitleOfUnavailableSlice"/>
</PreferenceScreen>

View File

@@ -29,4 +29,9 @@ public class BadPreferenceController extends BasePreferenceController {
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
}

View File

@@ -16,7 +16,6 @@
package com.android.settings.core;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_ALLOW_DYNAMIC_SUMMARY_IN_SLICE;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_APPEND;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_KEY;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_KEYWORDS;
@@ -293,30 +292,6 @@ public class PreferenceXmlParserUtilsTest {
assertThat(foundKey).isTrue();
}
@Test
@Config(qualifiers = "mcc999")
public void extractMetadata_requestIsDynamicSummaryAllowed_shouldDefaultToFalse()
throws Exception {
final List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(mContext,
R.xml.display_settings, MetadataFlag.FLAG_ALLOW_DYNAMIC_SUMMARY_IN_SLICE);
for (Bundle bundle : metadata) {
assertThat(bundle.getBoolean(METADATA_ALLOW_DYNAMIC_SUMMARY_IN_SLICE)).isFalse();
}
}
@Test
@Config(qualifiers = "mcc998")
public void extractMetadata_requestIsDynamicSummaryAllowed_shouldReturnAttributeValue()
throws Exception {
final List<Bundle> metadata = PreferenceXmlParserUtils.extractMetadata(mContext,
R.xml.location_settings, MetadataFlag.FLAG_ALLOW_DYNAMIC_SUMMARY_IN_SLICE);
for (Bundle bundle : metadata) {
assertThat(bundle.getBoolean(METADATA_ALLOW_DYNAMIC_SUMMARY_IN_SLICE)).isTrue();
}
}
@Test
@Config(qualifiers = "mcc999")
public void extractMetadata_requestAppendProperty_shouldDefaultToFalse()

View File

@@ -40,4 +40,9 @@ public class FakePreferenceController extends BasePreferenceController {
public boolean isSliceable() {
return true;
}
@Override
public boolean useDynamicSliceSummary() {
return true;
}
}

View File

@@ -69,7 +69,6 @@ public class SliceBuilderUtilsTest {
private final Class SLIDER_CONTROLLER = FakeSliderController.class;
private final Class COPYABLE_CONTROLLER = FakeCopyableController.class;
private final Class CONTEXT_CONTROLLER = FakeContextOnlyPreferenceController.class;
private final boolean IS_DYNAMIC_SUMMARY_ALLOWED = false;
private final String INTENT_PATH = SettingsSlicesContract.PATH_SETTING_INTENT + "/" + KEY;
private final String ACTION_PATH = SettingsSlicesContract.PATH_SETTING_ACTION + "/" + KEY;
@@ -206,7 +205,7 @@ public class SliceBuilderUtilsTest {
@Test
public void getDynamicSummary_allowDynamicSummary_returnsControllerSummary() {
final SliceData data = getDummyData(true /*isDynamicSummaryAllowed*/);
final SliceData data = getDummyData();
final FakePreferenceController controller = spy(
new FakePreferenceController(mContext, KEY));
final String controllerSummary = "new_Summary";
@@ -219,27 +218,17 @@ public class SliceBuilderUtilsTest {
@Test
public void getDynamicSummary_allowDynamicSummary_nullSummary_returnsNull() {
final SliceData data = getDummyData(true /*isDynamicSummaryAllowed*/);
final SliceData data = getDummyData();
final FakePreferenceController controller = spy(
new FakePreferenceController(mContext, KEY));
final String controllerSummary = null;
doReturn(controllerSummary).when(controller).getSummary();
doReturn(null).when(controller).getSummary();
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isNull();
}
@Test
public void getDynamicSummary_returnsScreenTitle() {
final SliceData data = getDummyData();
final FakePreferenceController controller = new FakePreferenceController(mContext, KEY);
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isEqualTo(data.getScreenTitle());
}
@Test
public void getDynamicSummary_noScreenTitle_returnsPrefControllerSummary() {
final SliceData data = getDummyData("", "");
@@ -272,17 +261,7 @@ public class SliceBuilderUtilsTest {
final FakePreferenceController controller = new FakePreferenceController(mContext, KEY);
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isEqualTo("");
}
@Test
public void
getDynamicSummary_emptyScreenTitle_placeHolderControllerSummary_returnsEmptyString() {
final SliceData data = getDummyData(mContext.getString(R.string.summary_placeholder), null);
final FakePreferenceController controller = new FakePreferenceController(mContext, KEY);
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isEqualTo("");
assertThat(summary).isNull();
}
@Test
@@ -295,7 +274,7 @@ public class SliceBuilderUtilsTest {
CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isEqualTo("");
assertThat(summary).isEqualTo(summaryPlaceholder);
}
@Test
@@ -449,7 +428,7 @@ public class SliceBuilderUtilsTest {
R.drawable.ic_settings_accent).toIcon().getResId();
final SliceData data = getDummyData(FakeUnavailablePreferenceController.class,
SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE, 0 /* icon */,
IS_DYNAMIC_SUMMARY_ALLOWED, null /* unavailableSliceSubtitle */);
null /* unavailableSliceSubtitle */);
Settings.Global.putInt(mContext.getContentResolver(),
FakeUnavailablePreferenceController.AVAILABILITY_KEY,
BasePreferenceController.DISABLED_DEPENDENT_SETTING);
@@ -523,7 +502,7 @@ public class SliceBuilderUtilsTest {
final String subtitleOfUnavailableSlice = "subtitleOfUnavailableSlice";
final SliceData data = getDummyData(FakeUnavailablePreferenceController.class,
SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE, 0 /* icon */,
IS_DYNAMIC_SUMMARY_ALLOWED, subtitleOfUnavailableSlice);
subtitleOfUnavailableSlice);
Settings.Global.putInt(mContext.getContentResolver(),
FakeUnavailablePreferenceController.AVAILABILITY_KEY,
BasePreferenceController.DISABLED_DEPENDENT_SETTING);
@@ -551,32 +530,26 @@ public class SliceBuilderUtilsTest {
private SliceData getDummyData() {
return getDummyData(TOGGLE_CONTROLLER, SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE,
ICON, IS_DYNAMIC_SUMMARY_ALLOWED, null /* unavailableSliceSubtitle */);
}
private SliceData getDummyData(boolean isDynamicSummaryAllowed) {
return getDummyData(TOGGLE_CONTROLLER, SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE,
ICON, isDynamicSummaryAllowed, null /* unavailableSliceSubtitle */);
ICON, null /* unavailableSliceSubtitle */);
}
private SliceData getDummyData(Class prefController, int sliceType, int icon) {
return getDummyData(prefController, SUMMARY, sliceType, SCREEN_TITLE,
icon, IS_DYNAMIC_SUMMARY_ALLOWED, null /* unavailableSliceSubtitle */);
icon, null /* unavailableSliceSubtitle */);
}
private SliceData getDummyData(String summary, String screenTitle) {
return getDummyData(TOGGLE_CONTROLLER, summary, SliceData.SliceType.SWITCH, screenTitle,
ICON, IS_DYNAMIC_SUMMARY_ALLOWED, null /* unavailableSliceSubtitle */);
ICON, null /* unavailableSliceSubtitle */);
}
private SliceData getDummyData(Class prefController, int sliceType) {
return getDummyData(prefController, SUMMARY, sliceType, SCREEN_TITLE, ICON,
IS_DYNAMIC_SUMMARY_ALLOWED, null /* unavailableSliceSubtitle */);
null /* unavailableSliceSubtitle */);
}
private SliceData getDummyData(Class prefController, String summary, int sliceType,
String screenTitle, int icon, boolean isDynamicSummaryAllowed,
String unavailableSliceSubtitle) {
String screenTitle, int icon, String unavailableSliceSubtitle) {
return new SliceData.Builder()
.setKey(KEY)
.setTitle(TITLE)
@@ -588,7 +561,6 @@ public class SliceBuilderUtilsTest {
.setUri(URI)
.setPreferenceControllerClassName(prefController.getName())
.setSliceType(sliceType)
.setDynamicSummaryAllowed(isDynamicSummaryAllowed)
.setUnavailableSliceSubtitle(unavailableSliceSubtitle)
.build();
}

View File

@@ -124,7 +124,6 @@ public class SliceDataConverterTest {
assertThat(fakeSlice.getPreferenceController()).isEqualTo(FAKE_CONTROLLER_NAME);
assertThat(fakeSlice.getSliceType()).isEqualTo(SliceData.SliceType.SLIDER);
assertThat(fakeSlice.isPlatformDefined()).isTrue(); // from XML
assertThat(fakeSlice.isDynamicSummaryAllowed()).isTrue(); // from XML
assertThat(fakeSlice.getUnavailableSliceSubtitle()).isEqualTo(
"subtitleOfUnavailableSlice"); // from XML
}

View File

@@ -38,7 +38,6 @@ public class SliceDataTest {
private final String PREF_CONTROLLER = "com.android.settings.slices.tester";
private final int SLICE_TYPE = SliceData.SliceType.SWITCH;
private final boolean IS_PLATFORM_DEFINED = true;
private final boolean IS_DYNAMIC_SUMMARY_ALLOWED = true;
private final String UNAVAILABLE_SLICE_SUBTITLE = "subtitleOfUnavailableSlice";
@Test
@@ -55,7 +54,6 @@ public class SliceDataTest {
.setPreferenceControllerClassName(PREF_CONTROLLER)
.setSliceType(SLICE_TYPE)
.setPlatformDefined(IS_PLATFORM_DEFINED)
.setDynamicSummaryAllowed(IS_DYNAMIC_SUMMARY_ALLOWED)
.setUnavailableSliceSubtitle(UNAVAILABLE_SLICE_SUBTITLE);
SliceData data = builder.build();
@@ -71,7 +69,6 @@ public class SliceDataTest {
assertThat(data.getPreferenceController()).isEqualTo(PREF_CONTROLLER);
assertThat(data.getSliceType()).isEqualTo(SLICE_TYPE);
assertThat(data.isPlatformDefined()).isEqualTo(IS_PLATFORM_DEFINED);
assertThat(data.isDynamicSummaryAllowed()).isEqualTo(IS_DYNAMIC_SUMMARY_ALLOWED);
assertThat(data.getUnavailableSliceSubtitle()).isEqualTo(UNAVAILABLE_SLICE_SUBTITLE);
}
@@ -220,31 +217,6 @@ public class SliceDataTest {
assertThat(data.getPreferenceController()).isEqualTo(PREF_CONTROLLER);
}
@Test
public void testBuilder_noDynamicSummaryAllowed_buildsMatchingObject() {
SliceData.Builder builder = new SliceData.Builder()
.setKey(KEY)
.setTitle(TITLE)
.setSummary(SUMMARY)
.setScreenTitle(SCREEN_TITLE)
.setIcon(ICON)
.setFragmentName(FRAGMENT_NAME)
.setUri(URI)
.setPreferenceControllerClassName(PREF_CONTROLLER);
SliceData data = builder.build();
assertThat(data.getKey()).isEqualTo(KEY);
assertThat(data.getTitle()).isEqualTo(TITLE);
assertThat(data.getSummary()).isEqualTo(SUMMARY);
assertThat(data.getScreenTitle()).isEqualTo(SCREEN_TITLE);
assertThat(data.getIconResource()).isEqualTo(ICON);
assertThat(data.getFragmentClassName()).isEqualTo(FRAGMENT_NAME);
assertThat(data.getUri()).isEqualTo(URI);
assertThat(data.getPreferenceController()).isEqualTo(PREF_CONTROLLER);
assertThat(data.isDynamicSummaryAllowed()).isFalse();
}
@Test
public void testEquality_identicalObjects() {
SliceData.Builder builder = new SliceData.Builder()
@@ -255,8 +227,7 @@ public class SliceDataTest {
.setIcon(ICON)
.setFragmentName(FRAGMENT_NAME)
.setUri(URI)
.setPreferenceControllerClassName(PREF_CONTROLLER)
.setDynamicSummaryAllowed(IS_DYNAMIC_SUMMARY_ALLOWED);
.setPreferenceControllerClassName(PREF_CONTROLLER);
SliceData dataOne = builder.build();
SliceData dataTwo = builder.build();

View File

@@ -108,14 +108,13 @@ public class SlicesDatabaseAccessorTest {
assertThat(data.getFragmentClassName()).isEqualTo(FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isNull();
assertThat(data.getPreferenceController()).isEqualTo(FAKE_CONTROLLER_NAME);
assertThat(data.isDynamicSummaryAllowed()).isFalse(); /* default value */
assertThat(data.getUnavailableSliceSubtitle()).isNull();
}
@Test
public void testGetSliceDataFromKey_allowDynamicSummary_validSliceReturned() {
String key = "key";
insertSpecialCase(key, true /* isPlatformSlice */, true /* isDynamicSummaryAllowed */,
insertSpecialCase(key, true /* isPlatformSlice */,
null /* customizedUnavailableSliceSubtitle */);
SliceData data = mAccessor.getSliceDataFromKey(key);
@@ -129,27 +128,6 @@ public class SlicesDatabaseAccessorTest {
assertThat(data.getFragmentClassName()).isEqualTo(FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isNull();
assertThat(data.getPreferenceController()).isEqualTo(FAKE_CONTROLLER_NAME);
assertThat(data.isDynamicSummaryAllowed()).isTrue();
}
@Test
public void testGetSliceDataFromKey_doNotAllowDynamicSummary_validSliceReturned() {
String key = "key";
insertSpecialCase(key, true /* isPlatformSlice */, false /* isDynamicSummaryAllowed */,
null /* customizedUnavailableSliceSubtitle */);
SliceData data = mAccessor.getSliceDataFromKey(key);
assertThat(data.getKey()).isEqualTo(key);
assertThat(data.getTitle()).isEqualTo(FAKE_TITLE);
assertThat(data.getSummary()).isEqualTo(FAKE_SUMMARY);
assertThat(data.getScreenTitle()).isEqualTo(FAKE_SCREEN_TITLE);
assertThat(data.getKeywords()).isEqualTo(FAKE_KEYWORDS);
assertThat(data.getIconResource()).isEqualTo(FAKE_ICON);
assertThat(data.getFragmentClassName()).isEqualTo(FAKE_FRAGMENT_NAME);
assertThat(data.getUri()).isNull();
assertThat(data.getPreferenceController()).isEqualTo(FAKE_CONTROLLER_NAME);
assertThat(data.isDynamicSummaryAllowed()).isFalse();
}
@Test(expected = IllegalStateException.class)
@@ -249,7 +227,7 @@ public class SlicesDatabaseAccessorTest {
@Test
public void testGetSliceDataFromKey_defaultUnavailableSlice_validSliceReturned() {
String key = "key";
insertSpecialCase(key, true /* isPlatformSlice */, true /* isDynamicSummaryAllowed */,
insertSpecialCase(key, true /* isPlatformSlice */,
null /* customizedUnavailableSliceSubtitle */);
SliceData data = mAccessor.getSliceDataFromKey(key);
@@ -270,8 +248,7 @@ public class SlicesDatabaseAccessorTest {
public void testGetSliceDataFromKey_customizeSubtitleOfUnavailableSlice_validSliceReturned() {
String key = "key";
String subtitle = "subtitle";
insertSpecialCase(key, true /* isPlatformSlice */, true /* isDynamicSummaryAllowed */,
subtitle);
insertSpecialCase(key, true /* isPlatformSlice */, subtitle);
SliceData data = mAccessor.getSliceDataFromKey(key);
@@ -292,12 +269,11 @@ public class SlicesDatabaseAccessorTest {
}
private void insertSpecialCase(String key, boolean isPlatformSlice) {
insertSpecialCase(key, isPlatformSlice, false /* isDynamicSummaryAllowed */,
null /*customizedUnavailableSliceSubtitle*/);
insertSpecialCase(key, isPlatformSlice, null /*customizedUnavailableSliceSubtitle*/);
}
private void insertSpecialCase(String key, boolean isPlatformSlice,
boolean isDynamicSummaryAllowed, String customizedUnavailableSliceSubtitle) {
String customizedUnavailableSliceSubtitle) {
ContentValues values = new ContentValues();
values.put(SlicesDatabaseHelper.IndexColumns.KEY, key);
values.put(SlicesDatabaseHelper.IndexColumns.TITLE, FAKE_TITLE);
@@ -308,8 +284,6 @@ public class SlicesDatabaseAccessorTest {
values.put(SlicesDatabaseHelper.IndexColumns.FRAGMENT, FAKE_FRAGMENT_NAME);
values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, FAKE_CONTROLLER_NAME);
values.put(SlicesDatabaseHelper.IndexColumns.PLATFORM_SLICE, isPlatformSlice);
values.put(SlicesDatabaseHelper.IndexColumns.ALLOW_DYNAMIC_SUMMARY_IN_SLICE,
isDynamicSummaryAllowed);
values.put(SlicesDatabaseHelper.IndexColumns.SLICE_TYPE, SliceData.SliceType.INTENT);
values.put(SlicesDatabaseHelper.IndexColumns.UNAVAILABLE_SLICE_SUBTITLE,
customizedUnavailableSliceSubtitle);

View File

@@ -74,7 +74,6 @@ public class SlicesDatabaseHelperTest {
IndexColumns.CONTROLLER,
IndexColumns.PLATFORM_SLICE,
IndexColumns.SLICE_TYPE,
IndexColumns.ALLOW_DYNAMIC_SUMMARY_IN_SLICE,
IndexColumns.UNAVAILABLE_SLICE_SUBTITLE,
};

View File

@@ -53,7 +53,6 @@ public class SlicesIndexerTest {
private final Uri URI = Uri.parse("content://com.android.settings.slices/test");
private final String PREF_CONTROLLER = "com.android.settings.slices.tester";
private final boolean PLATFORM_DEFINED = true;
private final boolean IS_DYNAMIC_SUMMARY_ALLOWED = true;
private final int SLICE_TYPE = SliceData.SliceType.SLIDER;
private final String UNAVAILABLE_SLICE_SUBTITLE = "subtitleOfUnavailableSlice";
@@ -142,10 +141,6 @@ public class SlicesIndexerTest {
.isEqualTo(1 /* true */);
assertThat(cursor.getInt(cursor.getColumnIndex(IndexColumns.SLICE_TYPE)))
.isEqualTo(SLICE_TYPE);
assertThat(cursor.getInt(
cursor.getColumnIndex(
IndexColumns.ALLOW_DYNAMIC_SUMMARY_IN_SLICE)))
.isEqualTo(1 /* true */);
assertThat(cursor.getString(
cursor.getColumnIndex(IndexColumns.UNAVAILABLE_SLICE_SUBTITLE)))
.isEqualTo(UNAVAILABLE_SLICE_SUBTITLE);
@@ -183,7 +178,6 @@ public class SlicesIndexerTest {
.setPreferenceControllerClassName(PREF_CONTROLLER)
.setPlatformDefined(PLATFORM_DEFINED)
.setSliceType(SLICE_TYPE)
.setDynamicSummaryAllowed(IS_DYNAMIC_SUMMARY_ALLOWED)
.setUnavailableSliceSubtitle(UNAVAILABLE_SLICE_SUBTITLE);
for (int i = 0; i < KEYS.length; i++) {