diff --git a/res/values/strings.xml b/res/values/strings.xml
index c5d0017e7d0..e8a0408c453 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -11467,8 +11467,6 @@
Check with your network provider for pricing.
-
- App data usage
Invalid Network Mode %1$d. Ignore.
diff --git a/res/xml/mobile_network_settings.xml b/res/xml/mobile_network_settings.xml
index a29e12385ba..1e43ef06f7e 100644
--- a/res/xml/mobile_network_settings.xml
+++ b/res/xml/mobile_network_settings.xml
@@ -95,7 +95,7 @@
{
+ val repository = createNetworkCycleDataRepository() ?: return null to false
+
repository.loadFirstCycle()?.let { usageData ->
return mContext.getString(
R.string.data_usage_template,
usageData.formatUsage(mContext),
usageData.formatDateRange(mContext),
- )
+ ) to (usageData.usage > 0 || repository.queryUsage(AllTimeRange).usage > 0)
}
- return repository.queryUsage(AllTimeRange).takeIf { it.usage > 0 }
- ?.getDataUsedString(mContext)
+ val allTimeUsage = repository.queryUsage(AllTimeRange)
+ if (allTimeUsage.usage > 0) return allTimeUsage.getDataUsedString(mContext) to true
+ return null to false
}
}
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/DataUsagePreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/DataUsagePreferenceControllerTest.kt
index 6cd9151fa6f..5f80855f604 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/DataUsagePreferenceControllerTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/DataUsagePreferenceControllerTest.kt
@@ -33,6 +33,7 @@ import com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE
import com.android.settings.datausage.DataUsageUtils
import com.android.settings.datausage.lib.DataUsageLib
import com.android.settings.datausage.lib.NetworkCycleDataRepository
+import com.android.settings.datausage.lib.NetworkStatsRepository.Companion.AllTimeRange
import com.android.settings.datausage.lib.NetworkUsageData
import com.android.settingslib.spa.testutils.waitUntil
import com.google.common.truth.Truth.assertThat
@@ -140,11 +141,14 @@ class DataUsagePreferenceControllerTest {
}
@Test
- fun updateState_noUsageData_shouldEnablePreference() = runBlocking {
+ fun updateState_noFistCycleUsageButOtherUsage_shouldEnablePreference() = runBlocking {
val usageData = NetworkUsageData(START_TIME, END_TIME, 0L)
repository.stub {
on { loadFirstCycle() } doReturn usageData
+ on { queryUsage(AllTimeRange) } doReturn
+ NetworkUsageData(AllTimeRange.lower, AllTimeRange.upper, 1L)
}
+ preference.isEnabled = false
controller.onViewCreated(TestLifecycleOwner())
@@ -152,6 +156,22 @@ class DataUsagePreferenceControllerTest {
waitUntil { preference.summary?.contains("0 B used") == true }
}
+ @Test
+ fun updateState_noDataUsage_shouldDisablePreference() = runBlocking {
+ val usageData = NetworkUsageData(START_TIME, END_TIME, 0L)
+ repository.stub {
+ on { loadFirstCycle() } doReturn usageData
+ on { queryUsage(AllTimeRange) } doReturn
+ NetworkUsageData(AllTimeRange.lower, AllTimeRange.upper, 0L)
+ }
+ preference.isEnabled = true
+
+ controller.onViewCreated(TestLifecycleOwner())
+
+ waitUntil { !preference.isEnabled }
+ waitUntil { preference.summary?.contains("0 B used") == true }
+ }
+
@Test
fun updateState_shouldUseIecUnit() = runBlocking {
val usageData = NetworkUsageData(START_TIME, END_TIME, DataUnit.MEBIBYTES.toBytes(1))