Clamp large data usage values.
Without clamping, they can wrap around to negative values and cause
all sorts of havok. 1TB ought to be enough for anyone: that's 3Mbps
for a solid month.
Bug: 24555152
Change-Id: If92c87f9920c3f05cd3ff2cc6630b1bbb65335b8
diff --git a/src/com/android/settings/widget/ChartDataUsageView.java b/src/com/android/settings/widget/ChartDataUsageView.java
index cc9acd6..6fb805b 100644
--- a/src/com/android/settings/widget/ChartDataUsageView.java
+++ b/src/com/android/settings/widget/ChartDataUsageView.java
@@ -22,6 +22,7 @@
import android.content.res.Resources;
import android.net.NetworkPolicy;
import android.net.NetworkStatsHistory;
+import android.net.TrafficStats;
import android.os.Handler;
import android.os.Message;
import android.text.Spannable;
@@ -33,6 +34,7 @@
import android.text.format.Time;
import android.util.AttributeSet;
import android.util.Log;
+import android.util.MathUtils;
import android.view.MotionEvent;
import android.view.View;
@@ -535,6 +537,7 @@
@Override
public long buildLabel(Resources res, SpannableStringBuilder builder, long value) {
+ value = MathUtils.constrain(value, 0, TrafficStats.TB_IN_BYTES);
final BytesResult result = Formatter.formatBytes(res, value,
Formatter.FLAG_SHORTER | Formatter.FLAG_CALCULATE_ROUNDED);
setText(builder, sSpanSize, result.value, "^1");