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

Commit f668d7cc authored by Jason Monk's avatar Jason Monk
Browse files

Support data usage changes in Settings

Change-Id: I78c6a3956e7136c3ed64d9323d3fe74df2898c5d
parent e5480cc5
Loading
Loading
Loading
Loading
+19 −8
Original line number Original line Diff line number Diff line
@@ -42,11 +42,11 @@ import static android.telephony.TelephonyManager.SIM_STATE_READY;
import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
import static android.text.format.DateUtils.FORMAT_SHOW_DATE;
import static android.text.format.DateUtils.FORMAT_SHOW_DATE;


public class MobileDataController {
public class DataUsageController {
    private static final String TAG = "MobileDataController";
    private static final String TAG = "DataUsageController";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);


    private static final long DEFAULT_WARNING_LEVEL = 2L * 1024 * 1024 * 1024;
    public static final long DEFAULT_WARNING_LEVEL = 2L * 1024 * 1024 * 1024;
    private static final int FIELDS = FIELD_RX_BYTES | FIELD_TX_BYTES;
    private static final int FIELDS = FIELD_RX_BYTES | FIELD_TX_BYTES;
    private static final StringBuilder PERIOD_BUILDER = new StringBuilder(50);
    private static final StringBuilder PERIOD_BUILDER = new StringBuilder(50);
    private static final java.util.Formatter PERIOD_FORMATTER = new java.util.Formatter(
    private static final java.util.Formatter PERIOD_FORMATTER = new java.util.Formatter(
@@ -62,7 +62,7 @@ public class MobileDataController {
    private Callback mCallback;
    private Callback mCallback;
    private NetworkNameProvider mNetworkController;
    private NetworkNameProvider mNetworkController;


    public MobileDataController(Context context) {
    public DataUsageController(Context context) {
        mContext = context;
        mContext = context;
        mTelephonyManager = TelephonyManager.from(context);
        mTelephonyManager = TelephonyManager.from(context);
        mConnectivityManager = ConnectivityManager.from(context);
        mConnectivityManager = ConnectivityManager.from(context);
@@ -109,16 +109,25 @@ public class MobileDataController {
        if (subscriberId == null) {
        if (subscriberId == null) {
            return warn("no subscriber id");
            return warn("no subscriber id");
        }
        }
        NetworkTemplate template = NetworkTemplate.buildTemplateMobileAll(subscriberId);
        template = NetworkTemplate.normalize(template, mTelephonyManager.getMergedSubscriberIds());

        return getDataUsageInfo(template);
    }

    public DataUsageInfo getWifiDataUsageInfo() {
        NetworkTemplate template = NetworkTemplate.buildTemplateWifiWildcard();
        return getDataUsageInfo(template);
    }

    public DataUsageInfo getDataUsageInfo(NetworkTemplate template) {
        final INetworkStatsSession session = getSession();
        final INetworkStatsSession session = getSession();
        if (session == null) {
        if (session == null) {
            return warn("no stats session");
            return warn("no stats session");
        }
        }
        NetworkTemplate template = NetworkTemplate.buildTemplateMobileAll(subscriberId);
        template = NetworkTemplate.normalize(template, mTelephonyManager.getMergedSubscriberIds());

        final NetworkPolicy policy = findNetworkPolicy(template);
        final NetworkPolicy policy = findNetworkPolicy(template);
        try {
        try {
            final NetworkStatsHistory history = mSession.getHistoryForNetwork(template, FIELDS);
            final NetworkStatsHistory history = session.getHistoryForNetwork(template, FIELDS);
            final long now = System.currentTimeMillis();
            final long now = System.currentTimeMillis();
            final long start, end;
            final long start, end;
            if (policy != null && policy.cycleDay > 0) {
            if (policy != null && policy.cycleDay > 0) {
@@ -153,6 +162,7 @@ public class MobileDataController {
            }
            }
            final long totalBytes = entry.rxBytes + entry.txBytes;
            final long totalBytes = entry.rxBytes + entry.txBytes;
            final DataUsageInfo usage = new DataUsageInfo();
            final DataUsageInfo usage = new DataUsageInfo();
            usage.startDate = start;
            usage.usageLevel = totalBytes;
            usage.usageLevel = totalBytes;
            usage.period = formatDateRange(start, end);
            usage.period = formatDateRange(start, end);
            if (policy != null) {
            if (policy != null) {
@@ -238,6 +248,7 @@ public class MobileDataController {
    public static class DataUsageInfo {
    public static class DataUsageInfo {
        public String carrier;
        public String carrier;
        public String period;
        public String period;
        public long startDate;
        public long limitLevel;
        public long limitLevel;
        public long warningLevel;
        public long warningLevel;
        public long usageLevel;
        public long usageLevel;
+3 −3
Original line number Original line Diff line number Diff line
@@ -24,7 +24,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsLogger;
import com.android.settingslib.net.MobileDataController;
import com.android.settingslib.net.DataUsageController;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.qs.QSIconView;
import com.android.systemui.qs.QSIconView;
import com.android.systemui.qs.QSTile;
import com.android.systemui.qs.QSTile;
@@ -39,7 +39,7 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
            "com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity"));
            "com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity"));


    private final NetworkController mController;
    private final NetworkController mController;
    private final MobileDataController mDataController;
    private final DataUsageController mDataController;
    private final CellularDetailAdapter mDetailAdapter;
    private final CellularDetailAdapter mDetailAdapter;


    private final CellSignalCallback mSignalCallback = new CellSignalCallback();
    private final CellSignalCallback mSignalCallback = new CellSignalCallback();
@@ -255,7 +255,7 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
            final DataUsageDetailView v = (DataUsageDetailView) (convertView != null
            final DataUsageDetailView v = (DataUsageDetailView) (convertView != null
                    ? convertView
                    ? convertView
                    : LayoutInflater.from(mContext).inflate(R.layout.data_usage, parent, false));
                    : LayoutInflater.from(mContext).inflate(R.layout.data_usage, parent, false));
            final MobileDataController.DataUsageInfo info = mDataController.getDataUsageInfo();
            final DataUsageController.DataUsageInfo info = mDataController.getDataUsageInfo();
            if (info == null) return v;
            if (info == null) return v;
            v.bind(info);
            v.bind(info);
            return v;
            return v;
+2 −2
Original line number Original line Diff line number Diff line
@@ -23,7 +23,7 @@ import android.util.AttributeSet;
import android.view.View;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TextView;
import com.android.settingslib.net.MobileDataController;
import com.android.settingslib.net.DataUsageController;
import com.android.systemui.FontSizeUtils;
import com.android.systemui.FontSizeUtils;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.qs.DataUsageGraph;
import com.android.systemui.qs.DataUsageGraph;
@@ -59,7 +59,7 @@ public class DataUsageDetailView extends LinearLayout {
                R.dimen.qs_data_usage_text_size);
                R.dimen.qs_data_usage_text_size);
    }
    }


    public void bind(MobileDataController.DataUsageInfo info) {
    public void bind(DataUsageController.DataUsageInfo info) {
        final Resources res = mContext.getResources();
        final Resources res = mContext.getResources();
        final int titleId;
        final int titleId;
        final long bytes;
        final long bytes;
+2 −2
Original line number Original line Diff line number Diff line
@@ -19,7 +19,7 @@ package com.android.systemui.statusbar.policy;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionInfo;
import com.android.settingslib.net.MobileDataController;
import com.android.settingslib.net.DataUsageController;
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.AccessPoint;


import java.util.List;
import java.util.List;
@@ -32,7 +32,7 @@ public interface NetworkController {
    void setWifiEnabled(boolean enabled);
    void setWifiEnabled(boolean enabled);
    void onUserSwitched(int newUserId);
    void onUserSwitched(int newUserId);
    AccessPointController getAccessPointController();
    AccessPointController getAccessPointController();
    MobileDataController getMobileDataController();
    DataUsageController getMobileDataController();


    public interface SignalCallback {
    public interface SignalCallback {
        void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
        void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
+11 −11
Original line number Original line Diff line number Diff line
@@ -40,7 +40,7 @@ import android.util.MathUtils;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyIntents;
import com.android.settingslib.net.MobileDataController;
import com.android.settingslib.net.DataUsageController;
import com.android.systemui.DemoMode;
import com.android.systemui.DemoMode;
import com.android.systemui.R;
import com.android.systemui.R;


@@ -59,7 +59,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;


/** Platform implementation of the network controller. **/
/** Platform implementation of the network controller. **/
public class NetworkControllerImpl extends BroadcastReceiver
public class NetworkControllerImpl extends BroadcastReceiver
        implements NetworkController, DemoMode, MobileDataController.NetworkNameProvider {
        implements NetworkController, DemoMode, DataUsageController.NetworkNameProvider {
    // debug
    // debug
    static final String TAG = "NetworkController";
    static final String TAG = "NetworkController";
    static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -94,7 +94,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
    // SIM for most actions.  This may be null if there aren't any SIMs around.
    // SIM for most actions.  This may be null if there aren't any SIMs around.
    private MobileSignalController mDefaultSignalController;
    private MobileSignalController mDefaultSignalController;
    private final AccessPointControllerImpl mAccessPoints;
    private final AccessPointControllerImpl mAccessPoints;
    private final MobileDataController mMobileDataController;
    private final DataUsageController mDataUsageController;


    private boolean mInetCondition; // Used for Logging and demo.
    private boolean mInetCondition; // Used for Logging and demo.


@@ -139,7 +139,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
                SubscriptionManager.from(context), Config.readConfig(context), bgLooper,
                SubscriptionManager.from(context), Config.readConfig(context), bgLooper,
                new CallbackHandler(),
                new CallbackHandler(),
                new AccessPointControllerImpl(context, bgLooper),
                new AccessPointControllerImpl(context, bgLooper),
                new MobileDataController(context),
                new DataUsageController(context),
                new SubscriptionDefaults());
                new SubscriptionDefaults());
        mReceiverHandler.post(mRegisterListeners);
        mReceiverHandler.post(mRegisterListeners);
    }
    }
@@ -150,7 +150,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
            SubscriptionManager subManager, Config config, Looper bgLooper,
            SubscriptionManager subManager, Config config, Looper bgLooper,
            CallbackHandler callbackHandler,
            CallbackHandler callbackHandler,
            AccessPointControllerImpl accessPointController,
            AccessPointControllerImpl accessPointController,
            MobileDataController mobileDataController,
            DataUsageController dataUsageController,
            SubscriptionDefaults defaultsHandler) {
            SubscriptionDefaults defaultsHandler) {
        mContext = context;
        mContext = context;
        mConfig = config;
        mConfig = config;
@@ -171,10 +171,10 @@ public class NetworkControllerImpl extends BroadcastReceiver


        mLocale = mContext.getResources().getConfiguration().locale;
        mLocale = mContext.getResources().getConfiguration().locale;
        mAccessPoints = accessPointController;
        mAccessPoints = accessPointController;
        mMobileDataController = mobileDataController;
        mDataUsageController = dataUsageController;
        mMobileDataController.setNetworkController(this);
        mDataUsageController.setNetworkController(this);
        // TODO: Find a way to move this into MobileDataController.
        // TODO: Find a way to move this into DataUsageController.
        mMobileDataController.setCallback(new MobileDataController.Callback() {
        mDataUsageController.setCallback(new DataUsageController.Callback() {
            @Override
            @Override
            public void onMobileDataEnabled(boolean enabled) {
            public void onMobileDataEnabled(boolean enabled) {
                mCallbackHandler.setMobileDataEnabled(enabled);
                mCallbackHandler.setMobileDataEnabled(enabled);
@@ -236,8 +236,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
    }
    }


    @Override
    @Override
    public MobileDataController getMobileDataController() {
    public DataUsageController getMobileDataController() {
        return mMobileDataController;
        return mDataUsageController;
    }
    }


    public void addEmergencyListener(EmergencyListener listener) {
    public void addEmergencyListener(EmergencyListener listener) {
Loading