From 8d538ef12d90929cd7060d1ad671da94b9a0d360 Mon Sep 17 00:00:00 2001 From: Lei Yu Date: Thu, 10 May 2018 11:45:31 -0700 Subject: [PATCH] Add action for low battery tip The action should be same as EarlyWarningTip. 1. Option to "turn on battery saver" is battery is low 2. Or show "battery saver is on" and take user to "battery saver" page. Fixes: 76113067 Test: RunSettingsRoboTests Change-Id: I896358305a8ae4cd97c3864bbf6e556b4d025dd7 --- .../batterytip/BatteryTipPolicy.java | 2 +- .../fuelgauge/batterytip/BatteryTipUtils.java | 1 + .../batterytip/BatteryTipPolicyTest.java | 2 +- .../batterytip/BatteryTipUtilsTest.java | 24 ++++++++++++++++++- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java index 1c7c7604ee0..774337257dd 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java @@ -230,7 +230,7 @@ public class BatteryTipPolicy { appRestrictionEnabled = mParser.getBoolean(KEY_APP_RESTRICTION_ENABLED, true); reducedBatteryEnabled = mParser.getBoolean(KEY_REDUCED_BATTERY_ENABLED, false); reducedBatteryPercent = mParser.getInt(KEY_REDUCED_BATTERY_PERCENT, 50); - lowBatteryEnabled = mParser.getBoolean(KEY_LOW_BATTERY_ENABLED, false); + lowBatteryEnabled = mParser.getBoolean(KEY_LOW_BATTERY_ENABLED, true); lowBatteryHour = mParser.getInt(KEY_LOW_BATTERY_HOUR, 3); dataHistoryRetainDay = mParser.getInt(KEY_DATA_HISTORY_RETAIN_DAY, 30); excessiveBgDrainPercentage = mParser.getInt(KEY_EXCESSIVE_BG_DRAIN_PERCENTAGE, 10); diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java index be255189fb5..9e64c711cc5 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java @@ -94,6 +94,7 @@ public class BatteryTipUtils { case BatteryTip.TipType.SMART_BATTERY_MANAGER: return new SmartBatteryAction(settingsActivity, fragment); case BatteryTip.TipType.BATTERY_SAVER: + case BatteryTip.TipType.LOW_BATTERY: if (batteryTip.getState() == BatteryTip.StateType.HANDLED) { return new OpenBatterySaverAction(settingsActivity); } else { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java index 350326ab248..547e0eb455f 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java @@ -101,7 +101,7 @@ public class BatteryTipPolicyTest { assertThat(batteryTipPolicy.appRestrictionEnabled).isTrue(); assertThat(batteryTipPolicy.reducedBatteryEnabled).isFalse(); assertThat(batteryTipPolicy.reducedBatteryPercent).isEqualTo(50); - assertThat(batteryTipPolicy.lowBatteryEnabled).isFalse(); + assertThat(batteryTipPolicy.lowBatteryEnabled).isTrue(); assertThat(batteryTipPolicy.lowBatteryHour).isEqualTo(3); assertThat(batteryTipPolicy.dataHistoryRetainDay).isEqualTo(30); assertThat(batteryTipPolicy.excessiveBgDrainPercentage).isEqualTo(10); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java index 7a25555ff28..459c4e2a03f 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java @@ -29,6 +29,7 @@ import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragment import com.android.settings.fuelgauge.batterytip.actions.RestrictAppAction; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.EarlyWarningTip; +import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip; import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -51,6 +52,7 @@ public class BatteryTipUtilsTest { private InstrumentedPreferenceFragment mFragment; private RestrictAppTip mRestrictAppTip; private EarlyWarningTip mEarlyWarningTip; + private LowBatteryTip mLowBatteryTip; @Before public void setUp() { @@ -59,7 +61,11 @@ public class BatteryTipUtilsTest { FakeFeatureFactory.setupForTest(); doReturn(RuntimeEnvironment.application).when(mFragment).getContext(); mRestrictAppTip = spy(new RestrictAppTip(BatteryTip.StateType.NEW, new ArrayList<>())); - mEarlyWarningTip = spy(new EarlyWarningTip(BatteryTip.StateType.NEW, true)); + mEarlyWarningTip = spy( + new EarlyWarningTip(BatteryTip.StateType.NEW, true /* powerSaveModeOn */)); + mLowBatteryTip = spy( + new LowBatteryTip(BatteryTip.StateType.NEW, false /* powerSaveModeOn */, + "" /* summary */)); } @Test @@ -93,4 +99,20 @@ public class BatteryTipUtilsTest { assertThat(BatteryTipUtils.getActionForBatteryTip(mEarlyWarningTip, mSettingsActivity, mFragment)).isInstanceOf(OpenBatterySaverAction.class); } + + @Test + public void testGetActionForBatteryTip_typeLowBatteryStateNew_returnActionBatterySaver() { + 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); + } }