OSDN Git Service

Clamp large data usage values.
authorJeff Sharkey <jsharkey@android.com>
Mon, 19 Oct 2015 23:41:53 +0000 (16:41 -0700)
committerJeff Sharkey <jsharkey@android.com>
Mon, 19 Oct 2015 23:41:53 +0000 (16:41 -0700)
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

src/com/android/settings/widget/ChartDataUsageView.java

index cc9acd6..6fb805b 100644 (file)
@@ -22,6 +22,7 @@ import android.content.Context;
 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.Formatter.BytesResult;
 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 @@ public class ChartDataUsageView extends ChartView {
 
         @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");