From c1726d07e5f5ee1aac3253c51b877d77f4b9555d Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Sun, 29 Jan 2023 01:10:47 +0800 Subject: [PATCH] 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 --- .../applications/appinfo/AppInfoDashboardFragment.java | 1 + .../settings/spa/app/appinfo/AppBatteryPreference.kt | 6 +++++- .../settings/spa/app/appinfo/AppBatteryPreferenceTest.kt | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java index 06b25d675a0..3f335bcb157 100644 --- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java @@ -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(); } diff --git a/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt b/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt index 720422f6faf..edb2a1eaa0f 100644 --- a/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt +++ b/src/com/android/settings/spa/app/appinfo/AppBatteryPreference.kt @@ -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 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() } 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 fd286caf2d9..276b711a104 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,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)