Fix wrong voice call time in battery page

The voice call is belong to DrainType.PHONE, which is not an app.
This cl stop using method in BatteryUtils to calculate the time, since
that method should only be used for DrainType.APP

Bug: 37402819
Test: RunSettingsRoboTests
Change-Id: I3aa7366401e54df87ffe913af0dcb1bcd5abf110
This commit is contained in:
jackqdyulei
2017-04-20 09:48:02 -07:00
parent 667d694220
commit 34145705de
2 changed files with 25 additions and 4 deletions

View File

@@ -101,11 +101,12 @@ public class AdvancedPowerUsageDetail extends PowerUsageBase implements
final BatterySipper sipper = entry.sipper;
final BatteryStats.Uid uid = sipper.uidObj;
final BatteryUtils batteryUtils = BatteryUtils.getInstance(caller);
final boolean isTypeApp = sipper.drainType == BatterySipper.DrainType.APP;
final long backgroundTimeMs = batteryUtils.getProcessTimeMs(
BatteryUtils.StatusType.BACKGROUND, uid, which);
final long foregroundTimeMs = batteryUtils.getProcessTimeMs(
BatteryUtils.StatusType.FOREGROUND, uid, which);
final long foregroundTimeMs = isTypeApp ? batteryUtils.getProcessTimeMs(
BatteryUtils.StatusType.FOREGROUND, uid, which) : sipper.usageTimeMs;
final long backgroundTimeMs = isTypeApp ? batteryUtils.getProcessTimeMs(
BatteryUtils.StatusType.BACKGROUND, uid, which) : 0;
if (ArrayUtils.isEmpty(sipper.mPackages)) {
// populate data for system app

View File

@@ -73,6 +73,8 @@ public class AdvancedPowerUsageDetailTest {
private static final long FOREGROUND_TIME_US = 200 * 1000;
private static final long BACKGROUND_TIME_MS = 100;
private static final long FOREGROUND_TIME_MS = 200;
private static final long PHONE_FOREGROUND_TIME_MS = 250 * 1000;
private static final long PHONE_BACKGROUND_TIME_MS = 0;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext;
@@ -137,6 +139,7 @@ public class AdvancedPowerUsageDetailTest {
ReflectionHelpers.setField(mBatteryEntry, "sipper", mBatterySipper);
mBatteryEntry.iconId = ICON_ID;
mBatterySipper.uidObj = mUid;
mBatterySipper.drainType = BatterySipper.DrainType.APP;
mFragment.mHeaderPreference = mHeaderPreference;
mFragment.mState = mState;
@@ -190,6 +193,23 @@ public class AdvancedPowerUsageDetailTest {
USAGE_PERCENT);
}
@Test
public void testStartBatteryDetailPage_typeNotApp_hasBasicData() {
mBatterySipper.drainType = BatterySipper.DrainType.PHONE;
mBatterySipper.usageTimeMs = PHONE_FOREGROUND_TIME_MS;
AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, null, mBatteryStatsHelper, 0,
mBatteryEntry, USAGE_PERCENT);
assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID);
assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME)).isEqualTo(
PHONE_FOREGROUND_TIME_MS);
assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME)).isEqualTo(
PHONE_BACKGROUND_TIME_MS);
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT)).isEqualTo(
USAGE_PERCENT);
}
@Test
public void testStartBatteryDetailPage_NormalApp() {
mBatterySipper.mPackages = PACKAGE_NAME;