From f2591b2968cb14d5376ab0191c881cd974b7ab34 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Fri, 16 Aug 2024 14:01:21 +0800 Subject: [PATCH] Settings search for app data usage Bug: 358238959 Flag: EXEMPT bug fix Test: manual - search app data usage Change-Id: Ie39a7f25b72f7b264f53329082fa34231c2aaa89 --- res/xml/mobile_network_settings.xml | 2 + .../DataUsagePreferenceController.kt | 53 +++++++++++-------- .../MobileNetworkSettingsSearchIndex.kt | 2 + .../DataUsagePreferenceControllerTest.kt | 12 +---- 4 files changed, 35 insertions(+), 34 deletions(-) diff --git a/res/xml/mobile_network_settings.xml b/res/xml/mobile_network_settings.xml index eb80ac84162..825d72cd3e8 100644 --- a/res/xml/mobile_network_settings.xml +++ b/res/xml/mobile_network_settings.xml @@ -91,9 +91,11 @@ settings:searchable="false" settings:controller="com.android.settings.network.telephony.RoamingPreferenceController"/> + AVAILABLE - - else -> AVAILABLE_UNSEARCHABLE - } + override fun getAvailabilityStatus() = AVAILABLE override fun displayPreference(screen: PreferenceScreen) { super.displayPreference(screen) @@ -75,11 +72,12 @@ class DataUsagePreferenceController(context: Context, key: String) : override fun handlePreferenceTreeClick(preference: Preference): Boolean { if (preference.key != preferenceKey || networkTemplate == null) return false - val intent = Intent(Settings.ACTION_MOBILE_DATA_USAGE).apply { - setPackage(mContext.packageName) - putExtra(Settings.EXTRA_NETWORK_TEMPLATE, networkTemplate) - putExtra(Settings.EXTRA_SUB_ID, mSubId) - } + val intent = + Intent(Settings.ACTION_MOBILE_DATA_USAGE).apply { + setPackage(mContext.packageName) + putExtra(Settings.EXTRA_NETWORK_TEMPLATE, networkTemplate) + putExtra(Settings.EXTRA_SUB_ID, subId) + } mContext.startActivity(intent) return true } @@ -93,13 +91,10 @@ class DataUsagePreferenceController(context: Context, key: String) : preference.summary = summary?.displayText } - private fun getNetworkTemplate(): NetworkTemplate? = when { - SubscriptionManager.isValidSubscriptionId(mSubId) -> { - DataUsageLib.getMobileTemplate(mContext, mSubId) - } - - else -> null - } + private fun getNetworkTemplate(): NetworkTemplate? = + if (SubscriptionManager.isValidSubscriptionId(subId)) { + DataUsageLib.getMobileTemplate(mContext, subId) + } else null @VisibleForTesting fun createNetworkCycleDataRepository(): NetworkCycleDataRepository? = @@ -118,4 +113,16 @@ class DataUsagePreferenceController(context: Context, key: String) : val allTimeUsage = repository.queryUsage(AllTimeRange) return allTimeUsage.getDataUsedString(mContext) to (allTimeUsage.usage > 0) } + + companion object { + class DataUsageSearchItem(private val context: Context) : MobileNetworkSettingsSearchItem { + override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? { + if (!DataUsageUtils.hasMobileData(context)) return null + return MobileNetworkSettingsSearchResult( + key = "data_usage_summary", + title = context.getString(R.string.app_cellular_data_usage), + ) + } + } + } } diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndex.kt b/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndex.kt index 58661f0e4fb..55cb1fad8f3 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndex.kt +++ b/src/com/android/settings/network/telephony/MobileNetworkSettingsSearchIndex.kt @@ -21,6 +21,7 @@ import android.provider.Settings import android.telephony.SubscriptionInfo import com.android.settings.R import com.android.settings.network.SubscriptionUtil +import com.android.settings.network.telephony.DataUsagePreferenceController.Companion.DataUsageSearchItem import com.android.settings.network.telephony.MmsMessagePreferenceController.Companion.MmsMessageSearchItem import com.android.settings.network.telephony.NrAdvancedCallingPreferenceController.Companion.NrAdvancedCallingSearchItem import com.android.settings.network.telephony.RoamingPreferenceController.Companion.RoamingSearchItem @@ -114,6 +115,7 @@ class MobileNetworkSettingsSearchIndex( fun createSearchItems(context: Context): List = listOf( + DataUsageSearchItem(context), MmsMessageSearchItem(context), NrAdvancedCallingSearchItem(context), PreferredNetworkModeSearchItem(context), 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 7124b6ac2cd..f4974e9cd8e 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 @@ -29,7 +29,6 @@ import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.dx.mockito.inline.extended.ExtendedMockito import com.android.settings.core.BasePreferenceController.AVAILABLE -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 @@ -77,7 +76,6 @@ class DataUsagePreferenceControllerTest { @Before fun setUp() { mockSession = ExtendedMockito.mockitoSession() - .initMocks(this) .spyStatic(DataUsageUtils::class.java) .spyStatic(DataUsageLib::class.java) .strictness(Strictness.LENIENT) @@ -101,18 +99,10 @@ class DataUsagePreferenceControllerTest { } @Test - fun getAvailabilityStatus_validSubId_returnAvailable() { + fun getAvailabilityStatus_returnAvailable() { assertThat(controller.availabilityStatus).isEqualTo(AVAILABLE) } - @Test - fun getAvailabilityStatus_invalidSubId_returnUnsearchable() { - val availabilityStatus = - controller.getAvailabilityStatus(SubscriptionManager.INVALID_SUBSCRIPTION_ID) - - assertThat(availabilityStatus).isEqualTo(AVAILABLE_UNSEARCHABLE) - } - @Test fun handlePreferenceTreeClick_startActivity() = runBlocking { val usageData = NetworkUsageData(START_TIME, END_TIME, 1L)