From eda172ce2c658b4ecee50d9b6e03defd3f03aaf6 Mon Sep 17 00:00:00 2001 From: Wesley Wang Date: Fri, 28 Oct 2022 18:25:21 +0800 Subject: [PATCH] Fix app battery usage list launch incorrect works app - App usage page only use package name to launch the page, it can not identify the different userId between normal app and work profile app, add extra userId info into launch args - Remove no battery usage state/string if usage time is empty Bug: 251471047 Test: make SettingsRoboTests Change-Id: Id06ebb0f0fcd863e423acd7839f89bc0ae2444c1 --- .../appinfo/AppBatteryPreferenceController.java | 3 ++- .../manageapplications/ManageApplications.java | 3 ++- .../settings/fuelgauge/AdvancedPowerUsageDetail.java | 10 ++++------ .../fuelgauge/AdvancedPowerUsageDetailTest.java | 9 +++++---- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java index 49f676ed508..19f3a46aaee 100644 --- a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java @@ -22,6 +22,7 @@ import android.os.AsyncTask; import android.os.BatteryUsageStats; import android.os.Bundle; import android.os.UidBatteryConsumer; +import android.os.UserHandle; import android.os.UserManager; import android.util.Log; @@ -144,7 +145,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController } else { Log.i(TAG, "Launch : " + mPackageName + " with package name"); AdvancedPowerUsageDetail.startBatteryDetailPage(mParent.getActivity(), mParent, - mPackageName); + mPackageName, UserHandle.CURRENT); } return true; } diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java index 80b49312475..b678e24b5e2 100644 --- a/src/com/android/settings/applications/manageapplications/ManageApplications.java +++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java @@ -686,7 +686,8 @@ public class ManageApplications extends InstrumentedFragment break; case LIST_TYPE_BATTERY_OPTIMIZATION: AdvancedPowerUsageDetail.startBatteryDetailPage( - getActivity(), this, mCurrentPkgName); + getActivity(), this, mCurrentPkgName, + UserHandle.getUserHandleForUid(mCurrentUid)); break; // TODO: Figure out if there is a way where we can spin up the profile's settings // process ahead of time, to avoid a long load of data when user clicks on a managed diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java index c08a1b8985e..9705154d7b3 100644 --- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java @@ -219,7 +219,8 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements * Start packageName's battery detail page. */ public static void startBatteryDetailPage( - Activity caller, Instrumentable instrumentable, String packageName) { + Activity caller, Instrumentable instrumentable, String packageName, + UserHandle userHandle) { final Bundle args = new Bundle(3); final PackageManager packageManager = caller.getPackageManager(); args.putString(EXTRA_PACKAGE_NAME, packageName); @@ -235,6 +236,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements .setTitleRes(R.string.battery_details_title) .setArguments(args) .setSourceMetricsCategory(instrumentable.getMetricsCategory()) + .setUserHandle(userHandle) .launch(); } @@ -475,16 +477,12 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements private CharSequence getAppActiveTime(Bundle bundle) { final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME); final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME); - final int consumedPower = bundle.getInt(EXTRA_POWER_USAGE_AMOUNT); - final int uid = bundle.getInt(EXTRA_UID, 0); final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null); final long totalTimeMs = foregroundTimeMs + backgroundTimeMs; final CharSequence usageTimeSummary; if (totalTimeMs == 0) { - usageTimeSummary = getText( - consumedPower > 0 ? R.string.battery_usage_without_time - : R.string.battery_not_usage); + usageTimeSummary = getText(R.string.battery_usage_without_time); } else if (slotTime == null) { // Shows summary text with last full charge if slot time is null. usageTimeSummary = getAppFullChargeActiveSummary( diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java index 45e80891faa..2245920d046 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java @@ -280,8 +280,7 @@ public class AdvancedPowerUsageDetailTest { ArgumentCaptor captor = ArgumentCaptor.forClass(CharSequence.class); verify(mEntityHeaderController).setSummary(captor.capture()); - assertThat(captor.getValue().toString()) - .isEqualTo("No usage from last full charge"); + assertThat(captor.getValue().toString()).isEmpty(); } @Test @@ -571,7 +570,8 @@ public class AdvancedPowerUsageDetailTest { public void startBatteryDetailPage_noBatteryUsage_hasBasicData() { final ArgumentCaptor captor = ArgumentCaptor.forClass(Intent.class); - AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mFragment, PACKAGE_NAME[0]); + AdvancedPowerUsageDetail.startBatteryDetailPage( + mActivity, mFragment, PACKAGE_NAME[0], UserHandle.OWNER); verify(mActivity).startActivity(captor.capture()); @@ -589,7 +589,8 @@ public class AdvancedPowerUsageDetailTest { PackageManager.NameNotFoundException { doReturn(UID).when(mPackageManager).getPackageUid(PACKAGE_NAME[0], 0 /* no flag */); - AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mFragment, PACKAGE_NAME[0]); + AdvancedPowerUsageDetail.startBatteryDetailPage( + mActivity, mFragment, PACKAGE_NAME[0], UserHandle.OWNER); assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID); }