From: Lei Yu Date: Tue, 28 May 2019 17:05:44 +0000 (-0700) Subject: Use new API to build NetworkTemplate X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ded55a140139b381f1f52f082514e2351a9eda20;p=android-x86%2Fpackages-apps-Settings.git Use new API to build NetworkTemplate This CL is built to make CBRS show correct data usage, by merging all subscriberId under same groupuuid. Bug: 133865338 Test: RunSettingsRoboTests Change-Id: I3c717d0f1a1b95aa21c2ccefe4d1cefb4d854cb5 --- diff --git a/src/com/android/settings/datausage/BillingCyclePreferenceController.java b/src/com/android/settings/datausage/BillingCyclePreferenceController.java index 0220a12b81..88bf63c72f 100644 --- a/src/com/android/settings/datausage/BillingCyclePreferenceController.java +++ b/src/com/android/settings/datausage/BillingCyclePreferenceController.java @@ -58,10 +58,7 @@ public class BillingCyclePreferenceController extends BasePreferenceController { services.mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class); services.mUserManager = mContext.getSystemService(UserManager.class); - NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll( - services.mTelephonyManager.getSubscriberId(mSubscriptionId)); - NetworkTemplate template = NetworkTemplate.normalize(mobileAll, - services.mTelephonyManager.getMergedSubscriberIds()); + NetworkTemplate template = DataUsageUtils.getMobileTemplate(mContext, mSubscriptionId); preference.setTemplate(template, mSubscriptionId, services); } diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java index c3ffdaeddf..6597ecb4c8 100644 --- a/src/com/android/settings/datausage/DataUsageSummary.java +++ b/src/com/android/settings/datausage/DataUsageSummary.java @@ -19,7 +19,6 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.net.NetworkTemplate; import android.os.Bundle; -import android.provider.SearchIndexableResource; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionPlan; @@ -37,12 +36,9 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.dashboard.SummaryLoader; -import com.android.settings.search.BaseSearchIndexProvider; -import com.android.settings.search.Indexable; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.net.DataUsageController; -import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; import java.util.List; @@ -91,7 +87,7 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage hasMobileData = false; } mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, defaultSubId); - mSummaryPreference = (DataUsageSummaryPreference) findPreference(KEY_STATUS_HEADER); + mSummaryPreference = findPreference(KEY_STATUS_HEADER); if (!hasMobileData || !isAdmin()) { removePreference(KEY_RESTRICT_BACKGROUND); @@ -155,7 +151,8 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage private void addMobileSection(int subId, SubscriptionInfo subInfo) { TemplatePreferenceCategory category = (TemplatePreferenceCategory) inflatePreferences(R.xml.data_usage_cellular); - category.setTemplate(getNetworkTemplate(subId), subId, services); + category.setTemplate(DataUsageUtils.getMobileTemplate(getContext(), subId), + subId, services); category.pushTemplates(services); if (subInfo != null && !TextUtils.isEmpty(subInfo.getDisplayName())) { Preference title = category.findPreference(KEY_MOBILE_USAGE_TITLE); @@ -189,13 +186,6 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage return pref; } - private NetworkTemplate getNetworkTemplate(int subscriptionId) { - NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll( - services.mTelephonyManager.getSubscriberId(subscriptionId)); - return NetworkTemplate.normalize(mobileAll, - services.mTelephonyManager.getMergedSubscriberIds()); - } - @Override public void onResume() { super.onResume(); diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java index 68657a48f8..bc9499b55d 100644 --- a/src/com/android/settings/datausage/DataUsageUtils.java +++ b/src/com/android/settings/datausage/DataUsageUtils.java @@ -33,12 +33,13 @@ import android.text.format.Formatter; import android.text.format.Formatter.BytesResult; import android.util.Log; +import java.util.ArrayList; import java.util.List; /** * Utility methods for data usage classes. */ -public final class DataUsageUtils { +public final class DataUsageUtils extends com.android.settingslib.net.DataUsageUtils { static final boolean TEST_RADIOS = false; static final String TEST_RADIOS_PROP = "test.radios"; private static final boolean LOGD = false; @@ -71,14 +72,14 @@ public final class DataUsageUtils { return false; } - final TelephonyManager telephonyManager = TelephonyManager.from(context);; + final TelephonyManager telephonyManager = TelephonyManager.from(context); final NetworkStatsManager networkStatsManager = - context.getSystemService(NetworkStatsManager.class); + context.getSystemService(NetworkStatsManager.class); boolean hasEthernetUsage = false; try { final Bucket bucket = networkStatsManager.querySummaryForUser( - ConnectivityManager.TYPE_ETHERNET, telephonyManager.getSubscriberId(), - 0L /* startTime */, System.currentTimeMillis() /* endTime */); + ConnectivityManager.TYPE_ETHERNET, telephonyManager.getSubscriberId(), + 0L /* startTime */, System.currentTimeMillis() /* endTime */); if (bucket != null) { hasEthernetUsage = bucket.getRxBytes() > 0 || bucket.getTxBytes() > 0; } @@ -106,7 +107,7 @@ public final class DataUsageUtils { return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile"); } final List subInfoList = - SubscriptionManager.from(context).getActiveSubscriptionInfoList(true); + SubscriptionManager.from(context).getActiveSubscriptionInfoList(true); // No activated Subscriptions if (subInfoList == null) { if (LOGD) { @@ -127,9 +128,9 @@ public final class DataUsageUtils { final boolean retVal = conn.isNetworkSupported(TYPE_MOBILE) && isReady; if (LOGD) { Log.d(TAG, "hasReadyMobileRadio:" - + " conn.isNetworkSupported(TYPE_MOBILE)=" - + conn.isNetworkSupported(TYPE_MOBILE) - + " isReady=" + isReady); + + " conn.isNetworkSupported(TYPE_MOBILE)=" + + conn.isNetworkSupported(TYPE_MOBILE) + + " isReady=" + isReady); } return retVal; } @@ -180,16 +181,12 @@ public final class DataUsageUtils { */ public static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) { if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - TelephonyManager telephonyManager = TelephonyManager.from(context) - .createForSubscriptionId(defaultSubId); - NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll( - telephonyManager.getSubscriberId(defaultSubId)); - return NetworkTemplate.normalize(mobileAll, - telephonyManager.getMergedSubscriberIds()); + return getMobileTemplate(context, defaultSubId); } else if (hasWifiRadio(context)) { return NetworkTemplate.buildTemplateWifiWildcard(); } else { return NetworkTemplate.buildTemplateEthernet(); } } + } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/deviceinfo/DataUsageSliceTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/deviceinfo/DataUsageSliceTest.java index b3aae034c1..13f26e4b92 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/deviceinfo/DataUsageSliceTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/deviceinfo/DataUsageSliceTest.java @@ -20,7 +20,9 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; +import android.app.usage.NetworkStatsManager; import android.content.Context; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -38,6 +40,8 @@ import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; @@ -50,15 +54,20 @@ public class DataUsageSliceTest { private static final String DATA_USAGE_TITLE = "Data usage"; private static final String DATA_USAGE_SUMMARY = "test_summary"; + @Mock + private NetworkStatsManager mNetworkStatsManager; + private Context mContext; private DataUsageSlice mDataUsageSlice; @Before public void setUp() { - mContext = RuntimeEnvironment.application; + MockitoAnnotations.initMocks(this); + mContext = spy(RuntimeEnvironment.application); // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); + when(mContext.getSystemService(NetworkStatsManager.class)).thenReturn(mNetworkStatsManager); mDataUsageSlice = spy(new DataUsageSlice(mContext));