diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java index 0c798a64baa..a73902afb42 100644 --- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java @@ -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 diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java index 801034c76e4..15fec3c33a1 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java @@ -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;