[Bug Fix] "Dock defend string and tips in settings are incorrectly" issue
Symptom: After the dock defend was triggered, the battery tips still show "Future-Bypass" dock defend mode. It should be the "Active" dock defend mode. Root Cause: The original `BatteryInfo.isBatteryDefender` was implemented by using `longlife`, due to the charging limit also reuse `longlife` issue, we replace the implementation of `BatteryInfo.isBatteryDefender` with HAL API call `isTempDefend` and `isDwellDefend`. However, the dock defend also needs `longlife`, the original `BatteryInfo.isBatteryDefender`. So the dock defend checking failed after replacing the implementation of `BatteryInfo.isBatteryDefender` Solution: - Add new property isLonglife in BatteryInfo - Replace all isBatteryDefender reference that needs isLonglife Bug: 348563863 Test: Manual Test and robotest Test: http://ab/I08300010291126076 (unit test) Test: http://ab/I67800010291096764 (robo test) Flag: EXEMPT bugfix Change-Id: I58424927522acc29dc49261a2c24829a5b34ef85
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user