Loading src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +22 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)); Loading Loading @@ -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)) { Loading @@ -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<PowerUsageData> parsePowerUsageData(BatteryStatsHelper statusHelper) { final List<BatterySipper> batterySippers = statusHelper.getUsageList(); Loading Loading @@ -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; Loading @@ -308,6 +325,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { int USER = 6; int IDLE = 7; int UNACCOUNTED = 8; int OVERCOUNTED = 9; } @StringRes Loading Loading @@ -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; Loading src/com/android/settings/fuelgauge/PowerUsageSummary.java +7 −1 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -625,9 +627,13 @@ public class PowerUsageSummary extends PowerUsageBase { final BatterySipper sipper = sippers.get(i); if (shouldHideSipper(sipper)) { sippers.remove(i); if (sipper.drainType != DrainType.OVERCOUNTED && sipper.drainType != DrainType.UNACCOUNTED) { // Don't add it if it is overcounted or unaccounted totalPowerMah += sipper.totalPowerMah; } } } return totalPowerMah; } Loading tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java +24 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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(); } } tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -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 = Loading @@ -112,6 +113,8 @@ public class PowerUsageSummaryTest { @Mock private BatterySipper mScreenBatterySipper; @Mock private BatterySipper mOvercountedBatterySipper; @Mock private BatterySipper mSystemBatterySipper; @Mock private BatterySipper mCellBatterySipper; Loading Loading @@ -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); Loading Loading @@ -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); Loading @@ -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; Loading Loading
src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +22 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)); Loading Loading @@ -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)) { Loading @@ -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<PowerUsageData> parsePowerUsageData(BatteryStatsHelper statusHelper) { final List<BatterySipper> batterySippers = statusHelper.getUsageList(); Loading Loading @@ -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; Loading @@ -308,6 +325,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { int USER = 6; int IDLE = 7; int UNACCOUNTED = 8; int OVERCOUNTED = 9; } @StringRes Loading Loading @@ -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; Loading
src/com/android/settings/fuelgauge/PowerUsageSummary.java +7 −1 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -625,9 +627,13 @@ public class PowerUsageSummary extends PowerUsageBase { final BatterySipper sipper = sippers.get(i); if (shouldHideSipper(sipper)) { sippers.remove(i); if (sipper.drainType != DrainType.OVERCOUNTED && sipper.drainType != DrainType.UNACCOUNTED) { // Don't add it if it is overcounted or unaccounted totalPowerMah += sipper.totalPowerMah; } } } return totalPowerMah; } Loading
tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java +24 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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(); } }
tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -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 = Loading @@ -112,6 +113,8 @@ public class PowerUsageSummaryTest { @Mock private BatterySipper mScreenBatterySipper; @Mock private BatterySipper mOvercountedBatterySipper; @Mock private BatterySipper mSystemBatterySipper; @Mock private BatterySipper mCellBatterySipper; Loading Loading @@ -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); Loading Loading @@ -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); Loading @@ -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; Loading