diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java index b54801a677a..7cf9e44bd66 100644 --- a/src/com/android/settings/fuelgauge/BatteryInfo.java +++ b/src/com/android/settings/fuelgauge/BatteryInfo.java @@ -53,7 +53,8 @@ public class BatteryInfo { public int batteryStatus; public int pluggedStatus; public boolean discharging = true; - public boolean isBatteryDefender; + public boolean isBatteryDefender = false; + public boolean isLongLife = false; public boolean isFastCharging; public long remainingTimeUs = 0; public long averageTimeToDischarge = EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN; @@ -306,7 +307,7 @@ public class BatteryInfo { info.pluggedStatus = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); info.mCharging = info.pluggedStatus != 0; info.averageTimeToDischarge = estimate.getAverageDischargeTime(); - info.isBatteryDefender = + info.isLongLife = batteryBroadcast.getIntExtra( BatteryManager.EXTRA_CHARGING_STATUS, BatteryManager.CHARGING_POLICY_DEFAULT) @@ -319,7 +320,7 @@ public class BatteryInfo { info.isFastCharging = BatteryStatus.getChargingSpeed(context, batteryBroadcast) == BatteryStatus.CHARGING_FAST; - if (info.isBatteryDefender) { + if (info.isLongLife) { info.isBatteryDefender = FeatureFactory.getFeatureFactory() .getPowerUsageFeatureProvider() diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index 9e08664c901..e5a314c90ff 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -600,7 +600,7 @@ public class BatteryUtils { context.getContentResolver(), SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 0) == 1) { return DockDefenderMode.TEMPORARILY_BYPASSED; - } else if (batteryInfo.isBatteryDefender + } else if (batteryInfo.isLongLife && FeatureFactory.getFeatureFactory() .getPowerUsageFeatureProvider() .isExtraDefend()) { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java index 7bafc6d5198..b7e65906fab 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java @@ -789,6 +789,40 @@ public class BatteryInfoTest { expectedChargeLabel); } + @Test + public void getBatteryInfo_longlife_shouldSetLonglife() { + var batteryIntent = createIntentForLongLifeTest(/* hasLongLife= */ true); + + var batteryInfo = + BatteryInfo.getBatteryInfo( + mContext, + batteryIntent, + mBatteryUsageStats, + /* estimate= */ MOCK_ESTIMATE, + /* elapsedRealtimeUs= */ 0L, + /* shortString= */ false, + /* currentTimeMs= */ 0L); + + assertThat(batteryInfo.isLongLife).isTrue(); + } + + @Test + public void getBatteryInfo_noLonglife_shouldNotLonglife() { + var batteryIntent = createIntentForLongLifeTest(/* hasLongLife= */ false); + + var batteryInfo = + BatteryInfo.getBatteryInfo( + mContext, + batteryIntent, + mBatteryUsageStats, + /* estimate= */ MOCK_ESTIMATE, + /* elapsedRealtimeUs= */ 0L, + /* shortString= */ false, + /* currentTimeMs= */ 0L); + + assertThat(batteryInfo.isLongLife).isFalse(); + } + private enum ChargingSpeed { FAST, REGULAR, @@ -801,6 +835,15 @@ public class BatteryInfoTest { DOCKED } + private Intent createIntentForLongLifeTest(Boolean hasLongLife) { + return new Intent(Intent.ACTION_BATTERY_CHANGED) + .putExtra( + BatteryManager.EXTRA_CHARGING_STATUS, + hasLongLife + ? BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE + : BatteryManager.CHARGING_POLICY_DEFAULT); + } + private Intent createIntentForGetBatteryInfoTest( ChargingType chargingType, ChargingSpeed chargingSpeed, int batteryLevel) { return createBatteryIntent(