Provide different ways to detect battery defender.
Bug: 335567248 Test: robotests Change-Id: Ie1d3d7da99fa698468ffd124410cfd3b56bc0c34
This commit is contained in:
@@ -151,4 +151,7 @@ public interface PowerUsageFeatureProvider {
|
|||||||
|
|
||||||
/** Whether the app optimization mode is valid to restore */
|
/** Whether the app optimization mode is valid to restore */
|
||||||
boolean isValidToRestoreOptimizationMode(ArrayMap<String, String> deviceInfoMap);
|
boolean isValidToRestoreOptimizationMode(ArrayMap<String, String> deviceInfoMap);
|
||||||
|
|
||||||
|
/** Whether the device is under the battery defender mode */
|
||||||
|
boolean isBatteryDefend(BatteryInfo info);
|
||||||
}
|
}
|
||||||
|
@@ -235,4 +235,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
|
|||||||
public boolean isValidToRestoreOptimizationMode(ArrayMap<String, String> deviceInfoMap) {
|
public boolean isValidToRestoreOptimizationMode(ArrayMap<String, String> deviceInfoMap) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isBatteryDefend(BatteryInfo info) {
|
||||||
|
return info.isBatteryDefender && !isExtraDefend();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -36,10 +36,9 @@ public class BatteryDefenderDetector implements BatteryTipDetector {
|
|||||||
@Override
|
@Override
|
||||||
public BatteryTip detect() {
|
public BatteryTip detect() {
|
||||||
final boolean isBasicBatteryDefend =
|
final boolean isBasicBatteryDefend =
|
||||||
mBatteryInfo.isBatteryDefender
|
FeatureFactory.getFeatureFactory()
|
||||||
&& !FeatureFactory.getFeatureFactory()
|
.getPowerUsageFeatureProvider()
|
||||||
.getPowerUsageFeatureProvider()
|
.isBatteryDefend(mBatteryInfo);
|
||||||
.isExtraDefend();
|
|
||||||
final int state =
|
final int state =
|
||||||
isBasicBatteryDefend ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
|
isBasicBatteryDefend ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
|
||||||
final boolean isPluggedIn = mBatteryInfo.pluggedStatus != 0;
|
final boolean isPluggedIn = mBatteryInfo.pluggedStatus != 0;
|
||||||
|
@@ -18,6 +18,8 @@ package com.android.settings.fuelgauge;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -48,6 +50,8 @@ public class PowerUsageFeatureProviderImplTest {
|
|||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
@Mock private PackageManager mPackageManager;
|
@Mock private PackageManager mPackageManager;
|
||||||
|
@Mock private BatteryInfo mBatteryInfo;
|
||||||
|
|
||||||
private PowerUsageFeatureProviderImpl mPowerFeatureProvider;
|
private PowerUsageFeatureProviderImpl mPowerFeatureProvider;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -55,73 +59,74 @@ public class PowerUsageFeatureProviderImplTest {
|
|||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
when(mContext.getApplicationContext()).thenReturn(mContext);
|
when(mContext.getApplicationContext()).thenReturn(mContext);
|
||||||
mPowerFeatureProvider = new PowerUsageFeatureProviderImpl(mContext);
|
mPowerFeatureProvider = spy(new PowerUsageFeatureProviderImpl(mContext));
|
||||||
when(mPackageManager.getPackagesForUid(UID_CALENDAR)).thenReturn(PACKAGES_CALENDAR);
|
when(mPackageManager.getPackagesForUid(UID_CALENDAR)).thenReturn(PACKAGES_CALENDAR);
|
||||||
when(mPackageManager.getPackagesForUid(UID_MEDIA)).thenReturn(PACKAGES_MEDIA);
|
when(mPackageManager.getPackagesForUid(UID_MEDIA)).thenReturn(PACKAGES_MEDIA);
|
||||||
when(mPackageManager.getPackagesForUid(UID_SYSTEMUI)).thenReturn(PACKAGES_SYSTEMUI);
|
when(mPackageManager.getPackagesForUid(UID_SYSTEMUI)).thenReturn(PACKAGES_SYSTEMUI);
|
||||||
mPowerFeatureProvider.mPackageManager = mPackageManager;
|
mPowerFeatureProvider.mPackageManager = mPackageManager;
|
||||||
|
mBatteryInfo.discharging = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsBatteryUsageEnabled_returnFalse() {
|
public void isBatteryUsageEnabled_returnFalse() {
|
||||||
assertThat(mPowerFeatureProvider.isBatteryUsageEnabled()).isTrue();
|
assertThat(mPowerFeatureProvider.isBatteryUsageEnabled()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsBatteryTipsEnabled_returnFalse() {
|
public void isBatteryTipsEnabled_returnFalse() {
|
||||||
assertThat(mPowerFeatureProvider.isBatteryTipsEnabled()).isFalse();
|
assertThat(mPowerFeatureProvider.isBatteryTipsEnabled()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsAppOptimizationModeLogged_returnFalse() {
|
public void isAppOptimizationModeLogged_returnFalse() {
|
||||||
assertThat(mPowerFeatureProvider.isAppOptimizationModeLogged()).isFalse();
|
assertThat(mPowerFeatureProvider.isAppOptimizationModeLogged()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetBatteryUsageListConsumePowerThreshold_return0() {
|
public void getBatteryUsageListConsumePowerThreshold_return0() {
|
||||||
assertThat(mPowerFeatureProvider.getBatteryUsageListConsumePowerThreshold()).isEqualTo(0.0);
|
assertThat(mPowerFeatureProvider.getBatteryUsageListConsumePowerThreshold()).isEqualTo(0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsTypeSystem_uidRoot_returnTrue() {
|
public void isTypeSystem_uidRoot_returnTrue() {
|
||||||
assertThat(mPowerFeatureProvider.isTypeSystem(Process.ROOT_UID, null)).isTrue();
|
assertThat(mPowerFeatureProvider.isTypeSystem(Process.ROOT_UID, null)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsTypeSystem_uidSystem_returnTrue() {
|
public void isTypeSystem_uidSystem_returnTrue() {
|
||||||
assertThat(mPowerFeatureProvider.isTypeSystem(Process.SYSTEM_UID, null)).isTrue();
|
assertThat(mPowerFeatureProvider.isTypeSystem(Process.SYSTEM_UID, null)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsTypeSystem_uidMedia_returnTrue() {
|
public void isTypeSystem_uidMedia_returnTrue() {
|
||||||
assertThat(mPowerFeatureProvider.isTypeSystem(Process.MEDIA_UID, null)).isTrue();
|
assertThat(mPowerFeatureProvider.isTypeSystem(Process.MEDIA_UID, null)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
@Ignore
|
||||||
public void testIsTypeSystem_appCalendar_returnTrue() {
|
public void isTypeSystem_appCalendar_returnTrue() {
|
||||||
assertThat(mPowerFeatureProvider.isTypeSystem(UID_CALENDAR, null)).isTrue();
|
assertThat(mPowerFeatureProvider.isTypeSystem(UID_CALENDAR, null)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
@Ignore
|
||||||
public void testIsTypeSystem_appMedia_returnTrue() {
|
public void isTypeSystem_appMedia_returnTrue() {
|
||||||
assertThat(mPowerFeatureProvider.isTypeSystem(UID_MEDIA, null)).isTrue();
|
assertThat(mPowerFeatureProvider.isTypeSystem(UID_MEDIA, null)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
@Ignore
|
||||||
public void testIsTypeSystem_appSystemUi_returnTrue() {
|
public void isTypeSystem_appSystemUi_returnTrue() {
|
||||||
assertThat(mPowerFeatureProvider.isTypeSystem(UID_SYSTEMUI, null)).isTrue();
|
assertThat(mPowerFeatureProvider.isTypeSystem(UID_SYSTEMUI, null)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsTypeSystem_uidOther_returnFalse() {
|
public void isTypeSystem_uidOther_returnFalse() {
|
||||||
assertThat(mPowerFeatureProvider.isTypeSystem(UID_OTHER, null)).isFalse();
|
assertThat(mPowerFeatureProvider.isTypeSystem(UID_OTHER, null)).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsSmartBatterySupported_smartBatterySupported_returnTrue() {
|
public void isSmartBatterySupported_smartBatterySupported_returnTrue() {
|
||||||
when(mContext.getResources()
|
when(mContext.getResources()
|
||||||
.getBoolean(com.android.internal.R.bool.config_smart_battery_available))
|
.getBoolean(com.android.internal.R.bool.config_smart_battery_available))
|
||||||
.thenReturn(true);
|
.thenReturn(true);
|
||||||
@@ -130,7 +135,7 @@ public class PowerUsageFeatureProviderImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsSmartBatterySupported_smartBatteryNotSupported_returnFalse() {
|
public void isSmartBatterySupported_smartBatteryNotSupported_returnFalse() {
|
||||||
when(mContext.getResources()
|
when(mContext.getResources()
|
||||||
.getBoolean(com.android.internal.R.bool.config_smart_battery_available))
|
.getBoolean(com.android.internal.R.bool.config_smart_battery_available))
|
||||||
.thenReturn(false);
|
.thenReturn(false);
|
||||||
@@ -139,17 +144,49 @@ public class PowerUsageFeatureProviderImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsAdaptiveChargingSupported_returnFalse() {
|
public void isAdaptiveChargingSupported_returnFalse() {
|
||||||
assertThat(mPowerFeatureProvider.isAdaptiveChargingSupported()).isFalse();
|
assertThat(mPowerFeatureProvider.isAdaptiveChargingSupported()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetResumeChargeIntentWithoutDockDefender_returnNull() {
|
public void getResumeChargeIntentWithoutDockDefender_returnNull() {
|
||||||
assertThat(mPowerFeatureProvider.getResumeChargeIntent(false)).isNull();
|
assertThat(mPowerFeatureProvider.getResumeChargeIntent(false)).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetResumeChargeIntentWithDockDefender_returnNull() {
|
public void getResumeChargeIntentWithDockDefender_returnNull() {
|
||||||
assertThat(mPowerFeatureProvider.getResumeChargeIntent(true)).isNull();
|
assertThat(mPowerFeatureProvider.getResumeChargeIntent(true)).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isBatteryDefend_defenderModeAndExtraDefendAreFalse_returnFalse() {
|
||||||
|
mBatteryInfo.isBatteryDefender = false;
|
||||||
|
doReturn(false).when(mPowerFeatureProvider).isExtraDefend();
|
||||||
|
|
||||||
|
assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isBatteryDefend_defenderModeIsFalse_returnFalse() {
|
||||||
|
mBatteryInfo.isBatteryDefender = false;
|
||||||
|
doReturn(true).when(mPowerFeatureProvider).isExtraDefend();
|
||||||
|
|
||||||
|
assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isBatteryDefend_defenderModeAndExtraDefendAreTrue_returnFalse() {
|
||||||
|
mBatteryInfo.isBatteryDefender = true;
|
||||||
|
doReturn(true).when(mPowerFeatureProvider).isExtraDefend();
|
||||||
|
|
||||||
|
assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isBatteryDefend_extraDefendIsFalse_returnTrue() {
|
||||||
|
mBatteryInfo.isBatteryDefender = true;
|
||||||
|
doReturn(false).when(mPowerFeatureProvider).isExtraDefend();
|
||||||
|
|
||||||
|
assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isTrue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -40,53 +40,32 @@ public class BatteryDefenderDetectorTest {
|
|||||||
|
|
||||||
@Mock private BatteryInfo mBatteryInfo;
|
@Mock private BatteryInfo mBatteryInfo;
|
||||||
private BatteryDefenderDetector mBatteryDefenderDetector;
|
private BatteryDefenderDetector mBatteryDefenderDetector;
|
||||||
private Context mContext;
|
|
||||||
|
|
||||||
private FakeFeatureFactory mFakeFeatureFactory;
|
private FakeFeatureFactory mFakeFeatureFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
final Context context = ApplicationProvider.getApplicationContext();
|
||||||
mBatteryInfo.discharging = false;
|
mBatteryDefenderDetector = new BatteryDefenderDetector(mBatteryInfo, context);
|
||||||
|
|
||||||
mContext = ApplicationProvider.getApplicationContext();
|
|
||||||
|
|
||||||
mBatteryDefenderDetector = new BatteryDefenderDetector(mBatteryInfo, mContext);
|
|
||||||
|
|
||||||
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDetect_notDefenderNotExtraDefend_tipInvisible() {
|
public void detect_notBatteryDefend_tipInvisible() {
|
||||||
mBatteryInfo.isBatteryDefender = false;
|
when(mFakeFeatureFactory.powerUsageFeatureProvider.isBatteryDefend(mBatteryInfo))
|
||||||
when(mFakeFeatureFactory.powerUsageFeatureProvider.isExtraDefend()).thenReturn(false);
|
.thenReturn(false);
|
||||||
|
|
||||||
assertThat(mBatteryDefenderDetector.detect().isVisible()).isFalse();
|
assertThat(mBatteryDefenderDetector.detect().isVisible()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDetect_notDefenderIsExtraDefend_tipInvisible() {
|
public void detect_isBatteryDefend_tipNew() {
|
||||||
mBatteryInfo.isBatteryDefender = false;
|
when(mFakeFeatureFactory.powerUsageFeatureProvider.isBatteryDefend(mBatteryInfo))
|
||||||
when(mFakeFeatureFactory.powerUsageFeatureProvider.isExtraDefend()).thenReturn(true);
|
.thenReturn(true);
|
||||||
|
|
||||||
assertThat(mBatteryDefenderDetector.detect().isVisible()).isFalse();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDetect_isDefenderIsExtraDefend_tipInvisible() {
|
|
||||||
mBatteryInfo.isBatteryDefender = false;
|
|
||||||
when(mFakeFeatureFactory.powerUsageFeatureProvider.isExtraDefend()).thenReturn(true);
|
|
||||||
|
|
||||||
assertThat(mBatteryDefenderDetector.detect().isVisible()).isFalse();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDetect_isDefenderNotExtraDefend_tipNew() {
|
|
||||||
mBatteryInfo.isBatteryDefender = true;
|
|
||||||
when(mFakeFeatureFactory.powerUsageFeatureProvider.isExtraDefend()).thenReturn(false);
|
|
||||||
|
|
||||||
assertThat(mBatteryDefenderDetector.detect().getState())
|
assertThat(mBatteryDefenderDetector.detect().getState())
|
||||||
.isEqualTo(BatteryTip.StateType.NEW);
|
.isEqualTo(BatteryTip.StateType.NEW);
|
||||||
|
assertThat(mBatteryDefenderDetector.detect().isVisible()).isTrue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user