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

Commit f88dcfad authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix crash when launching mobile data usage page via intent." into pi-dev

parents baea1c87 681c073f
Loading
Loading
Loading
Loading
+22 −6
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static android.telephony.TelephonyManager.SIM_STATE_READY;
import android.app.ActivityManager;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.Context;
import android.content.Intent;
import android.content.Loader;
import android.content.pm.UserInfo;
import android.graphics.Color;
@@ -39,6 +40,8 @@ import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup;
import android.telephony.SubscriptionInfo;
@@ -98,8 +101,10 @@ public class DataUsageList extends DataUsageBase {
    private INetworkStatsSession mStatsSession;
    private ChartDataUsagePreference mChart;

    private NetworkTemplate mTemplate;
    private int mSubId;
    @VisibleForTesting
    NetworkTemplate mTemplate;
    @VisibleForTesting
    int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    private ChartData mChartData;

    private LoadingViewController mLoadingViewController;
@@ -138,10 +143,7 @@ public class DataUsageList extends DataUsageBase {
        mUsageAmount = findPreference(KEY_USAGE_AMOUNT);
        mChart = (ChartDataUsagePreference) findPreference(KEY_CHART_DATA);
        mApps = (PreferenceGroup) findPreference(KEY_APPS_GROUP);

        final Bundle args = getArguments();
        mSubId = args.getInt(EXTRA_SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
        mTemplate = args.getParcelable(EXTRA_NETWORK_TEMPLATE);
        processArgument();
    }

    @Override
@@ -232,6 +234,20 @@ public class DataUsageList extends DataUsageBase {
        super.onDestroy();
    }

    void processArgument() {
        final Bundle args = getArguments();
        if (args != null) {
            mSubId = args.getInt(EXTRA_SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
            mTemplate = args.getParcelable(EXTRA_NETWORK_TEMPLATE);
        }
        if (mTemplate == null && mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
            final Intent intent = getIntent();
            mSubId = intent.getIntExtra(Settings.EXTRA_SUB_ID,
                    SubscriptionManager.INVALID_SUBSCRIPTION_ID);
            mTemplate = intent.getParcelableExtra(Settings.EXTRA_NETWORK_TEMPLATE);
        }
    }

    /**
     * Update body content based on current tab. Loads
     * {@link NetworkStatsHistory} and {@link NetworkPolicy} from system, and
+37 −2
Original line number Diff line number Diff line
@@ -16,12 +16,19 @@

package com.android.settings.datausage;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkTemplate;
import android.os.Bundle;
import android.provider.Settings;

import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -62,10 +69,38 @@ public class DataUsageListTest {
        mDataUsageList.onAttach(mContext);
        mDataUsageList.onResume();

        verify(mListener).setListener(true, 0, mContext);
        verify(mListener).setListener(true, mDataUsageList.mSubId, mContext);

        mDataUsageList.onPause();

        verify(mListener).setListener(false, 0, mContext);
        verify(mListener).setListener(false, mDataUsageList.mSubId, mContext);
    }

    @Test
    public void processArgument_shouldGetTemplateFromArgument() {
        final Bundle args = new Bundle();
        args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mock(NetworkTemplate.class));
        args.putInt(DataUsageList.EXTRA_SUB_ID, 3);
        mDataUsageList.setArguments(args);

        mDataUsageList.processArgument();

        assertThat(mDataUsageList.mTemplate).isNotNull();
        assertThat(mDataUsageList.mSubId).isEqualTo(3);
    }

    @Test
    public void processArgument_fromIntent_shouldGetTemplateFromIntent() {
        final Activity activity = mock(Activity.class);
        final Intent intent = new Intent();
        intent.putExtra(Settings.EXTRA_NETWORK_TEMPLATE, mock(NetworkTemplate.class));
        intent.putExtra(Settings.EXTRA_SUB_ID, 3);
        when(activity.getIntent()).thenReturn(intent);
        doReturn(activity).when(mDataUsageList).getActivity();

        mDataUsageList.processArgument();

        assertThat(mDataUsageList.mTemplate).isNotNull();
        assertThat(mDataUsageList.mSubId).isEqualTo(3);
    }
}