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..7cb5733a9b0 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -600,12 +600,12 @@ 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()) { return DockDefenderMode.ACTIVE; - } else if (!batteryInfo.isBatteryDefender) { + } else if (!batteryInfo.isLongLife) { return DockDefenderMode.FUTURE_BYPASS; } } diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index dc5b2269cf8..8ba63749cbd 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -247,7 +247,7 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider @Override public boolean isBatteryDefend(BatteryInfo info) { - return info.isBatteryDefender && !isExtraDefend(); + return info.isLongLife && !isExtraDefend(); } @Override diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java index 639b3c7b20d..6ff266574c9 100644 --- a/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java +++ b/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java @@ -21,7 +21,6 @@ import android.content.Context; import com.android.settings.fuelgauge.BatteryInfo; import com.android.settings.fuelgauge.batterytip.tips.BatteryDefenderTip; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; -import com.android.settings.overlay.FeatureFactory; /** Detect whether the battery is overheated */ public class BatteryDefenderDetector implements BatteryTipDetector { @@ -35,12 +34,10 @@ public class BatteryDefenderDetector implements BatteryTipDetector { @Override public BatteryTip detect() { - final boolean isBasicBatteryDefend = - FeatureFactory.getFeatureFactory() - .getPowerUsageFeatureProvider() - .isBatteryDefend(mBatteryInfo); final int state = - isBasicBatteryDefend ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE; + mBatteryInfo.isBatteryDefender + ? BatteryTip.StateType.NEW + : BatteryTip.StateType.INVISIBLE; final boolean isPluggedIn = mBatteryInfo.pluggedStatus != 0; return new BatteryDefenderTip(state, isPluggedIn); } 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( diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java index 6b32ff54c57..cecf8f0f6be 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java @@ -165,7 +165,7 @@ public class PowerUsageFeatureProviderImplTest { @Test public void isBatteryDefend_defenderModeAndExtraDefendAreFalse_returnFalse() { - mBatteryInfo.isBatteryDefender = false; + mBatteryInfo.isLongLife = false; doReturn(false).when(mPowerFeatureProvider).isExtraDefend(); assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isFalse(); @@ -173,7 +173,7 @@ public class PowerUsageFeatureProviderImplTest { @Test public void isBatteryDefend_defenderModeIsFalse_returnFalse() { - mBatteryInfo.isBatteryDefender = false; + mBatteryInfo.isLongLife = false; doReturn(true).when(mPowerFeatureProvider).isExtraDefend(); assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isFalse(); @@ -181,7 +181,7 @@ public class PowerUsageFeatureProviderImplTest { @Test public void isBatteryDefend_defenderModeAndExtraDefendAreTrue_returnFalse() { - mBatteryInfo.isBatteryDefender = true; + mBatteryInfo.isLongLife = true; doReturn(true).when(mPowerFeatureProvider).isExtraDefend(); assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isFalse(); @@ -189,7 +189,7 @@ public class PowerUsageFeatureProviderImplTest { @Test public void isBatteryDefend_extraDefendIsFalse_returnTrue() { - mBatteryInfo.isBatteryDefender = true; + mBatteryInfo.isLongLife = true; doReturn(false).when(mPowerFeatureProvider).isExtraDefend(); assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isTrue(); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java index ab1ceb582aa..7643c410d5a 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java @@ -18,15 +18,12 @@ package com.android.settings.fuelgauge.batterytip.detectors; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.when; - import android.content.Context; import androidx.test.core.app.ApplicationProvider; import com.android.settings.fuelgauge.BatteryInfo; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; -import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; import org.junit.Test; @@ -41,28 +38,23 @@ public class BatteryDefenderDetectorTest { @Mock private BatteryInfo mBatteryInfo; private BatteryDefenderDetector mBatteryDefenderDetector; - private FakeFeatureFactory mFakeFeatureFactory; - @Before public void setUp() { MockitoAnnotations.initMocks(this); final Context context = ApplicationProvider.getApplicationContext(); mBatteryDefenderDetector = new BatteryDefenderDetector(mBatteryInfo, context); - mFakeFeatureFactory = FakeFeatureFactory.setupForTest(); } @Test public void detect_notBatteryDefend_tipInvisible() { - when(mFakeFeatureFactory.powerUsageFeatureProvider.isBatteryDefend(mBatteryInfo)) - .thenReturn(false); + mBatteryInfo.isBatteryDefender = false; assertThat(mBatteryDefenderDetector.detect().isVisible()).isFalse(); } @Test public void detect_isBatteryDefend_tipNew() { - when(mFakeFeatureFactory.powerUsageFeatureProvider.isBatteryDefend(mBatteryInfo)) - .thenReturn(true); + mBatteryInfo.isBatteryDefender = true; assertThat(mBatteryDefenderDetector.detect().getState()) .isEqualTo(BatteryTip.StateType.NEW);