Launch the correct profile for the App Info items
Use the app user handle when SubSettingLauncher launch the new page, to make sure the new page is opened for the correct profile. Bug: 236346018 Test: Unit test Test: Manually with App Info Setting page Change-Id: Idd6eb183e967b1ced10fcf46b9e74bdff3953280
This commit is contained in:
@@ -650,6 +650,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
|
||||
new SubSettingLauncher(context)
|
||||
.setDestination(destination.getName())
|
||||
.setArguments(args)
|
||||
.setUserHandle(UserHandle.getUserHandleForUid(app.uid))
|
||||
.setSourceMetricsCategory(sourceMetricsCategory)
|
||||
.launch();
|
||||
}
|
||||
|
@@ -40,7 +40,9 @@ 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
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -63,6 +65,7 @@ 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<BatteryDiffEntry?>
|
||||
by mutableStateOf(LoadingState.Loading)
|
||||
|
||||
@@ -84,7 +87,7 @@ private class AppBatteryPresenter(private val context: Context, private val app:
|
||||
|
||||
private suspend fun getBatteryDiffEntry(): BatteryDiffEntry? = withContext(Dispatchers.IO) {
|
||||
BatteryChartPreferenceController.getAppBatteryUsageData(
|
||||
context, app.packageName, app.userId
|
||||
userContext, app.packageName, app.userId
|
||||
).also {
|
||||
Log.d(TAG, "loadBatteryDiffEntries():\n$it")
|
||||
}
|
||||
@@ -141,6 +144,7 @@ private class AppBatteryPresenter(private val context: Context, private val app:
|
||||
.setDestination(AdvancedPowerUsageDetail::class.java.name)
|
||||
.setTitleRes(R.string.battery_details_title)
|
||||
.setArguments(args)
|
||||
.setUserHandle(app.userHandle)
|
||||
.setSourceMetricsCategory(AppInfoSettingsProvider.METRICS_CATEGORY)
|
||||
.launch()
|
||||
}
|
||||
|
@@ -36,6 +36,9 @@ 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.framework.common.asUser
|
||||
import com.android.settingslib.spaprivileged.model.app.userHandle
|
||||
import com.android.settingslib.spaprivileged.model.app.userId
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
@@ -69,6 +72,7 @@ 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)
|
||||
|
Reference in New Issue
Block a user