diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java index 5a84d13fa3e..417d74b616c 100644 --- a/src/com/android/settings/datausage/DataUsageSummary.java +++ b/src/com/android/settings/datausage/DataUsageSummary.java @@ -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; @@ -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); - } + resource = new SearchIndexableResource(context); + resource.xmlResId = R.xml.data_usage_cellular; + resources.add(resource); + + resource = new SearchIndexableResource(context); + resource.xmlResId = R.xml.data_usage_wifi; + resources.add(resource); + return resources; } @@ -488,12 +496,19 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs public List getNonIndexableKeys(Context context) { List 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; diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java index 77e0fe9ad9d..e4ad5b59984 100644 --- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java @@ -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; @@ -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 niks = DataUsageSummary.SEARCH_INDEX_DATA_PROVIDER .getNonIndexableKeys(context); final List 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 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 keys = DataUsageSummary.SEARCH_INDEX_DATA_PROVIDER + .getNonIndexableKeys(mContext); + + assertThat(keys).containsExactly(DataUsageSummary.KEY_WIFI_USAGE_TITLE); } } diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDataUsageSummary.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDataUsageSummary.java new file mode 100644 index 00000000000..c5fc601191a --- /dev/null +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDataUsageSummary.java @@ -0,0 +1,24 @@ +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; + } +}