Merge "Fix data usage when policy has no cycle" into 24D1-dev
This commit is contained in:
@@ -18,11 +18,10 @@ package com.android.settings.datausage.lib
|
||||
|
||||
import android.content.Context
|
||||
import android.net.NetworkTemplate
|
||||
import android.text.format.DateUtils
|
||||
import android.util.Range
|
||||
import com.android.settings.datausage.lib.NetworkCycleDataRepository.Companion.asFourWeeks
|
||||
import com.android.settings.datausage.lib.NetworkCycleDataRepository.Companion.bucketRange
|
||||
import com.android.settings.datausage.lib.NetworkCycleDataRepository.Companion.getCycles
|
||||
import com.android.settings.datausage.lib.NetworkCycleDataRepository.Companion.reverseBucketRange
|
||||
import com.android.settings.datausage.lib.NetworkStatsRepository.Companion.Bucket
|
||||
import com.android.settings.datausage.lib.NetworkStatsRepository.Companion.aggregate
|
||||
import com.android.settings.datausage.lib.NetworkStatsRepository.Companion.filterTime
|
||||
@@ -39,16 +38,11 @@ class NetworkCycleBucketRepository(
|
||||
getCycles().map { aggregateUsage(it) }.filter { it.usage > 0 }
|
||||
|
||||
private fun getCycles(): List<Range<Long>> =
|
||||
networkCycleDataRepository.getPolicy()?.getCycles() ?: queryCyclesAsFourWeeks()
|
||||
networkCycleDataRepository.getPolicy()?.getCycles().orEmpty()
|
||||
.ifEmpty { queryCyclesAsFourWeeks() }
|
||||
|
||||
private fun queryCyclesAsFourWeeks(): List<Range<Long>> {
|
||||
val timeRange = buckets.aggregate()?.timeRange ?: return emptyList()
|
||||
return reverseBucketRange(
|
||||
startTime = timeRange.lower,
|
||||
endTime = timeRange.upper,
|
||||
step = DateUtils.WEEK_IN_MILLIS * 4,
|
||||
)
|
||||
}
|
||||
private fun queryCyclesAsFourWeeks(): List<Range<Long>> =
|
||||
buckets.aggregate()?.timeRange.asFourWeeks()
|
||||
|
||||
fun queryChartData(usageData: NetworkUsageData) = NetworkCycleChartData(
|
||||
total = usageData,
|
||||
|
||||
@@ -42,16 +42,10 @@ class NetworkCycleDataRepository(
|
||||
fun loadFirstCycle(): NetworkUsageData? = getCycles().firstOrNull()?.let { queryUsage(it) }
|
||||
|
||||
override fun getCycles(): List<Range<Long>> =
|
||||
getPolicy()?.getCycles() ?: queryCyclesAsFourWeeks()
|
||||
getPolicy()?.getCycles().orEmpty().ifEmpty { queryCyclesAsFourWeeks() }
|
||||
|
||||
private fun queryCyclesAsFourWeeks(): List<Range<Long>> {
|
||||
val timeRange = networkStatsRepository.getTimeRange() ?: return emptyList()
|
||||
return reverseBucketRange(
|
||||
startTime = timeRange.lower,
|
||||
endTime = timeRange.upper,
|
||||
step = DateUtils.WEEK_IN_MILLIS * 4,
|
||||
)
|
||||
}
|
||||
private fun queryCyclesAsFourWeeks(): List<Range<Long>> =
|
||||
networkStatsRepository.getTimeRange().asFourWeeks()
|
||||
|
||||
override fun getPolicy(): NetworkPolicy? =
|
||||
with(NetworkPolicyEditor(policyManager)) {
|
||||
@@ -59,7 +53,6 @@ class NetworkCycleDataRepository(
|
||||
getPolicy(networkTemplate)
|
||||
}
|
||||
|
||||
|
||||
override fun queryUsage(range: Range<Long>) = NetworkUsageData(
|
||||
startTime = range.lower,
|
||||
endTime = range.upper,
|
||||
@@ -71,6 +64,15 @@ class NetworkCycleDataRepository(
|
||||
Range(it.lower.toInstant().toEpochMilli(), it.upper.toInstant().toEpochMilli())
|
||||
}.toList()
|
||||
|
||||
fun Range<Long>?.asFourWeeks(): List<Range<Long>> {
|
||||
val timeRange = this ?: return emptyList()
|
||||
return reverseBucketRange(
|
||||
startTime = timeRange.lower,
|
||||
endTime = timeRange.upper,
|
||||
step = DateUtils.WEEK_IN_MILLIS * 4,
|
||||
)
|
||||
}
|
||||
|
||||
fun bucketRange(startTime: Long, endTime: Long, step: Long): List<Range<Long>> =
|
||||
(startTime..endTime step step).zipWithNext(::Range)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user