From 15ca9a632fc00f4d106dab59230495d9e029c2f4 Mon Sep 17 00:00:00 2001 From: "Wesley.CW Wang" Date: Wed, 30 Jun 2021 21:35:55 +0800 Subject: [PATCH] Update filter logic for BatteryDiffEntries - Use user id and package name to query the battery entry list instead of uid, to handle the cases which enter app info page without uid like launch icon -> app info Bug: 178197718 Test: make SettingsRoboTests Change-Id: I665e57ff3eabf23485455fb2e1af2e0376af1e40 --- .../AppBatteryPreferenceController.java | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java index 89c3478b4ef..f0285bc4a46 100644 --- a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java @@ -78,6 +78,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController private String mBatteryPercent; private final String mPackageName; private final int mUid; + private final int mUserId; private boolean mBatteryUsageStatsLoaded = false; private boolean mBatteryDiffEntriesLoaded = false; @@ -88,6 +89,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController mBatteryUtils = BatteryUtils.getInstance(mContext); mPackageName = packageName; mUid = uid; + mUserId = mContext.getUserId(); refreshFeatureFlag(mContext); if (lifecycle != null) { lifecycle.addObserver(this); @@ -173,16 +175,29 @@ public class AppBatteryPreferenceController extends BasePreferenceController protected BatteryDiffEntry doInBackground(Void... unused) { final List batteryDiffEntries = BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext); - if (batteryDiffEntries != null) { - for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) { - if (batteryDiffEntry.mBatteryHistEntry.mUid == mUid - && batteryDiffEntry.mBatteryHistEntry.mConsumerType - == ConvertUtils.CONSUMER_TYPE_UID_BATTERY) { - return batteryDiffEntry; - } - } + if (batteryDiffEntries == null) { + return null; } - return null; + // Filter entry with consumer type to avoid system app, + // then use user id to divide normal app and work profile app, + // return target application from filter list by package name. + return batteryDiffEntries.stream() + .filter(entry -> entry.mBatteryHistEntry.mConsumerType + == ConvertUtils.CONSUMER_TYPE_UID_BATTERY) + .filter(entry -> entry.mBatteryHistEntry.mUserId == mUserId) + .filter(entry -> { + if (entry.mBatteryHistEntry.mPackageName + .equals(mPackageName)) { + Log.i(TAG, "Return target application: " + + entry.mBatteryHistEntry.mPackageName + + " | uid: " + entry.mBatteryHistEntry.mUid + + " | userId: " + entry.mBatteryHistEntry.mUserId); + return true; + } + return false; + }) + .findFirst() + .orElse(/* other */null); } @Override