From ecd8ffb08b42c558e12f539c74007fa80c991c0a Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Tue, 4 Apr 2023 00:15:29 +0900 Subject: [PATCH] Fix App battery usage crash userContext.getApplicationContext() returns null, which cause crash. Use context instead to fix. userContext was used to support multiple profiles, since the app's user id is also passed to getAppBatteryUsageData(), userContext is not need. Fix: 269545838 Fix: 275957358 Test: Manually check the battery usage is still correct if an app is installed on two profiles Change-Id: I41a80e4c6edc338affb6eec0cf12da3c438cd7fd --- .../android/settings/spa/app/appinfo/AppBatteryPreference.kt | 4 +--- .../settings/spa/app/appinfo/AppBatteryPreferenceTest.kt | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt b/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt index c4a89179b08..4587bb2b9c2 100644 --- a/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt +++ b/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt @@ -40,7 +40,6 @@ import com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceControl import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel -import com.android.settingslib.spaprivileged.framework.common.asUser import com.android.settingslib.spaprivileged.model.app.installed import com.android.settingslib.spaprivileged.model.app.userHandle import com.android.settingslib.spaprivileged.model.app.userId @@ -65,7 +64,6 @@ fun AppBatteryPreference(app: ApplicationInfo) { } private class AppBatteryPresenter(private val context: Context, private val app: ApplicationInfo) { - private val userContext = context.asUser(app.userHandle) private var batteryDiffEntryState: LoadingState by mutableStateOf(LoadingState.Loading) @@ -87,7 +85,7 @@ private class AppBatteryPresenter(private val context: Context, private val app: private suspend fun getBatteryDiffEntry(): BatteryDiffEntry? = withContext(Dispatchers.IO) { BatteryChartPreferenceController.getAppBatteryUsageData( - userContext, app.packageName, app.userId + context, app.packageName, app.userId ).also { Log.d(TAG, "loadBatteryDiffEntries():\n$it") } diff --git a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppBatteryPreferenceTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppBatteryPreferenceTest.kt index 8dd494596f0..8f1a9a20cdc 100644 --- a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppBatteryPreferenceTest.kt +++ b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/AppBatteryPreferenceTest.kt @@ -36,7 +36,6 @@ import com.android.settings.R import com.android.settings.fuelgauge.AdvancedPowerUsageDetail import com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceController import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry -import com.android.settings.testutils.mockAsUser import com.android.settingslib.spaprivileged.model.app.userId import org.junit.After import org.junit.Before @@ -70,7 +69,6 @@ class AppBatteryPreferenceTest { .mockStatic(AdvancedPowerUsageDetail::class.java) .strictness(Strictness.LENIENT) .startMocking() - context.mockAsUser() whenever(context.resources).thenReturn(resources) whenever(resources.getBoolean(R.bool.config_show_app_info_settings_battery)) .thenReturn(true)