From 2098665e51eb3f0ebae3749eec2960dae27387f8 Mon Sep 17 00:00:00 2001 From: ykhung Date: Thu, 27 May 2021 16:08:30 +0800 Subject: [PATCH] Convert battery framework provided package name to valid one convert battery framework provided package name to formal one, since some returned package name will append the process name to avoid fetching app label and icon not found. for example: Bug: 188751551 Test: make SettingsgRoboTests Change-Id: If59167d575154f99eba2c7bd81a1d862652ea47b --- .../settings/fuelgauge/BatteryDiffEntry.java | 25 +++++++++--------- .../settings/fuelgauge/BatteryEntry.java | 4 --- .../fuelgauge/BatteryDiffEntryTest.java | 26 +++++++++++++++++++ 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatteryDiffEntry.java b/src/com/android/settings/fuelgauge/BatteryDiffEntry.java index c6b2d4542e2..3ad768a9030 100644 --- a/src/com/android/settings/fuelgauge/BatteryDiffEntry.java +++ b/src/com/android/settings/fuelgauge/BatteryDiffEntry.java @@ -76,11 +76,6 @@ public class BatteryDiffEntry { mBackgroundUsageTimeInMs = backgroundUsageTimeInMs; mBatteryHistEntry = batteryHistEntry; mUserManager = context.getSystemService(UserManager.class); - if (foregroundUsageTimeInMs == 0 - && backgroundUsageTimeInMs == 0 - && consumePower != 0) { - Log.w(TAG, "abnornal BatteryDiffEntry:\n" + this); - } } /** Sets the total consumed power in a specific time slot. */ @@ -128,8 +123,16 @@ public class BatteryDiffEntry { /** Gets the searching package name for UID battery type. */ public String getPackageName() { - return mDefaultPackageName != null + final String packageName = mDefaultPackageName != null ? mDefaultPackageName : mBatteryHistEntry.mPackageName; + if (packageName == null) { + return packageName; + } + // Removes potential appended process name in the PackageName. + // From "com.opera.browser:privileged_process0" to "com.opera.browser" + final String[] splittedPackageNames = packageName.split(":"); + return splittedPackageNames != null && splittedPackageNames.length > 0 + ? splittedPackageNames[0] : packageName; } /** Whether this item is valid for users to launch restriction page? */ @@ -168,8 +171,6 @@ public class BatteryDiffEntry { } // Both nameAndIcon and restriction configuration have cached data. if (nameAndIcon != null && validForRestriction != null) { - Log.w(TAG, String.format("cannot find cache data nameAndIcon:%s " - + "validForRestriction:%s", nameAndIcon, validForRestriction)); return; } mIsLoaded = true; @@ -270,7 +271,7 @@ public class BatteryDiffEntry { } private void loadNameAndIconForUid() { - final String packageName = mBatteryHistEntry.mPackageName; + final String packageName = getPackageName(); final PackageManager packageManager = mContext.getPackageManager(); // Gets the application label from PackageManager. if (packageName != null && packageName.length() != 0) { @@ -332,9 +333,9 @@ public class BatteryDiffEntry { /*withSeconds=*/ true, /*collapseTimeUnit=*/ false), StringUtil.formatElapsedTime(mContext, mBackgroundUsageTimeInMs, /*withSeconds=*/ true, /*collapseTimeUnit=*/ false))) - .append(String.format("\n\tpackage:%s uid:%d userId:%d", - mBatteryHistEntry.mPackageName, mBatteryHistEntry.mUid, - mBatteryHistEntry.mUserId)); + .append(String.format("\n\tpackage:%s|%s uid:%d userId:%d", + mBatteryHistEntry.mPackageName, getPackageName(), + mBatteryHistEntry.mUid, mBatteryHistEntry.mUserId)); return builder.toString(); } diff --git a/src/com/android/settings/fuelgauge/BatteryEntry.java b/src/com/android/settings/fuelgauge/BatteryEntry.java index 125409cd84f..78ab962cd38 100644 --- a/src/com/android/settings/fuelgauge/BatteryEntry.java +++ b/src/com/android/settings/fuelgauge/BatteryEntry.java @@ -417,10 +417,6 @@ public class BatteryEntry { } final String uidString = Integer.toString(uid); - if (name == null) { - name = uidString; - } - if (icon == null) { icon = pm.getDefaultActivityIcon(); } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java index 0df53f1be41..85ac9413041 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryDiffEntryTest.java @@ -371,6 +371,32 @@ public final class BatteryDiffEntryTest { assertThat(entry.mValidForRestriction).isTrue(); } + @Test + public void testGetPackageName_returnExpectedResult() { + final String expectedPackageName = "com.fake.google.com"; + final ContentValues values = getContentValuesWithType( + ConvertUtils.CONSUMER_TYPE_UID_BATTERY); + values.put("packageName", expectedPackageName); + final BatteryDiffEntry entry = + createBatteryDiffEntry(10, new BatteryHistEntry(values)); + + assertThat(entry.getPackageName()).isEqualTo(expectedPackageName); + } + + @Test + public void testGetPackageName_withProcessName_returnExpectedResult() { + final String expectedPackageName = "com.fake.google.com"; + final ContentValues values = getContentValuesWithType( + ConvertUtils.CONSUMER_TYPE_UID_BATTERY); + values.put( + "packageName", + expectedPackageName + ":privileged_process0"); + final BatteryDiffEntry entry = + createBatteryDiffEntry(10, new BatteryHistEntry(values)); + + assertThat(entry.getPackageName()).isEqualTo(expectedPackageName); + } + private BatteryDiffEntry createBatteryDiffEntry( int consumerType, long uid, boolean isHidden) { final ContentValues values = getContentValuesWithType(consumerType);