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
This commit is contained in:
Chaohui Wang
2023-04-04 00:15:29 +09:00
parent 506a9b317d
commit ecd8ffb08b
2 changed files with 1 additions and 5 deletions

View File

@@ -40,7 +40,6 @@ import com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceControl
import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry
import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel 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.installed
import com.android.settingslib.spaprivileged.model.app.userHandle import com.android.settingslib.spaprivileged.model.app.userHandle
import com.android.settingslib.spaprivileged.model.app.userId 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 class AppBatteryPresenter(private val context: Context, private val app: ApplicationInfo) {
private val userContext = context.asUser(app.userHandle)
private var batteryDiffEntryState: LoadingState<BatteryDiffEntry?> private var batteryDiffEntryState: LoadingState<BatteryDiffEntry?>
by mutableStateOf(LoadingState.Loading) 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) { private suspend fun getBatteryDiffEntry(): BatteryDiffEntry? = withContext(Dispatchers.IO) {
BatteryChartPreferenceController.getAppBatteryUsageData( BatteryChartPreferenceController.getAppBatteryUsageData(
userContext, app.packageName, app.userId context, app.packageName, app.userId
).also { ).also {
Log.d(TAG, "loadBatteryDiffEntries():\n$it") Log.d(TAG, "loadBatteryDiffEntries():\n$it")
} }

View File

@@ -36,7 +36,6 @@ import com.android.settings.R
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail import com.android.settings.fuelgauge.AdvancedPowerUsageDetail
import com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceController import com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceController
import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry
import com.android.settings.testutils.mockAsUser
import com.android.settingslib.spaprivileged.model.app.userId import com.android.settingslib.spaprivileged.model.app.userId
import org.junit.After import org.junit.After
import org.junit.Before import org.junit.Before
@@ -70,7 +69,6 @@ class AppBatteryPreferenceTest {
.mockStatic(AdvancedPowerUsageDetail::class.java) .mockStatic(AdvancedPowerUsageDetail::class.java)
.strictness(Strictness.LENIENT) .strictness(Strictness.LENIENT)
.startMocking() .startMocking()
context.mockAsUser()
whenever(context.resources).thenReturn(resources) whenever(context.resources).thenReturn(resources)
whenever(resources.getBoolean(R.bool.config_show_app_info_settings_battery)) whenever(resources.getBoolean(R.bool.config_show_app_info_settings_battery))
.thenReturn(true) .thenReturn(true)