From ab5ca9f5cd398e37f03480c268dc272e9999ad33 Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Tue, 4 Apr 2017 13:04:36 -0700 Subject: [PATCH] Remove misc data in battery main page. The removed types are: 1. DrainType.UNACCOUNTED 2. DrainType.OVERCOUNTED This cl removes the above types in PowerUsageSummary and PowerUsageAdvanced Bug: 36874846 Test: RunSettingsRoboTests Change-Id: I1807c44a2c0a9c2fa124cdef962a6411ae6830ca --- .../fuelgauge/PowerUsageAdvanced.java | 24 ++++++++++++++++-- .../settings/fuelgauge/PowerUsageSummary.java | 8 +++++- .../fuelgauge/PowerUsageAdvancedTest.java | 25 ++++++++++++++++++- .../fuelgauge/PowerUsageSummaryTest.java | 19 ++++++++++++++ 4 files changed, 72 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java index fe0cf4d77ef..b341760f52f 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +++ b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java @@ -66,7 +66,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { UsageType.USER, UsageType.IDLE, UsageType.APP, - UsageType.UNACCOUNTED}; + UsageType.UNACCOUNTED, + UsageType.OVERCOUNTED}; private BatteryHistoryPreference mHistPref; private PreferenceGroup mUsageListGroup; private PowerUsageFeatureProvider mPowerUsageFeatureProvider; @@ -169,6 +170,9 @@ public class PowerUsageAdvanced extends PowerUsageBase { mUsageListGroup.removeAll(); for (int i = 0, size = dataList.size(); i < size; i++) { final PowerUsageData batteryData = dataList.get(i); + if (shouldHide(batteryData)) { + continue; + } final PowerGaugePreference pref = new PowerGaugePreference(getPrefContext()); pref.setKey(String.valueOf(batteryData.usageType)); @@ -199,6 +203,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { return UsageType.CELL; } else if (drainType == DrainType.UNACCOUNTED) { return UsageType.UNACCOUNTED; + } else if (drainType == DrainType.OVERCOUNTED) { + return UsageType.OVERCOUNTED; } else if (mPowerUsageFeatureProvider.isTypeSystem(sipper)) { return UsageType.SYSTEM; } else if (mPowerUsageFeatureProvider.isTypeService(sipper)) { @@ -208,6 +214,16 @@ public class PowerUsageAdvanced extends PowerUsageBase { } } + @VisibleForTesting + boolean shouldHide(PowerUsageData powerUsageData) { + if (powerUsageData.usageType == UsageType.UNACCOUNTED + || powerUsageData.usageType == UsageType.OVERCOUNTED) { + return true; + } + + return false; + } + @VisibleForTesting List parsePowerUsageData(BatteryStatsHelper statusHelper) { final List batterySippers = statusHelper.getUsageList(); @@ -297,7 +313,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { UsageType.BLUETOOTH, UsageType.USER, UsageType.IDLE, - UsageType.UNACCOUNTED}) + UsageType.UNACCOUNTED, + UsageType.OVERCOUNTED}) public @interface UsageType { int APP = 0; int WIFI = 1; @@ -308,6 +325,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { int USER = 6; int IDLE = 7; int UNACCOUNTED = 8; + int OVERCOUNTED = 9; } @StringRes @@ -353,6 +371,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { return R.string.power_idle; case UsageType.UNACCOUNTED: return R.string.power_unaccounted; + case UsageType.OVERCOUNTED: + return R.string.power_overcounted; case UsageType.APP: default: return R.string.power_apps; diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 2c1fd7898ed..d9323dbfbf1 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -599,6 +599,8 @@ public class PowerUsageSummary extends PowerUsageBase { || drainType == DrainType.WIFI || drainType == DrainType.SCREEN || drainType == DrainType.BLUETOOTH + || drainType == DrainType.UNACCOUNTED + || drainType == DrainType.OVERCOUNTED || (sipper.totalPowerMah * SECONDS_IN_HOUR) < MIN_POWER_THRESHOLD_MILLI_AMP || mPowerFeatureProvider.isTypeService(sipper) || mPowerFeatureProvider.isTypeSystem(sipper); @@ -625,7 +627,11 @@ public class PowerUsageSummary extends PowerUsageBase { final BatterySipper sipper = sippers.get(i); if (shouldHideSipper(sipper)) { sippers.remove(i); - totalPowerMah += sipper.totalPowerMah; + if (sipper.drainType != DrainType.OVERCOUNTED + && sipper.drainType != DrainType.UNACCOUNTED) { + // Don't add it if it is overcounted or unaccounted + totalPowerMah += sipper.totalPowerMah; + } } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java index 6ac65000809..4216d57723d 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java @@ -207,7 +207,7 @@ public class PowerUsageAdvancedTest { assertThat(usageTypeSet).asList().containsExactly(UsageType.APP, UsageType.WIFI, UsageType.CELL, UsageType.BLUETOOTH, UsageType.IDLE, UsageType.SERVICE, - UsageType.USER, UsageType.SYSTEM, UsageType.UNACCOUNTED); + UsageType.USER, UsageType.SYSTEM, UsageType.UNACCOUNTED, UsageType.OVERCOUNTED); } @Test @@ -223,4 +223,27 @@ public class PowerUsageAdvancedTest { assertThat(dataList.get(i - 1).totalPowerMah).isAtLeast(dataList.get(i).totalPowerMah); } } + + @Test + public void testShouldHide_typeUnAccounted_returnTrue() { + mPowerUsageData.usageType = UsageType.UNACCOUNTED; + + assertThat(mPowerUsageAdvanced.shouldHide(mPowerUsageData)).isTrue(); + } + + + @Test + public void testShouldHide_typeOverCounted_returnTrue() { + mPowerUsageData.usageType = UsageType.OVERCOUNTED; + + assertThat(mPowerUsageAdvanced.shouldHide(mPowerUsageData)).isTrue(); + } + + + @Test + public void testShouldHide_typeNormal_returnFalse() { + mPowerUsageData.usageType = UsageType.APP; + + assertThat(mPowerUsageAdvanced.shouldHide(mPowerUsageData)).isFalse(); + } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java index 5f2d54f1a43..7f59b18671b 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java @@ -90,6 +90,7 @@ public class PowerUsageSummaryTest { private static final double TOTAL_POWER = 200; private static final double BATTERY_SCREEN_USAGE = 300; private static final double BATTERY_SYSTEM_USAGE = 600; + private static final double BATTERY_OVERCOUNTED_USAGE = 500; private static final double PRECISION = 0.001; private static final double POWER_USAGE_PERCENTAGE = 50; private static final Intent ADDITIONAL_BATTERY_INFO_INTENT = @@ -112,6 +113,8 @@ public class PowerUsageSummaryTest { @Mock private BatterySipper mScreenBatterySipper; @Mock + private BatterySipper mOvercountedBatterySipper; + @Mock private BatterySipper mSystemBatterySipper; @Mock private BatterySipper mCellBatterySipper; @@ -188,6 +191,9 @@ public class PowerUsageSummaryTest { mSystemBatterySipper.totalPowerMah = BATTERY_SYSTEM_USAGE; when(mSystemBatterySipper.getUid()).thenReturn(Process.SYSTEM_UID); + mOvercountedBatterySipper.drainType = BatterySipper.DrainType.OVERCOUNTED; + mOvercountedBatterySipper.totalPowerMah = BATTERY_OVERCOUNTED_USAGE; + mUsageList = new ArrayList<>(); mUsageList.add(mNormalBatterySipper); mUsageList.add(mScreenBatterySipper); @@ -303,6 +309,7 @@ public class PowerUsageSummaryTest { sippers.add(mNormalBatterySipper); sippers.add(mScreenBatterySipper); sippers.add(mSystemBatterySipper); + sippers.add(mOvercountedBatterySipper); when(mFeatureFactory.powerUsageFeatureProvider.isTypeSystem(mSystemBatterySipper)) .thenReturn(true); @@ -317,6 +324,18 @@ public class PowerUsageSummaryTest { assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue(); } + @Test + public void testShouldHideSipper_TypeUnAccounted_ReturnTrue() { + mNormalBatterySipper.drainType = BatterySipper.DrainType.UNACCOUNTED; + assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue(); + } + + @Test + public void testShouldHideSipper_TypeOverCounted_ReturnTrue() { + mNormalBatterySipper.drainType = BatterySipper.DrainType.OVERCOUNTED; + assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue(); + } + @Test public void testShouldHideSipper_typeWifi_returnTrue() { mNormalBatterySipper.drainType = BatterySipper.DrainType.WIFI;