From bc10c0014961adf32cb0d3519e649b51de3755b8 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Thu, 23 Apr 2020 19:48:36 +0800 Subject: [PATCH] [Settings] Support the display of data usage when SIM inactive SIM can be inactive but remain existed within slot. Therefore, change the design here. Bug: 143996139 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataUsageSummaryPreferenceControllerTest Change-Id: I24ec529b120b2801f7b9089b07d32bdd1038883f --- .../DataUsageSummaryPreferenceController.java | 23 +++++----- ...aUsageSummaryPreferenceControllerTest.java | 43 ------------------- 2 files changed, 10 insertions(+), 56 deletions(-) diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java index 135abfa930e..648b38c7e87 100644 --- a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java +++ b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java @@ -120,14 +120,14 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc mContext.getSystemService(NetworkPolicyManager.class); mPolicyEditor = new NetworkPolicyEditor(policyManager); - mHasMobileData = SubscriptionManager.isValidSubscriptionId(mSubId) - && DataUsageUtils.hasMobileData(mContext); + mHasMobileData = DataUsageUtils.hasMobileData(mContext); mDataUsageController = new DataUsageController(mContext); mDataUsageController.setSubscriptionId(mSubId); mDataInfoController = new DataUsageInfoController(); - if (mHasMobileData) { + final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId); + if (subInfo != null) { mDataUsageTemplate = R.string.cell_data_template; } else if (DataUsageUtils.hasWifiRadio(mContext)) { mDataUsageTemplate = R.string.wifi_data_template; @@ -180,18 +180,16 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc @VisibleForTesting SubscriptionInfo getSubscriptionInfo(int subscriptionId) { + if (!mHasMobileData) { + return null; + } return ProxySubscriptionManager.getInstance(mContext) .getAccessibleSubscriptionInfo(subscriptionId); } - @VisibleForTesting - boolean hasSim() { - return DataUsageUtils.hasSim(mContext); - } - @Override public int getAvailabilityStatus(int subId) { - return hasSim() + return (getSubscriptionInfo(subId) != null) || DataUsageUtils.hasWifiRadio(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @@ -199,16 +197,15 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc public void updateState(Preference preference) { DataUsageSummaryPreference summaryPreference = (DataUsageSummaryPreference) preference; - final boolean isSimCardAdded = hasSim(); - if (!isSimCardAdded) { + final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId); + if (subInfo == null) { mDefaultTemplate = NetworkTemplate.buildTemplateWifiWildcard(); } final DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo(mDefaultTemplate); - final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId); - if (isSimCardAdded) { + if (subInfo != null) { mDataInfoController.updateDataLimit(info, mPolicyEditor.getPolicy(mDefaultTemplate)); summaryPreference.setWifiMode(/* isWifiMode */ false, /* usagePeriod */ null, /* isSingleWifi */ false); diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java index d6f3e947d87..210f0fd74b5 100644 --- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java @@ -19,7 +19,6 @@ package com.android.settings.datausage; import static android.net.ConnectivityManager.TYPE_WIFI; import static com.android.settings.core.BasePreferenceController.AVAILABLE; -import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.google.common.truth.Truth.assertThat; @@ -159,8 +158,6 @@ public class DataUsageSummaryPreferenceControllerTest { doReturn(CARRIER_NAME).when(mSubscriptionInfo).getCarrierName(); doReturn(mSubscriptionInfo).when(mController).getSubscriptionInfo(mDefaultSubscriptionId); doReturn(mSubscriptionPlans).when(mController).getSubscriptionPlans(mDefaultSubscriptionId); - - doReturn(true).when(mController).hasSim(); } @After @@ -355,56 +352,16 @@ public class DataUsageSummaryPreferenceControllerTest { false /* isSingleWifi */); } - @Test - public void testSummaryUpdate_noSim_shouldSetWifiMode() { - mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID); - mController.mDataUsageController = mDataUsageController; - doReturn(TelephonyManager.SIM_STATE_ABSENT).when(mTelephonyManager).getSimState(); - doReturn(false).when(mController).hasSim(); - - final long now = System.currentTimeMillis(); - final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now); - info.warningLevel = BillingCycleSettings.MIB_IN_BYTES; - info.limitLevel = BillingCycleSettings.MIB_IN_BYTES; - - final Intent intent = new Intent(); - - doReturn(info).when(mDataUsageController).getDataUsageInfo(any()); - setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS); - - mController.updateState(mSummaryPreference); - - verify(mSummaryPreference).setWifiMode(true /* isWifiMode */, info.period /* usagePeriod */, - false /* isSingleWifi */); - verify(mSummaryPreference).setLimitInfo(null); - verify(mSummaryPreference).setUsageNumbers(info.usageLevel, -1L, true); - verify(mSummaryPreference).setChartEnabled(false); - verify(mSummaryPreference).setUsageInfo(info.cycleEnd, -1L, null, 0, null); - } - @Test public void testMobileData_preferenceAvailable() { assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); } - @Test - public void testMobileData_noSimNoWifi_preferenceDisabled() { - final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; - mController.init(subscriptionId); - mController.mDataUsageController = mDataUsageController; - doReturn(TelephonyManager.SIM_STATE_ABSENT).when(mTelephonyManager).getSimState(); - doReturn(false).when(mController).hasSim(); - when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(false); - assertThat(mController.getAvailabilityStatus()) - .isEqualTo(CONDITIONALLY_UNAVAILABLE); - } - @Test public void testMobileData_noSimWifi_preferenceDisabled() { final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; mController.init(subscriptionId); mController.mDataUsageController = mDataUsageController; - doReturn(TelephonyManager.SIM_STATE_ABSENT).when(mTelephonyManager).getSimState(); when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(true); assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); }