Merge "Fix the update error in EarlyWarningTip"

This commit is contained in:
Lei Yu
2018-02-22 20:27:53 +00:00
committed by Android (Google) Code Review
2 changed files with 44 additions and 6 deletions

View File

@@ -62,13 +62,17 @@ public class EarlyWarningTip extends BatteryTip {
@Override @Override
public void updateState(BatteryTip tip) { public void updateState(BatteryTip tip) {
final EarlyWarningTip earlyHeadsUpTip = (EarlyWarningTip) tip; final EarlyWarningTip earlyWarningTip = (EarlyWarningTip) tip;
if (mPowerSaveModeOn != earlyHeadsUpTip.mPowerSaveModeOn) { if (earlyWarningTip.mState == StateType.NEW) {
mPowerSaveModeOn = earlyHeadsUpTip.mPowerSaveModeOn; // Display it if there is early warning
mState = earlyHeadsUpTip.mPowerSaveModeOn ? StateType.HANDLED : StateType.NEW; mState = StateType.NEW;
} else if (mState != StateType.HANDLED) { } else if (mState == StateType.NEW && earlyWarningTip.mState == StateType.INVISIBLE) {
mState = earlyHeadsUpTip.getState(); // If powerSaveMode is really on, show it as handled, otherwise just dismiss it.
mState = earlyWarningTip.mPowerSaveModeOn ? StateType.HANDLED : StateType.INVISIBLE;
} else {
mState = earlyWarningTip.getState();
} }
mPowerSaveModeOn = earlyWarningTip.mPowerSaveModeOn;
} }
@Override @Override

View File

@@ -83,4 +83,38 @@ public class EarlyWarningTipTest {
assertThat(mEarlyWarningTip.getState()).isEqualTo(BatteryTip.StateType.HANDLED); assertThat(mEarlyWarningTip.getState()).isEqualTo(BatteryTip.StateType.HANDLED);
} }
@Test
public void testUpdate_devicePluggedIn_typeBecomeInvisible() {
final EarlyWarningTip nextTip = new EarlyWarningTip(BatteryTip.StateType.INVISIBLE,
false /* powerModeOn */);
mEarlyWarningTip.updateState(nextTip);
assertThat(mEarlyWarningTip.getState()).isEqualTo(BatteryTip.StateType.INVISIBLE);
}
@Test
public void testUpdate_turnOnLowPowerModeExplicitly_typeStillInvisible() {
final EarlyWarningTip earlyWarningTip = new EarlyWarningTip(BatteryTip.StateType.INVISIBLE,
false /* powerModeOn */);
final EarlyWarningTip nextTip = new EarlyWarningTip(BatteryTip.StateType.INVISIBLE,
true /* powerModeOn */);
earlyWarningTip.updateState(nextTip);
assertThat(earlyWarningTip.getState()).isEqualTo(BatteryTip.StateType.INVISIBLE);
}
@Test
public void testUpdate_turnOffLowPowerModeExplicitly_typeBecomeInvisible() {
final EarlyWarningTip earlyWarningTip = new EarlyWarningTip(BatteryTip.StateType.HANDLED,
true /* powerModeOn */);
final EarlyWarningTip nextTip = new EarlyWarningTip(BatteryTip.StateType.INVISIBLE,
false /* powerModeOn */);
earlyWarningTip.updateState(nextTip);
assertThat(earlyWarningTip.getState()).isEqualTo(BatteryTip.StateType.INVISIBLE);
}
} }