diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java index aa6619755d1..735532a5e2c 100644 --- a/src/com/android/settings/datausage/DataUsageList.java +++ b/src/com/android/settings/datausage/DataUsageList.java @@ -135,8 +135,8 @@ public class DataUsageList extends DataUsageBaseFragment { mUidDetailProvider = new UidDetailProvider(activity); mTelephonyManager = activity.getSystemService(TelephonyManager.class); mUsageAmount = findPreference(KEY_USAGE_AMOUNT); - mChart = (ChartDataUsagePreference) findPreference(KEY_CHART_DATA); - mApps = (PreferenceGroup) findPreference(KEY_APPS_GROUP); + mChart = findPreference(KEY_CHART_DATA); + mApps = findPreference(KEY_APPS_GROUP); processArgument(); } @@ -306,7 +306,7 @@ public class DataUsageList extends DataUsageBaseFragment { getLoaderManager().restartLoader(LOADER_SUMMARY, null /* args */, mNetworkStatsDetailCallbacks); - final long totalBytes = mCycleData != null + final long totalBytes = mCycleData != null && !mCycleData.isEmpty() ? mCycleData.get(mCycleSpinner.getSelectedItemPosition()).getTotalUsage() : 0; final CharSequence totalPhrase = DataUsageUtils.formatDataUsage(getActivity(), totalBytes); mUsageAmount.setTitle(getString(R.string.data_used_template, totalPhrase)); diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java index 36614103184..ad4e1e21708 100644 --- a/src/com/android/settings/datausage/DataUsageSummary.java +++ b/src/com/android/settings/datausage/DataUsageSummary.java @@ -87,7 +87,7 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage boolean hasMobileData = DataUsageUtils.hasMobileData(context); - int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(context); + final int defaultSubId = SubscriptionManager.getDefaultDataSubscriptionId(); if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { hasMobileData = false; } diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java index 66f916e9962..79c3ad10cbf 100644 --- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.verify; import android.app.usage.NetworkStatsManager; import android.content.Context; import android.net.NetworkPolicyManager; +import android.telephony.SubscriptionManager; import androidx.fragment.app.FragmentActivity; @@ -50,6 +51,7 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; +import org.robolectric.shadows.ShadowSubscriptionManager; @Config(shadows = { ShadowUtils.class, @@ -114,10 +116,11 @@ public class DataUsageSummaryTest { } @Test + @Config(shadows = ShadowSubscriptionManager.class) public void configuration_withSim_shouldShowMobileAndWifi() { ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true; ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true; - ShadowDataUsageUtils.DEFAULT_SUBSCRIPTION_ID = 1; + ShadowSubscriptionManager.setDefaultDataSubscriptionId(1); ShadowDataUsageUtils.HAS_SIM = true; final DataUsageSummary dataUsageSummary = spy(new DataUsageSummary()); @@ -170,4 +173,26 @@ public class DataUsageSummaryTest { verify(dataUsageSummary).addWifiSection(); verify(dataUsageSummary, never()).addMobileSection(anyInt()); } + + @Test + @Config(shadows = ShadowSubscriptionManager.class) + public void configuration_invalidDataSusbscription_shouldShowWifiSectionOnly() { + ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true; + ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true; + ShadowDataUsageUtils.HAS_SIM = false; + ShadowSubscriptionManager.setDefaultDataSubscriptionId( + SubscriptionManager.INVALID_SUBSCRIPTION_ID); + + final DataUsageSummary dataUsageSummary = spy(new DataUsageSummary()); + doReturn(mContext).when(dataUsageSummary).getContext(); + + doReturn(true).when(dataUsageSummary).removePreference(anyString()); + doNothing().when(dataUsageSummary).addWifiSection(); + doNothing().when(dataUsageSummary).addMobileSection(1); + + dataUsageSummary.onCreate(null); + + verify(dataUsageSummary).addWifiSection(); + verify(dataUsageSummary, never()).addMobileSection(anyInt()); + } }