From 9bc32734893f74bc8122ebc9da2f3c2de5099c69 Mon Sep 17 00:00:00 2001 From: Lei Yu Date: Mon, 6 May 2019 16:35:19 -0700 Subject: [PATCH] Update datausage for DataUsagePreferenceController Data usage number was wrong because we didn't set correct subId, this CL fixes this issue. Bug: 132113657 Test: RunSettingsRoboTests Change-Id: If7c9cf2f4709d9a8e5f9a154c02de9484800d6d5 --- .../android/settings/datausage/DataUsageUtils.java | 5 +++-- .../telephony/DataUsagePreferenceController.java | 13 ++----------- .../settings/datausage/DataUsageSummaryTest.java | 9 ++++++++- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java index 283c84f6ec7..68657a48f8e 100644 --- a/src/com/android/settings/datausage/DataUsageUtils.java +++ b/src/com/android/settings/datausage/DataUsageUtils.java @@ -178,9 +178,10 @@ public final class DataUsageUtils { * Returns the default network template based on the availability of mobile data, Wifi. Returns * ethernet template if both mobile data and Wifi are not available. */ - static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) { + public static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) { if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - TelephonyManager telephonyManager = TelephonyManager.from(context); + TelephonyManager telephonyManager = TelephonyManager.from(context) + .createForSubscriptionId(defaultSubId); NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll( telephonyManager.getSubscriberId(defaultSubId)); return NetworkTemplate.normalize(mobileAll, diff --git a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java index 3f55003801f..b8a31fe1852 100644 --- a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java +++ b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java @@ -21,9 +21,7 @@ import android.content.Intent; import android.net.NetworkTemplate; import android.provider.Settings; import android.telephony.SubscriptionManager; -import android.telephony.TelephonyManager; import android.text.TextUtils; -import android.text.format.Formatter; import androidx.preference.Preference; @@ -87,9 +85,10 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro mSubId = subId; if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - mTemplate = getNetworkTemplate(mContext, subId); + mTemplate = DataUsageUtils.getDefaultTemplate(mContext, mSubId); final DataUsageController controller = new DataUsageController(mContext); + controller.setSubscriptionId(mSubId); mDataUsageInfo = controller.getDataUsageInfo(mTemplate); mIntent = new Intent(Settings.ACTION_MOBILE_DATA_USAGE); @@ -97,12 +96,4 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro mIntent.putExtra(Settings.EXTRA_SUB_ID, mSubId); } } - - private NetworkTemplate getNetworkTemplate(Context context, int subId) { - final TelephonyManager tm = TelephonyManager.from(context).createForSubscriptionId(subId); - NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(tm.getSubscriberId()); - - return NetworkTemplate.normalize(mobileAll, tm.getMergedSubscriberIds()); - } - } diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java index 79c3ad10cbf..b9bfcc1e66a 100644 --- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java @@ -27,11 +27,13 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.app.usage.NetworkStatsManager; import android.content.Context; import android.net.NetworkPolicyManager; import android.telephony.SubscriptionManager; +import android.telephony.TelephonyManager; import androidx.fragment.app.FragmentActivity; @@ -44,6 +46,7 @@ import com.android.settings.testutils.shadow.ShadowUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; @@ -68,6 +71,8 @@ public class DataUsageSummaryTest { private NetworkPolicyManager mNetworkPolicyManager; @Mock private NetworkStatsManager mNetworkStatsManager; + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private TelephonyManager mTelephonyManager; private Context mContext; private FragmentActivity mActivity; private SummaryLoader.SummaryProvider mSummaryProvider; @@ -84,7 +89,9 @@ public class DataUsageSummaryTest { ShadowUserManager.getShadow().setIsAdminUser(true); shadowContext.setSystemService(Context.NETWORK_POLICY_SERVICE, mNetworkPolicyManager); - mContext = RuntimeEnvironment.application; + mContext = spy(RuntimeEnvironment.application); + when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager); + when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager); mActivity = spy(Robolectric.buildActivity(FragmentActivity.class).get()); doReturn(mNetworkStatsManager).when(mActivity).getSystemService(NetworkStatsManager.class);