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:
@@ -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")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user