diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index 171c76b28c9..3b958aec105 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -74,6 +74,7 @@ import java.util.List; * Utils for battery operation */ public class BatteryUtils { + public static final int UID_ZERO = 0; public static final int UID_NULL = -1; public static final int SDK_NULL = -1; /** Special UID value for data usage by removed apps. */ diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java index 971ada99249..9d7b629932e 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java @@ -283,7 +283,9 @@ public class BatteryDiffEntry { /** Whether the current BatteryDiffEntry is uninstalled app or not. */ public boolean isUninstalledEntry() { final String packageName = getPackageName(); - if (TextUtils.isEmpty(packageName) || isSystemEntry()) { + if (TextUtils.isEmpty(packageName) || isSystemEntry() + // Some special package UIDs could be 0. Those packages are not installed by users. + || mUid == BatteryUtils.UID_ZERO) { return false; } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java index 2cafadbad79..ae726b75a1f 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java @@ -62,6 +62,8 @@ public final class BatteryDiffEntryTest { private static final int UNINSTALLED_UID = 101; private static final String PACKAGE_NAME = "com.android.testing"; private static final String UNINSTALLED_PACKAGE_NAME = "com.android.testing.uninstalled"; + private static final String UID_ZERO_PACKAGE_NAME = "com.android.testing.uid.zero"; + private Context mContext; @@ -89,6 +91,9 @@ public final class BatteryDiffEntryTest { doReturn(BatteryUtils.UID_NULL) .when(mMockPackageManager) .getPackageUid(UNINSTALLED_PACKAGE_NAME, PackageManager.GET_META_DATA); + doReturn(BatteryUtils.UID_ZERO) + .when(mMockPackageManager) + .getPackageUid(UID_ZERO_PACKAGE_NAME, PackageManager.GET_META_DATA); BatteryDiffEntry.clearCache(); } @@ -442,6 +447,18 @@ public final class BatteryDiffEntryTest { assertThat(entry.isUninstalledEntry()).isFalse(); } + @Test + public void testIsUninstalledEntry_uidZero_returnFalse() throws Exception { + final ContentValues values = + getContentValuesWithType(ConvertUtils.CONSUMER_TYPE_UID_BATTERY); + values.put(BatteryHistEntry.KEY_UID, BatteryUtils.UID_ZERO); + values.put(BatteryHistEntry.KEY_PACKAGE_NAME, PACKAGE_NAME); + final BatteryDiffEntry entry = createBatteryDiffEntry(10, new BatteryHistEntry(values)); + + assertThat(entry.isSystemEntry()).isFalse(); + assertThat(entry.isUninstalledEntry()).isFalse(); + } + @Test public void testIsUninstalledEntry_uninstalledApp_returnTrue() throws Exception { doReturn(BatteryUtils.UID_NULL)