From f668d7cceb3c6cc9143fcf92230681bddd7ccf21 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Thu, 14 Jan 2016 10:38:41 -0500 Subject: [PATCH] Support data usage changes in Settings Change-Id: I78c6a3956e7136c3ed64d9323d3fe74df2898c5d --- ...ntroller.java => DataUsageController.java} | 27 +++++++++++++------ .../systemui/qs/tiles/CellularTile.java | 6 ++--- .../qs/tiles/DataUsageDetailView.java | 4 +-- .../statusbar/policy/NetworkController.java | 4 +-- .../policy/NetworkControllerImpl.java | 22 +++++++-------- .../policy/NetworkControllerBaseTest.java | 6 ++--- .../policy/NetworkControllerDataTest.java | 4 +-- .../policy/NetworkControllerSignalTest.java | 6 ++--- 8 files changed, 45 insertions(+), 34 deletions(-) rename packages/SettingsLib/src/com/android/settingslib/net/{MobileDataController.java => DataUsageController.java} (93%) diff --git a/packages/SettingsLib/src/com/android/settingslib/net/MobileDataController.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java similarity index 93% rename from packages/SettingsLib/src/com/android/settingslib/net/MobileDataController.java rename to packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java index 642b60e2e24a5..5d8668b644051 100644 --- a/packages/SettingsLib/src/com/android/settingslib/net/MobileDataController.java +++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java @@ -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_SHOW_DATE; -public class MobileDataController { - private static final String TAG = "MobileDataController"; +public class DataUsageController { + private static final String TAG = "DataUsageController"; 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 StringBuilder PERIOD_BUILDER = new StringBuilder(50); private static final java.util.Formatter PERIOD_FORMATTER = new java.util.Formatter( @@ -62,7 +62,7 @@ public class MobileDataController { private Callback mCallback; private NetworkNameProvider mNetworkController; - public MobileDataController(Context context) { + public DataUsageController(Context context) { mContext = context; mTelephonyManager = TelephonyManager.from(context); mConnectivityManager = ConnectivityManager.from(context); @@ -109,16 +109,25 @@ public class MobileDataController { if (subscriberId == null) { 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(); if (session == null) { return warn("no stats session"); } - NetworkTemplate template = NetworkTemplate.buildTemplateMobileAll(subscriberId); - template = NetworkTemplate.normalize(template, mTelephonyManager.getMergedSubscriberIds()); - final NetworkPolicy policy = findNetworkPolicy(template); try { - final NetworkStatsHistory history = mSession.getHistoryForNetwork(template, FIELDS); + final NetworkStatsHistory history = session.getHistoryForNetwork(template, FIELDS); final long now = System.currentTimeMillis(); final long start, end; if (policy != null && policy.cycleDay > 0) { @@ -153,6 +162,7 @@ public class MobileDataController { } final long totalBytes = entry.rxBytes + entry.txBytes; final DataUsageInfo usage = new DataUsageInfo(); + usage.startDate = start; usage.usageLevel = totalBytes; usage.period = formatDateRange(start, end); if (policy != null) { @@ -238,6 +248,7 @@ public class MobileDataController { public static class DataUsageInfo { public String carrier; public String period; + public long startDate; public long limitLevel; public long warningLevel; public long usageLevel; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java index c1dcfea8ca019..1f8fae0fd081a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java @@ -24,7 +24,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; 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.qs.QSIconView; import com.android.systemui.qs.QSTile; @@ -39,7 +39,7 @@ public class CellularTile extends QSTile { "com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity")); private final NetworkController mController; - private final MobileDataController mDataController; + private final DataUsageController mDataController; private final CellularDetailAdapter mDetailAdapter; private final CellSignalCallback mSignalCallback = new CellSignalCallback(); @@ -255,7 +255,7 @@ public class CellularTile extends QSTile { final DataUsageDetailView v = (DataUsageDetailView) (convertView != null ? convertView : 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; v.bind(info); return v; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataUsageDetailView.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataUsageDetailView.java index d814b1c2fd335..2be43c0ac9c4e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataUsageDetailView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataUsageDetailView.java @@ -23,7 +23,7 @@ import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; 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.R; import com.android.systemui.qs.DataUsageGraph; @@ -59,7 +59,7 @@ public class DataUsageDetailView extends LinearLayout { 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 int titleId; final long bytes; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java index f8c72b335379c..b2bcde3db9371 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -19,7 +19,7 @@ package com.android.systemui.statusbar.policy; import android.content.Context; import android.content.Intent; import android.telephony.SubscriptionInfo; -import com.android.settingslib.net.MobileDataController; +import com.android.settingslib.net.DataUsageController; import com.android.settingslib.wifi.AccessPoint; import java.util.List; @@ -32,7 +32,7 @@ public interface NetworkController { void setWifiEnabled(boolean enabled); void onUserSwitched(int newUserId); AccessPointController getAccessPointController(); - MobileDataController getMobileDataController(); + DataUsageController getMobileDataController(); public interface SignalCallback { void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index 909f4972ce497..3385c820a64f6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -40,7 +40,7 @@ import android.util.MathUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.PhoneConstants; 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.R; @@ -59,7 +59,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; /** Platform implementation of the network controller. **/ public class NetworkControllerImpl extends BroadcastReceiver - implements NetworkController, DemoMode, MobileDataController.NetworkNameProvider { + implements NetworkController, DemoMode, DataUsageController.NetworkNameProvider { // debug static final String TAG = "NetworkController"; 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. private MobileSignalController mDefaultSignalController; private final AccessPointControllerImpl mAccessPoints; - private final MobileDataController mMobileDataController; + private final DataUsageController mDataUsageController; private boolean mInetCondition; // Used for Logging and demo. @@ -139,7 +139,7 @@ public class NetworkControllerImpl extends BroadcastReceiver SubscriptionManager.from(context), Config.readConfig(context), bgLooper, new CallbackHandler(), new AccessPointControllerImpl(context, bgLooper), - new MobileDataController(context), + new DataUsageController(context), new SubscriptionDefaults()); mReceiverHandler.post(mRegisterListeners); } @@ -150,7 +150,7 @@ public class NetworkControllerImpl extends BroadcastReceiver SubscriptionManager subManager, Config config, Looper bgLooper, CallbackHandler callbackHandler, AccessPointControllerImpl accessPointController, - MobileDataController mobileDataController, + DataUsageController dataUsageController, SubscriptionDefaults defaultsHandler) { mContext = context; mConfig = config; @@ -171,10 +171,10 @@ public class NetworkControllerImpl extends BroadcastReceiver mLocale = mContext.getResources().getConfiguration().locale; mAccessPoints = accessPointController; - mMobileDataController = mobileDataController; - mMobileDataController.setNetworkController(this); - // TODO: Find a way to move this into MobileDataController. - mMobileDataController.setCallback(new MobileDataController.Callback() { + mDataUsageController = dataUsageController; + mDataUsageController.setNetworkController(this); + // TODO: Find a way to move this into DataUsageController. + mDataUsageController.setCallback(new DataUsageController.Callback() { @Override public void onMobileDataEnabled(boolean enabled) { mCallbackHandler.setMobileDataEnabled(enabled); @@ -236,8 +236,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } @Override - public MobileDataController getMobileDataController() { - return mMobileDataController; + public DataUsageController getMobileDataController() { + return mDataUsageController; } public void addEmergencyListener(EmergencyListener listener) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java index b64fbea0fa900..5cf37670f3eac 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java @@ -33,7 +33,7 @@ import android.telephony.TelephonyManager; import android.util.Log; import com.android.internal.telephony.cdma.EriInfo; -import com.android.settingslib.net.MobileDataController; +import com.android.settingslib.net.DataUsageController; import com.android.systemui.SysuiTestCase; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config; @@ -96,7 +96,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { mCallbackHandler = mock(CallbackHandler.class); mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, mConfig, Looper.getMainLooper(), mCallbackHandler, - mock(AccessPointControllerImpl.class), mock(MobileDataController.class), + mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults); setupNetworkController(); @@ -137,7 +137,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, mConfig, Looper.getMainLooper(), mCallbackHandler, mock(AccessPointControllerImpl.class), - mock(MobileDataController.class), mMockSubDefaults); + mock(DataUsageController.class), mMockSubDefaults); setupNetworkController(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java index e4f858bed8d68..d5eca95e2cbf9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java @@ -4,7 +4,7 @@ import android.os.Looper; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; -import com.android.settingslib.net.MobileDataController; +import com.android.settingslib.net.DataUsageController; import org.mockito.Mockito; @SmallTest @@ -88,7 +88,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, mConfig, Looper.getMainLooper(), mCallbackHandler, Mockito.mock(AccessPointControllerImpl.class), - Mockito.mock(MobileDataController.class), mMockSubDefaults); + Mockito.mock(DataUsageController.class), mMockSubDefaults); setupNetworkController(); setupDefaultSignal(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java index 760aa9a9be640..08da382a2fbe2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java @@ -29,7 +29,7 @@ import android.test.suitebuilder.annotation.SmallTest; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.TelephonyIntents; -import com.android.settingslib.net.MobileDataController; +import com.android.settingslib.net.DataUsageController; import com.android.systemui.R; import org.mockito.ArgumentCaptor; @@ -47,7 +47,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { // Create a new NetworkController as this is currently handled in constructor. mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, mConfig, Looper.getMainLooper(), mCallbackHandler, - mock(AccessPointControllerImpl.class), mock(MobileDataController.class), + mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults); setupNetworkController(); @@ -96,7 +96,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { // Create a new NetworkController as this is currently handled in constructor. mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, mConfig, Looper.getMainLooper(), mCallbackHandler, - mock(AccessPointControllerImpl.class), mock(MobileDataController.class), + mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults); setupNetworkController();