diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index 3c493b9eb65..e8668d1a93a 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -214,6 +214,11 @@ public class BatteryUtils { } if (totalActivityTimeMs >= 10 * DateUtils.MINUTE_IN_MILLIS) { + if (screenSipper == null) { + Log.e(TAG, "screen sipper is null even when app screen time is not zero"); + return; + } + final double screenPowerMah = screenSipper.totalPowerMah; for (int i = 0, size = sippers.size(); i < size; i++) { final BatterySipper sipper = sippers.get(i); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java index 8b1076d8634..e05ff52246f 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java @@ -376,6 +376,18 @@ public class BatteryUtilsTest { BATTERY_APP_USAGE + BATTERY_SCREEN_USAGE / 2); } + @Test + public void testSmearScreenBatterySipper_screenSipperNull_shouldNotCrash() { + final BatterySipper sipperFg = createTestSmearBatterySipper(TIME_FOREGROUND, + BATTERY_APP_USAGE, 2 /* uid */, false /* isUidNull */); + + final List sippers = new ArrayList<>(); + sippers.add(sipperFg); + + // Shouldn't crash + mBatteryUtils.smearScreenBatterySipper(sippers, null /* screenSipper */); + } + @Test public void testCalculateRunningTimeBasedOnStatsType() { assertThat(mBatteryUtils.calculateRunningTimeBasedOnStatsType(mBatteryStatsHelper,