Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ded55a14 authored by Lei Yu's avatar Lei Yu
Browse files

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
parent 76cf0dbd
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -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);
    }
+3 −13
Original line number Diff line number Diff line
@@ -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();
+12 −15
Original line number Diff line number Diff line
@@ -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,7 +72,7 @@ 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);
        boolean hasEthernetUsage = false;
@@ -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();
        }
    }

}
+10 −1
Original line number Diff line number Diff line
@@ -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));