Merge "Update filter logic for BatteryDiffEntries" into sc-dev
diff --git a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java
index 89c3478..f0285bc 100644
--- a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java
@@ -78,6 +78,7 @@
     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 @@
         mBatteryUtils = BatteryUtils.getInstance(mContext);
         mPackageName = packageName;
         mUid = uid;
+        mUserId = mContext.getUserId();
         refreshFeatureFlag(mContext);
         if (lifecycle != null) {
             lifecycle.addObserver(this);
@@ -173,16 +175,29 @@
             protected BatteryDiffEntry doInBackground(Void... unused) {
                 final List<BatteryDiffEntry> 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