Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1726d07 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

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
parent 1e45ac13
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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();
    }
+5 −1
Original line number Diff line number Diff line
@@ -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()
    }
+4 −0
Original line number Diff line number Diff line
@@ -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)