OSDN Git Service

Use new API to build NetworkTemplate
authorLei Yu <jackqdyulei@google.com>
Tue, 28 May 2019 17:05:44 +0000 (10:05 -0700)
committerLei Yu <jackqdyulei@google.com>
Fri, 31 May 2019 17:19:17 +0000 (10:19 -0700)
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

src/com/android/settings/datausage/BillingCyclePreferenceController.java
src/com/android/settings/datausage/DataUsageSummary.java
src/com/android/settings/datausage/DataUsageUtils.java
tests/robotests/src/com/android/settings/homepage/contextualcards/deviceinfo/DataUsageSliceTest.java

index 0220a12..88bf63c 100644 (file)
@@ -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);
     }
index c3ffdae..6597ecb 100644 (file)
@@ -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();
index 68657a4..bc9499b 100644 (file)
@@ -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<SubscriptionInfo> 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();
         }
     }
+
 }
index b3aae03..13f26e4 100644 (file)
@@ -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));