Merge "Distribute the misc among all the apps" into oc-dev

am: e494a3e59b

Change-Id: I58dbff46d38402162ce69e49f8d647efcb64fff2
This commit is contained in:
jackqdyulei
2017-04-25 21:55:34 +00:00
committed by android-build-merger
4 changed files with 43 additions and 8 deletions

View File

@@ -128,9 +128,8 @@ public class BatteryUtils {
final BatterySipper sipper = sippers.get(i);
if (shouldHideSipper(sipper)) {
sippers.remove(i);
if (sipper.drainType != BatterySipper.DrainType.OVERCOUNTED
&& sipper.drainType != BatterySipper.DrainType.UNACCOUNTED) {
// Don't add it if it is overcounted or unaccounted
if (sipper.drainType != BatterySipper.DrainType.OVERCOUNTED) {
// Don't add it if it is overcounted
totalPowerMah += sipper.totalPowerMah;
}
}

View File

@@ -69,8 +69,7 @@ public class PowerUsageAdvanced extends PowerUsageBase {
UsageType.UNACCOUNTED,
UsageType.OVERCOUNTED};
@VisibleForTesting
BatteryUtils mBatteryUtils;
private BatteryUtils mBatteryUtils;
private BatteryHistoryPreference mHistPref;
private PreferenceGroup mUsageListGroup;
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
@@ -258,8 +257,10 @@ public class PowerUsageAdvanced extends PowerUsageBase {
final List<PowerUsageData> batteryDataList = new ArrayList<>(batteryDataMap.values());
final int dischargeAmount = statusHelper.getStats().getDischargeAmount(STATUS_TYPE);
final double totalPower = statusHelper.getTotalPower();
final double hiddenPower = calculateHiddenPower(batteryDataList);
for (final PowerUsageData usageData : batteryDataList) {
usageData.percentage = (usageData.totalPowerMah / totalPower) * dischargeAmount;
usageData.percentage = mBatteryUtils.calculateBatteryPercent(usageData.totalPowerMah,
totalPower, hiddenPower, dischargeAmount);
updateUsageDataSummary(usageData, totalPower, dischargeAmount);
}
@@ -269,6 +270,17 @@ public class PowerUsageAdvanced extends PowerUsageBase {
return batteryDataList;
}
@VisibleForTesting
double calculateHiddenPower(List<PowerUsageData> batteryDataList) {
for (final PowerUsageData usageData : batteryDataList) {
if (usageData.usageType == UsageType.UNACCOUNTED) {
return usageData.totalPowerMah;
}
}
return 0;
}
@VisibleForTesting
void updateUsageDataSummary(PowerUsageData usageData, double totalPower, int dischargeAmount) {
if (shouldHideSummary(usageData)) {
@@ -322,6 +334,10 @@ public class PowerUsageAdvanced extends PowerUsageBase {
void setUserManager(UserManager userManager) {
mUserManager = userManager;
}
@VisibleForTesting
void setBatteryUtils(BatteryUtils batteryUtils) {
mBatteryUtils = batteryUtils;
}
/**
* Class that contains data used in {@link PowerGaugePreference}.

View File

@@ -70,6 +70,7 @@ public class BatteryUtilsTest {
private static final double BATTERY_SCREEN_USAGE = 300;
private static final double BATTERY_SYSTEM_USAGE = 600;
private static final double BATTERY_OVERACCOUNTED_USAGE = 500;
private static final double BATTERY_UNACCOUNTED_USAGE = 700;
private static final double TOTAL_BATTERY_USAGE = 1000;
private static final double HIDDEN_USAGE = 200;
private static final int DISCHARGE_AMOUNT = 80;
@@ -85,6 +86,8 @@ public class BatteryUtilsTest {
@Mock
private BatterySipper mOvercountedBatterySipper;
@Mock
private BatterySipper mUnaccountedBatterySipper;
@Mock
private BatterySipper mSystemBatterySipper;
@Mock
private BatterySipper mCellBatterySipper;
@@ -126,6 +129,9 @@ public class BatteryUtilsTest {
mOvercountedBatterySipper.drainType = BatterySipper.DrainType.OVERCOUNTED;
mOvercountedBatterySipper.totalPowerMah = BATTERY_OVERACCOUNTED_USAGE;
mUnaccountedBatterySipper.drainType = BatterySipper.DrainType.UNACCOUNTED;
mUnaccountedBatterySipper.totalPowerMah = BATTERY_UNACCOUNTED_USAGE;
mBatteryUtils = BatteryUtils.getInstance(RuntimeEnvironment.application);
mBatteryUtils.mPowerUsageFeatureProvider = mProvider;
@@ -171,12 +177,14 @@ public class BatteryUtilsTest {
sippers.add(mScreenBatterySipper);
sippers.add(mSystemBatterySipper);
sippers.add(mOvercountedBatterySipper);
sippers.add(mUnaccountedBatterySipper);
when(mProvider.isTypeSystem(mSystemBatterySipper))
.thenReturn(true);
final double totalUsage = mBatteryUtils.removeHiddenBatterySippers(sippers);
assertThat(sippers).containsExactly(mNormalBatterySipper);
assertThat(totalUsage).isWithin(PRECISION).of(BATTERY_SCREEN_USAGE + BATTERY_SYSTEM_USAGE);
assertThat(totalUsage).isWithin(PRECISION).of(
BATTERY_SCREEN_USAGE + BATTERY_SYSTEM_USAGE + BATTERY_UNACCOUNTED_USAGE);
}
@Test

View File

@@ -111,7 +111,7 @@ public class PowerUsageAdvancedTest {
mPowerUsageAdvanced.setPackageManager(mPackageManager);
mPowerUsageAdvanced.setPowerUsageFeatureProvider(mPowerUsageFeatureProvider);
mPowerUsageAdvanced.setUserManager(mUserManager);
mPowerUsageAdvanced.mBatteryUtils = spy(new BatteryUtils(mShadowContext));
mPowerUsageAdvanced.setBatteryUtils(BatteryUtils.getInstance(mShadowContext));
mPowerUsageData = new PowerUsageData(UsageType.APP);
mMaxBatterySipper.totalPowerMah = TYPE_BLUETOOTH_USAGE;
@@ -299,4 +299,16 @@ public class PowerUsageAdvancedTest {
assertThat(mPowerUsageAdvanced.shouldShowBatterySipper(mNormalBatterySipper)).isTrue();
}
@Test
public void testCalculateHiddenPower_returnCorrectPower() {
List<PowerUsageData> powerUsageDataList = new ArrayList<>();
final double unaccountedPower = 100;
final double normalPower = 150;
powerUsageDataList.add(new PowerUsageData(UsageType.UNACCOUNTED, unaccountedPower));
powerUsageDataList.add(new PowerUsageData(UsageType.APP, normalPower));
powerUsageDataList.add(new PowerUsageData(UsageType.CELL, normalPower));
assertThat(mPowerUsageAdvanced.calculateHiddenPower(powerUsageDataList)).isWithin(
PRECISION).of(unaccountedPower);
}
}