From 7e2362118a8d65fdc39d67aa7b472d5546e141ca Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 23 Jul 2018 12:12:56 -0600 Subject: [PATCH] Check for data usage cycle before using it. Test: builds, boots Bug: 111648011 Change-Id: I393f7dbeb5793d4af573ae3689cf5407aa6f1710 --- .../settingslib/net/DataUsageController.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java index 87f5b4f372e0d..eeaa9872a452c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java +++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java @@ -38,13 +38,14 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.format.DateUtils; import android.util.Log; -import android.util.Pair; +import android.util.Range; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import java.time.ZonedDateTime; import java.util.Date; +import java.util.Iterator; import java.util.Locale; public class DataUsageController { @@ -136,11 +137,12 @@ public class DataUsageController { final NetworkStatsHistory history = session.getHistoryForNetwork(template, FIELDS); final long now = System.currentTimeMillis(); final long start, end; - if (policy != null) { - final Pair cycle = NetworkPolicyManager - .cycleIterator(policy).next(); - start = cycle.first.toInstant().toEpochMilli(); - end = cycle.second.toInstant().toEpochMilli(); + final Iterator> it = + (policy != null) ? policy.cycleIterator() : null; + if (it != null && it.hasNext()) { + final Range cycle = it.next(); + start = cycle.getLower().toInstant().toEpochMilli(); + end = cycle.getUpper().toInstant().toEpochMilli(); } else { // period = last 4 wks end = now;