Loading src/com/android/settings/datausage/DataUsageSummary.java +30 −15 Original line number Diff line number Diff line Loading @@ -72,11 +72,21 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs public static final String TEST_RADIOS_PROP = "test.radios"; public static final String KEY_RESTRICT_BACKGROUND = "restrict_background"; public static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions"; private static final String KEY_STATUS_HEADER = "status_header"; private static final String KEY_LIMIT_SUMMARY = "limit_summary"; private static final String KEY_WIFI_USAGE_TITLE = "wifi_category"; // Mobile data keys public static final String KEY_MOBILE_CATEGORY = "mobile_category"; public static final String KEY_MOBILE_DATA_USAGE_TOGGLE = "data_usage_enable"; public static final String KEY_MOBILE_DATA_USAGE = "cellular_data_usage"; public static final String KEY_MOBILE_BILLING_CYCLE = "billing_preference"; // Wifi keys public static final String KEY_WIFI_USAGE_TITLE = "wifi_category"; public static final String KEY_WIFI_DATA_USAGE = "wifi_data_usage"; public static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions"; private DataUsageController mDataUsageController; private DataUsageInfoController mDataInfoController; Loading Loading @@ -471,16 +481,14 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs resource.xmlResId = R.xml.data_usage; resources.add(resource); if (hasMobileData(context)) { resource = new SearchIndexableResource(context); resource.xmlResId = R.xml.data_usage_cellular; resources.add(resource); } if (hasWifiRadio(context)) { resource = new SearchIndexableResource(context); resource.xmlResId = R.xml.data_usage_wifi; resources.add(resource); } return resources; } Loading @@ -488,12 +496,19 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs public List<String> getNonIndexableKeys(Context context) { List<String> keys = super.getNonIndexableKeys(context); if (hasMobileData(context)) { keys.add(KEY_RESTRICT_BACKGROUND); if (!hasMobileData(context)) { keys.add(KEY_MOBILE_CATEGORY); keys.add(KEY_MOBILE_DATA_USAGE_TOGGLE); keys.add(KEY_MOBILE_DATA_USAGE); keys.add(KEY_MOBILE_BILLING_CYCLE); } if (hasWifiRadio(context)) { if (!hasWifiRadio(context)) { keys.add(KEY_WIFI_DATA_USAGE); keys.add(KEY_NETWORK_RESTRICTIONS); } // This title is named Wifi, and will confuse users. keys.add(KEY_WIFI_USAGE_TITLE); return keys; Loading tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java +29 −5 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.testutils.XmlTestUtils; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.testutils.shadow.ShadowDataUsageSummary; import com.android.settingslib.NetworkPolicyEditor; import org.junit.Before; Loading Loading @@ -149,27 +150,50 @@ public class DataUsageSummaryTest { } @Test @Config(shadows = ShadowDataUsageSummary.class) public void testNonIndexableKeys_existInXmlLayout() { final Context context = RuntimeEnvironment.application; ShadowDataUsageSummary.IS_WIFI_SUPPORTED = true; ShadowDataUsageSummary.IS_MOBILE_DATA_SUPPORTED = true; final List<String> niks = DataUsageSummary.SEARCH_INDEX_DATA_PROVIDER .getNonIndexableKeys(context); final List<String> keys = new ArrayList<>(); keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage_wifi)); keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage)); keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage_cellular)); assertThat(keys).containsAllIn(niks); } @Test @Config(shadows = ShadowConnectivityManager.class) public void testNonIndexableKeys_hasMobileData_restrictedAccessesAdded() { ShadowConnectivityManager.setIsNetworkSupported(true); @Config(shadows = ShadowDataUsageSummary.class) public void testNonIndexableKeys_hasMobileData_hasWifi_allNonIndexableKeysAdded() { ShadowDataUsageSummary.IS_WIFI_SUPPORTED = false; ShadowDataUsageSummary.IS_MOBILE_DATA_SUPPORTED = false; List<String> keys = DataUsageSummary.SEARCH_INDEX_DATA_PROVIDER .getNonIndexableKeys(mContext); assertThat(keys).contains(DataUsageSummary.KEY_RESTRICT_BACKGROUND); // Mobile data keys assertThat(keys).contains(DataUsageSummary.KEY_MOBILE_CATEGORY); assertThat(keys).contains(DataUsageSummary.KEY_MOBILE_DATA_USAGE_TOGGLE); assertThat(keys).contains(DataUsageSummary.KEY_MOBILE_DATA_USAGE); assertThat(keys).contains(DataUsageSummary.KEY_MOBILE_BILLING_CYCLE); // Wifi keys assertThat(keys).contains(DataUsageSummary.KEY_WIFI_DATA_USAGE); assertThat(keys).contains(DataUsageSummary.KEY_NETWORK_RESTRICTIONS); ShadowConnectivityManager.setIsNetworkSupported(false); assertThat(keys).contains(DataUsageSummary.KEY_WIFI_USAGE_TITLE); } @Test @Config(shadows = ShadowDataUsageSummary.class) public void testNonIndexableKeys_noMobile_noWifi_limitedNonIndexableKeys() { ShadowDataUsageSummary.IS_WIFI_SUPPORTED = true; ShadowDataUsageSummary.IS_MOBILE_DATA_SUPPORTED = true; List<String> keys = DataUsageSummary.SEARCH_INDEX_DATA_PROVIDER .getNonIndexableKeys(mContext); assertThat(keys).containsExactly(DataUsageSummary.KEY_WIFI_USAGE_TITLE); } } tests/robotests/src/com/android/settings/testutils/shadow/ShadowDataUsageSummary.java 0 → 100644 +24 −0 Original line number Diff line number Diff line package com.android.settings.testutils.shadow; import android.content.Context; import com.android.settings.datausage.DataUsageSummary; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @Implements(DataUsageSummary.class) public class ShadowDataUsageSummary { public static boolean IS_MOBILE_DATA_SUPPORTED = true; public static boolean IS_WIFI_SUPPORTED = true; @Implementation public static boolean hasMobileData(Context context) { return IS_MOBILE_DATA_SUPPORTED; } @Implementation public static boolean hasWifiRadio(Context context) { return IS_WIFI_SUPPORTED; } } Loading
src/com/android/settings/datausage/DataUsageSummary.java +30 −15 Original line number Diff line number Diff line Loading @@ -72,11 +72,21 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs public static final String TEST_RADIOS_PROP = "test.radios"; public static final String KEY_RESTRICT_BACKGROUND = "restrict_background"; public static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions"; private static final String KEY_STATUS_HEADER = "status_header"; private static final String KEY_LIMIT_SUMMARY = "limit_summary"; private static final String KEY_WIFI_USAGE_TITLE = "wifi_category"; // Mobile data keys public static final String KEY_MOBILE_CATEGORY = "mobile_category"; public static final String KEY_MOBILE_DATA_USAGE_TOGGLE = "data_usage_enable"; public static final String KEY_MOBILE_DATA_USAGE = "cellular_data_usage"; public static final String KEY_MOBILE_BILLING_CYCLE = "billing_preference"; // Wifi keys public static final String KEY_WIFI_USAGE_TITLE = "wifi_category"; public static final String KEY_WIFI_DATA_USAGE = "wifi_data_usage"; public static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions"; private DataUsageController mDataUsageController; private DataUsageInfoController mDataInfoController; Loading Loading @@ -471,16 +481,14 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs resource.xmlResId = R.xml.data_usage; resources.add(resource); if (hasMobileData(context)) { resource = new SearchIndexableResource(context); resource.xmlResId = R.xml.data_usage_cellular; resources.add(resource); } if (hasWifiRadio(context)) { resource = new SearchIndexableResource(context); resource.xmlResId = R.xml.data_usage_wifi; resources.add(resource); } return resources; } Loading @@ -488,12 +496,19 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs public List<String> getNonIndexableKeys(Context context) { List<String> keys = super.getNonIndexableKeys(context); if (hasMobileData(context)) { keys.add(KEY_RESTRICT_BACKGROUND); if (!hasMobileData(context)) { keys.add(KEY_MOBILE_CATEGORY); keys.add(KEY_MOBILE_DATA_USAGE_TOGGLE); keys.add(KEY_MOBILE_DATA_USAGE); keys.add(KEY_MOBILE_BILLING_CYCLE); } if (hasWifiRadio(context)) { if (!hasWifiRadio(context)) { keys.add(KEY_WIFI_DATA_USAGE); keys.add(KEY_NETWORK_RESTRICTIONS); } // This title is named Wifi, and will confuse users. keys.add(KEY_WIFI_USAGE_TITLE); return keys; Loading
tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java +29 −5 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.testutils.XmlTestUtils; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.testutils.shadow.ShadowDataUsageSummary; import com.android.settingslib.NetworkPolicyEditor; import org.junit.Before; Loading Loading @@ -149,27 +150,50 @@ public class DataUsageSummaryTest { } @Test @Config(shadows = ShadowDataUsageSummary.class) public void testNonIndexableKeys_existInXmlLayout() { final Context context = RuntimeEnvironment.application; ShadowDataUsageSummary.IS_WIFI_SUPPORTED = true; ShadowDataUsageSummary.IS_MOBILE_DATA_SUPPORTED = true; final List<String> niks = DataUsageSummary.SEARCH_INDEX_DATA_PROVIDER .getNonIndexableKeys(context); final List<String> keys = new ArrayList<>(); keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage_wifi)); keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage)); keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage_cellular)); assertThat(keys).containsAllIn(niks); } @Test @Config(shadows = ShadowConnectivityManager.class) public void testNonIndexableKeys_hasMobileData_restrictedAccessesAdded() { ShadowConnectivityManager.setIsNetworkSupported(true); @Config(shadows = ShadowDataUsageSummary.class) public void testNonIndexableKeys_hasMobileData_hasWifi_allNonIndexableKeysAdded() { ShadowDataUsageSummary.IS_WIFI_SUPPORTED = false; ShadowDataUsageSummary.IS_MOBILE_DATA_SUPPORTED = false; List<String> keys = DataUsageSummary.SEARCH_INDEX_DATA_PROVIDER .getNonIndexableKeys(mContext); assertThat(keys).contains(DataUsageSummary.KEY_RESTRICT_BACKGROUND); // Mobile data keys assertThat(keys).contains(DataUsageSummary.KEY_MOBILE_CATEGORY); assertThat(keys).contains(DataUsageSummary.KEY_MOBILE_DATA_USAGE_TOGGLE); assertThat(keys).contains(DataUsageSummary.KEY_MOBILE_DATA_USAGE); assertThat(keys).contains(DataUsageSummary.KEY_MOBILE_BILLING_CYCLE); // Wifi keys assertThat(keys).contains(DataUsageSummary.KEY_WIFI_DATA_USAGE); assertThat(keys).contains(DataUsageSummary.KEY_NETWORK_RESTRICTIONS); ShadowConnectivityManager.setIsNetworkSupported(false); assertThat(keys).contains(DataUsageSummary.KEY_WIFI_USAGE_TITLE); } @Test @Config(shadows = ShadowDataUsageSummary.class) public void testNonIndexableKeys_noMobile_noWifi_limitedNonIndexableKeys() { ShadowDataUsageSummary.IS_WIFI_SUPPORTED = true; ShadowDataUsageSummary.IS_MOBILE_DATA_SUPPORTED = true; List<String> keys = DataUsageSummary.SEARCH_INDEX_DATA_PROVIDER .getNonIndexableKeys(mContext); assertThat(keys).containsExactly(DataUsageSummary.KEY_WIFI_USAGE_TITLE); } }
tests/robotests/src/com/android/settings/testutils/shadow/ShadowDataUsageSummary.java 0 → 100644 +24 −0 Original line number Diff line number Diff line package com.android.settings.testutils.shadow; import android.content.Context; import com.android.settings.datausage.DataUsageSummary; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @Implements(DataUsageSummary.class) public class ShadowDataUsageSummary { public static boolean IS_MOBILE_DATA_SUPPORTED = true; public static boolean IS_WIFI_SUPPORTED = true; @Implementation public static boolean hasMobileData(Context context) { return IS_MOBILE_DATA_SUPPORTED; } @Implementation public static boolean hasWifiRadio(Context context) { return IS_WIFI_SUPPORTED; } }