From 1bf57958d26d76bb7bc7dc0dc4a09eea2e85c27e Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Mon, 12 Dec 2022 14:16:43 +0800 Subject: [PATCH] Don't hide 1% battery usage apps but show percentage "-" instead. Bug b/242252864 will be fixed at the same time. screen_record: https://drive.google.com/open?id=1ycEuazqQZzNWGO8E2Fh3GdgyTEd2Z9s0&authuser=0&resourcekey=0-x9BJJE6932jIv9fFoecjeQ&usp=drive_link Bug: 262187603 Bug: 242252864 Fix: 262187603 Fix: 242252864 Test: manual Change-Id: Id1a8b5291d66a38fb86f168d3115ae566e6ec079 --- .../fuelgauge/batteryusage/DataProcessor.java | 17 +++++++---------- .../batteryusage/PowerGaugePreference.java | 5 ++++- .../batteryusage/PowerGaugePreferenceTest.java | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java index 0f02d1c63f1..ff139f0ff61 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java +++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java @@ -83,8 +83,6 @@ public final class DataProcessor { private static final BatteryHistEntry EMPTY_BATTERY_HIST_ENTRY = new BatteryHistEntry(new ContentValues()); - @VisibleForTesting - static final double PERCENTAGE_OF_TOTAL_THRESHOLD = 1f; @VisibleForTesting static final int SELECTED_INDEX_ALL = BatteryChartViewModel.SELECTED_INDEX_ALL; @VisibleForTesting @@ -441,7 +439,7 @@ public final class DataProcessor { insertAllUsageDiffData(resultMap); // Compute the apps number before purge. Must put before purgeLowPercentageAndFakeData. final int countOfAppBeforePurge = getCountOfApps(resultMap); - purgeLowPercentageAndFakeData(context, resultMap); + purgeFakeAndHiddenPackages(context, resultMap); // Compute the apps number after purge. Must put after purgeLowPercentageAndFakeData. final int countOfAppAfterPurge = getCountOfApps(resultMap); if (!isUsageMapValid(resultMap, hourlyBatteryLevelsPerDay)) { @@ -536,7 +534,7 @@ public final class DataProcessor { // Compute the apps number before purge. Must put before purgeLowPercentageAndFakeData. final int countOfAppBeforePurge = getCountOfApps(resultMap); - purgeLowPercentageAndFakeData(context, resultMap); + purgeFakeAndHiddenPackages(context, resultMap); // Compute the apps number after purge. Must put after purgeLowPercentageAndFakeData. final int countOfAppAfterPurge = getCountOfApps(resultMap); @@ -1122,7 +1120,7 @@ public final class DataProcessor { } // Removes low percentage data and fake usage data, which will be zero value. - private static void purgeLowPercentageAndFakeData( + private static void purgeFakeAndHiddenPackages( final Context context, final Map> resultMap) { final Set backgroundUsageTimeHideList = @@ -1139,17 +1137,17 @@ public final class DataProcessor { if (diffEntryLists == null) { return; } - purgeLowPercentageAndFakeData( + purgeFakeAndHiddenPackages( diffEntryLists.getAppDiffEntryList(), backgroundUsageTimeHideList, notAllowShowEntryPackages); - purgeLowPercentageAndFakeData( + purgeFakeAndHiddenPackages( diffEntryLists.getSystemDiffEntryList(), backgroundUsageTimeHideList, notAllowShowEntryPackages); }); }); } - private static void purgeLowPercentageAndFakeData( + private static void purgeFakeAndHiddenPackages( final List entries, final Set backgroundUsageTimeHideList, final CharSequence[] notAllowShowEntryPackages) { @@ -1157,8 +1155,7 @@ public final class DataProcessor { while (iterator.hasNext()) { final BatteryDiffEntry entry = iterator.next(); final String packageName = entry.getPackageName(); - if (entry.getPercentOfTotal() < PERCENTAGE_OF_TOTAL_THRESHOLD - || ConvertUtils.FAKE_PACKAGE_NAME.equals(packageName) + if (ConvertUtils.FAKE_PACKAGE_NAME.equals(packageName) || contains(packageName, notAllowShowEntryPackages)) { iterator.remove(); } diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java index 5a4f672f086..4ab1f42ef06 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java +++ b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java @@ -36,6 +36,8 @@ import com.android.settingslib.widget.AppPreference; */ public class PowerGaugePreference extends AppPreference { + private static final double PERCENTAGE_TO_SHOW_THRESHOLD = 1f; + private BatteryEntry mInfo; private BatteryDiffEntry mBatteryDiffEntry; private CharSequence mContentDescription; @@ -75,7 +77,8 @@ public class PowerGaugePreference extends AppPreference { /** Sets the percent of total. */ public void setPercent(double percentOfTotal) { - mProgress = Utils.formatPercentage(percentOfTotal, true); + mProgress = percentOfTotal < PERCENTAGE_TO_SHOW_THRESHOLD + ? "-" : Utils.formatPercentage(percentOfTotal, true); notifyChanged(); } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java index 5d599fe603a..e9573f1e436 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java @@ -104,4 +104,18 @@ public class PowerGaugePreferenceTest { assertThat(mPreferenceViewHolder.findViewById(android.R.id.title).getContentDescription()) .isEqualTo(CONTENT_DESCRIPTION); } + + @Test + public void setPercent_greaterThanThreshold_showNumber() { + mPowerGaugePreference.setPercent(99.5); + + assertThat(mPowerGaugePreference.getPercent()).isEqualTo("100%"); + } + + @Test + public void setPercent_lessThanThreshold_showBar() { + mPowerGaugePreference.setPercent(0.95); + + assertThat(mPowerGaugePreference.getPercent()).isEqualTo("-"); + } }