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

Commit a26a7afe authored by Bonian Chen's avatar Bonian Chen Committed by Android (Google) Code Review
Browse files

Merge "[Settings] Support the display of data usage when SIM inactive" into rvc-dev

parents 79d73eaa bc10c001
Loading
Loading
Loading
Loading
+10 −13
Original line number Diff line number Diff line
@@ -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);
+0 −43
Original line number Diff line number Diff line
@@ -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);
    }