Merge "A new attribute which can show the dynamic summary"

This commit is contained in:
TreeHugger Robot
2018-09-28 02:38:12 +00:00
committed by Android (Google) Code Review
17 changed files with 210 additions and 16 deletions

View File

@@ -16,6 +16,8 @@
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_KEY;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_KEYWORDS;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_SEARCHABLE;
@@ -289,6 +291,30 @@ 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();
}
}
/**
* @param resId the ID for the XML preference
* @return an XML resource parser that points to the start tag

View File

@@ -70,6 +70,7 @@ public class SliceBuilderUtilsTest {
private final Class TOGGLE_CONTROLLER = FakeToggleController.class;
private final Class SLIDER_CONTROLLER = FakeSliderController.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;
@@ -205,6 +206,19 @@ public class SliceBuilderUtilsTest {
assertThat(controller).isInstanceOf(FakeContextOnlyPreferenceController.class);
}
@Test
public void getDynamicSummary_allowDynamicSummary_returnsControllerSummary() {
final SliceData data = getDummyData(true /*isDynamicSummaryAllowed*/);
final FakePreferenceController controller = spy(
new FakePreferenceController(mContext, KEY));
final String controllerSummary = "new_Summary";
doReturn(controllerSummary).when(controller).getSummary();
final CharSequence summary = SliceBuilderUtils.getSubtitleText(mContext, controller, data);
assertThat(summary).isEqualTo(controllerSummary);
}
@Test
public void getDynamicSummary_returnsScreenTitle() {
final SliceData data = getDummyData();
@@ -470,25 +484,31 @@ public class SliceBuilderUtilsTest {
private SliceData getDummyData() {
return getDummyData(TOGGLE_CONTROLLER, SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE,
ICON);
ICON, IS_DYNAMIC_SUMMARY_ALLOWED);
}
private SliceData getDummyData(boolean isDynamicSummaryAllowed) {
return getDummyData(TOGGLE_CONTROLLER, SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE,
ICON, isDynamicSummaryAllowed);
}
private SliceData getDummyData(Class prefController, int sliceType, int icon) {
return getDummyData(TOGGLE_CONTROLLER, SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE,
icon);
icon, IS_DYNAMIC_SUMMARY_ALLOWED);
}
private SliceData getDummyData(String summary, String screenTitle) {
return getDummyData(TOGGLE_CONTROLLER, summary, SliceData.SliceType.SWITCH, screenTitle,
ICON);
ICON, IS_DYNAMIC_SUMMARY_ALLOWED);
}
private SliceData getDummyData(Class prefController, int sliceType) {
return getDummyData(prefController, SUMMARY, sliceType, SCREEN_TITLE, ICON);
return getDummyData(prefController, SUMMARY, sliceType, SCREEN_TITLE, ICON,
IS_DYNAMIC_SUMMARY_ALLOWED);
}
private SliceData getDummyData(Class prefController, String summary, int sliceType,
String screenTitle, int icon) {
String screenTitle, int icon, boolean isDynamicSummaryAllowed) {
return new SliceData.Builder()
.setKey(KEY)
.setTitle(TITLE)
@@ -500,6 +520,7 @@ public class SliceBuilderUtilsTest {
.setUri(URI)
.setPreferenceControllerClassName(prefController.getName())
.setSliceType(sliceType)
.setDynamicSummaryAllowed(isDynamicSummaryAllowed)
.build();
}
}

View File

@@ -124,6 +124,7 @@ 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
}
private void assertFakeA11ySlice(SliceData fakeSlice) {

View File

@@ -39,6 +39,7 @@ 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;
@Test
public void testBuilder_buildsMatchingObject() {
@@ -53,7 +54,8 @@ public class SliceDataTest {
.setUri(URI)
.setPreferenceControllerClassName(PREF_CONTROLLER)
.setSliceType(SLICE_TYPE)
.setPlatformDefined(IS_PLATFORM_DEFINED);
.setPlatformDefined(IS_PLATFORM_DEFINED)
.setDynamicSummaryAllowed(IS_DYNAMIC_SUMMARY_ALLOWED);
SliceData data = builder.build();
@@ -68,6 +70,7 @@ 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);
}
@Test(expected = SliceData.InvalidSliceDataException.class)
@@ -216,7 +219,7 @@ public class SliceDataTest {
}
@Test
public void testEquality_identicalObjects() {
public void testBuilder_noDynamicSummaryAllowed_buildsMatchingObject() {
SliceData.Builder builder = new SliceData.Builder()
.setKey(KEY)
.setTitle(TITLE)
@@ -227,6 +230,32 @@ public class SliceDataTest {
.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()
.setKey(KEY)
.setTitle(TITLE)
.setSummary(SUMMARY)
.setScreenTitle(SCREEN_TITLE)
.setIcon(ICON)
.setFragmentName(FRAGMENT_NAME)
.setUri(URI)
.setPreferenceControllerClassName(PREF_CONTROLLER)
.setDynamicSummaryAllowed(IS_DYNAMIC_SUMMARY_ALLOWED);
SliceData dataOne = builder.build();
SliceData dataTwo = builder.build();

View File

@@ -97,6 +97,45 @@ 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 */
}
@Test
public void testGetSliceDataFromKey_allowDynamicSummary_validSliceReturned() {
String key = "key";
insertSpecialCase(key, true /* isPlatformSlice */, true /* isDynamicSummaryAllowed */);
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()).isTrue();
}
@Test
public void testGetSliceDataFromKey_doNotAllowDynamicSummary_validSliceReturned() {
String key = "key";
insertSpecialCase(key, true /* isPlatformSlice */, false /* isDynamicSummaryAllowed */);
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)
@@ -198,6 +237,11 @@ public class SlicesDatabaseAccessorTest {
}
private void insertSpecialCase(String key, boolean isPlatformSlice) {
insertSpecialCase(key, isPlatformSlice, false /* isDynamicSummaryAllowed */);
}
private void insertSpecialCase(String key, boolean isPlatformSlice,
boolean isDynamicSummaryAllowed) {
ContentValues values = new ContentValues();
values.put(SlicesDatabaseHelper.IndexColumns.KEY, key);
values.put(SlicesDatabaseHelper.IndexColumns.TITLE, FAKE_TITLE);
@@ -208,6 +252,8 @@ 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);
mDb.replaceOrThrow(SlicesDatabaseHelper.Tables.TABLE_SLICES_INDEX, null, values);

View File

@@ -73,6 +73,7 @@ public class SlicesDatabaseHelperTest {
IndexColumns.CONTROLLER,
IndexColumns.PLATFORM_SLICE,
IndexColumns.SLICE_TYPE,
IndexColumns.ALLOW_DYNAMIC_SUMMARY_IN_SLICE,
};
assertThat(columnNames).isEqualTo(expectedNames);

View File

@@ -53,6 +53,7 @@ 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 Context mContext;
@@ -131,6 +132,9 @@ public class SlicesIndexerTest {
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 */);
cursor.moveToNext();
}
}
@@ -154,7 +158,8 @@ public class SlicesIndexerTest {
.setUri(URI)
.setPreferenceControllerClassName(PREF_CONTROLLER)
.setPlatformDefined(PLATFORM_DEFINED)
.setSliceType(SLICE_TYPE);
.setSliceType(SLICE_TYPE)
.setDynamicSummaryAllowed(IS_DYNAMIC_SUMMARY_ALLOWED);
for (int i = 0; i < KEYS.length; i++) {
builder.setKey(KEYS[i]).setTitle(TITLES[i]);