Adjust battery tips action

- Change low battery tips action to launch battery saver page
 - Enable smart battery tip when battery level is lower than expected and battery saver is off

Bug: 183582881
Test: make RunSettingsRoboTests -j40
Change-Id: I38b0ff7109d5ea95703edeade26cdfeed50f1403
This commit is contained in:
Wesley.CW Wang
2021-03-24 16:56:16 +08:00
committed by Wesley Wang
parent 89222adb7f
commit f1e41c0bd9
5 changed files with 61 additions and 31 deletions

View File

@@ -24,7 +24,6 @@ import static org.mockito.Mockito.when;
import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.fuelgauge.batterytip.actions.BatteryDefenderAction;
import com.android.settings.fuelgauge.batterytip.actions.BatterySaverAction;
import com.android.settings.fuelgauge.batterytip.actions.OpenBatterySaverAction;
import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
import com.android.settings.fuelgauge.batterytip.actions.RestrictAppAction;
@@ -90,33 +89,17 @@ public class BatteryTipUtilsTest {
}
@Test
public void testGetActionForBatteryTip_typeEarlyWarningStateNew_returnActionBatterySaver() {
public void testGetActionForBatteryTip_typeEarlyWarningStateNew_returnActionOpen() {
when(mEarlyWarningTip.getState()).thenReturn(BatteryTip.StateType.NEW);
assertThat(BatteryTipUtils.getActionForBatteryTip(mEarlyWarningTip, mSettingsActivity,
mFragment)).isInstanceOf(BatterySaverAction.class);
}
@Test
public void testGetActionForBatteryTip_typeEarlyWarningStateHandled_returnActionOpen() {
when(mEarlyWarningTip.getState()).thenReturn(BatteryTip.StateType.HANDLED);
assertThat(BatteryTipUtils.getActionForBatteryTip(mEarlyWarningTip, mSettingsActivity,
mFragment)).isInstanceOf(OpenBatterySaverAction.class);
}
@Test
public void testGetActionForBatteryTip_typeLowBatteryStateNew_returnActionBatterySaver() {
public void testGetActionForBatteryTip_typeLowBatteryStateNew_returnActionOpen() {
when(mLowBatteryTip.getState()).thenReturn(BatteryTip.StateType.NEW);
assertThat(BatteryTipUtils.getActionForBatteryTip(mLowBatteryTip, mSettingsActivity,
mFragment)).isInstanceOf(BatterySaverAction.class);
}
@Test
public void testGetActionForBatteryTip_typeLowBatteryStateHandled_returnActionOpen() {
when(mLowBatteryTip.getState()).thenReturn(BatteryTip.StateType.HANDLED);
assertThat(BatteryTipUtils.getActionForBatteryTip(mLowBatteryTip, mSettingsActivity,
mFragment)).isInstanceOf(OpenBatterySaverAction.class);
}

View File

@@ -22,26 +22,37 @@ import static org.mockito.Mockito.spy;
import android.content.ContentResolver;
import android.content.Context;
import android.os.PowerManager;
import android.provider.Settings;
import com.android.settings.fuelgauge.BatteryInfo;
import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.shadows.ShadowPowerManager;
import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class)
public class SmartBatteryDetectorTest {
private static final int EXPECTED_BATTERY_LEVEL = 30;
private static final int UNEXPECTED_BATTERY_LEVEL = 31;
private Context mContext;
private ContentResolver mContentResolver;
private SmartBatteryDetector mSmartBatteryDetector;
private BatteryTipPolicy mPolicy;
private ShadowPowerManager mShadowPowerManager;
@Mock
private BatteryInfo mBatteryInfo;
@Before
public void setUp() {
@@ -50,7 +61,9 @@ public class SmartBatteryDetectorTest {
mContext = RuntimeEnvironment.application;
mContentResolver = mContext.getContentResolver();
mPolicy = spy(new BatteryTipPolicy(mContext));
mSmartBatteryDetector = new SmartBatteryDetector(mPolicy, mContentResolver);
mShadowPowerManager = Shadows.shadowOf(mContext.getSystemService(PowerManager.class));
mSmartBatteryDetector =
new SmartBatteryDetector(mContext, mPolicy, mBatteryInfo, mContentResolver);
}
@Test
@@ -64,14 +77,38 @@ public class SmartBatteryDetectorTest {
public void testDetect_smartBatteryOff_tipVisible() {
Settings.Global.putInt(mContentResolver,
Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 0);
mShadowPowerManager.setIsPowerSaveMode(false);
mBatteryInfo.batteryLevel = EXPECTED_BATTERY_LEVEL;
assertThat(mSmartBatteryDetector.detect().isVisible()).isTrue();
}
@Test
public void testDetect_batterySaverOn_tipInvisible() {
Settings.Global.putInt(mContentResolver,
Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 0);
mShadowPowerManager.setIsPowerSaveMode(true);
mBatteryInfo.batteryLevel = EXPECTED_BATTERY_LEVEL;
assertThat(mSmartBatteryDetector.detect().isVisible()).isFalse();
}
@Test
public void testDetect_unexpectedBatteryLevel_tipInvisible() {
Settings.Global.putInt(mContentResolver,
Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 0);
mShadowPowerManager.setIsPowerSaveMode(true);
mBatteryInfo.batteryLevel = UNEXPECTED_BATTERY_LEVEL;
assertThat(mSmartBatteryDetector.detect().isVisible()).isFalse();
}
@Test
public void testDetect_smartBatteryOn_tipInvisible() {
Settings.Global.putInt(mContentResolver,
Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, 1);
mShadowPowerManager.setIsPowerSaveMode(false);
mBatteryInfo.batteryLevel = EXPECTED_BATTERY_LEVEL;
assertThat(mSmartBatteryDetector.detect().isVisible()).isFalse();
}