diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java index 4dcdc0cc111..61e0fb1b110 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java @@ -44,9 +44,7 @@ import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip; import java.util.ArrayList; import java.util.List; -/** - * Utility class for {@link BatteryTip} - */ +/** Utility class for {@link BatteryTip} */ public class BatteryTipUtils { private static final int REQUEST_CODE = 0; @@ -85,6 +83,7 @@ public class BatteryTipUtils { /** * Get a corresponding action based on {@code batteryTip} + * * @param batteryTip used to detect which action to choose * @param settingsActivity used to populate {@link BatteryTipAction} * @param fragment used to populate {@link BatteryTipAction} diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTip.java deleted file mode 100644 index 6701314fa82..00000000000 --- a/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTip.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.fuelgauge.batterytip.tips; - -import android.app.settings.SettingsEnums; -import android.content.Context; -import android.os.Parcel; - -import com.android.settings.R; -import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; - -/** - * Tip to show early warning if battery couldn't make to usual charging time - */ -public class EarlyWarningTip extends BatteryTip { - private boolean mPowerSaveModeOn; - - public EarlyWarningTip(@StateType int state, boolean powerSaveModeOn) { - super(TipType.BATTERY_SAVER, state, false /* showDialog */); - mPowerSaveModeOn = powerSaveModeOn; - } - - public EarlyWarningTip(Parcel in) { - super(in); - mPowerSaveModeOn = in.readBoolean(); - } - - @Override - public CharSequence getTitle(Context context) { - return context.getString( - mState = R.string.battery_tip_early_heads_up_title); - } - - @Override - public CharSequence getSummary(Context context) { - return context.getString( - mState = R.string.battery_tip_early_heads_up_summary); - } - - @Override - public int getIconId() { - return mState = R.drawable.ic_battery_status_bad_24dp; - } - - @Override - public int getIconTintColorId() { - return mState = R.color.battery_bad_color_light; - } - - @Override - public void updateState(BatteryTip tip) { - final EarlyWarningTip earlyWarningTip = (EarlyWarningTip) tip; - if (earlyWarningTip.mState == StateType.NEW) { - // Display it if there is early warning - mState = StateType.NEW; - } else if (earlyWarningTip.mPowerSaveModeOn) { - // If powerSaveMode is really on, dismiss it. - mState = StateType.INVISIBLE; - } else { - mState = earlyWarningTip.getState(); - } - mPowerSaveModeOn = earlyWarningTip.mPowerSaveModeOn; - } - - @Override - public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) { - metricsFeatureProvider.action(context, SettingsEnums.ACTION_EARLY_WARNING_TIP, - mState); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - super.writeToParcel(dest, flags); - dest.writeBoolean(mPowerSaveModeOn); - } - - public boolean isPowerSaveModeOn() { - return mPowerSaveModeOn; - } - - public static final Creator CREATOR = new Creator() { - public BatteryTip createFromParcel(Parcel in) { - return new EarlyWarningTip(in); - } - - public BatteryTip[] newArray(int size) { - return new EarlyWarningTip[size]; - } - }; -} diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTip.java index 930a8113cff..79d78e27a1f 100644 --- a/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTip.java +++ b/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTip.java @@ -24,18 +24,19 @@ import android.os.Parcelable; import com.android.settings.R; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; -/** - * Tip to show current battery level is low or remaining time is less than a certain period - */ -public class LowBatteryTip extends EarlyWarningTip { +/** Tip to show current battery level is low */ +public class LowBatteryTip extends BatteryTip { + + private boolean mPowerSaveModeOn; public LowBatteryTip(@StateType int state, boolean powerSaveModeOn) { - super(state, powerSaveModeOn); - mType = TipType.LOW_BATTERY; + super(TipType.LOW_BATTERY, state, false /* showDialog */); + mPowerSaveModeOn = powerSaveModeOn; } public LowBatteryTip(Parcel in) { super(in); + mPowerSaveModeOn = in.readBoolean(); } @Override @@ -48,9 +49,20 @@ public class LowBatteryTip extends EarlyWarningTip { return context.getString(R.string.battery_tip_low_battery_summary); } + @Override + public int getIconId() { + return mState = R.drawable.ic_battery_status_bad_24dp; + } + + @Override + public int getIconTintColorId() { + return mState = R.color.battery_bad_color_light; + } + @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); + dest.writeBoolean(mPowerSaveModeOn); } @Override @@ -59,6 +71,17 @@ public class LowBatteryTip extends EarlyWarningTip { mState); } + @Override + public void updateState(BatteryTip tip) { + final LowBatteryTip lowBatteryTip = (LowBatteryTip) tip; + mState = lowBatteryTip.mPowerSaveModeOn + ? StateType.INVISIBLE : lowBatteryTip.getState(); + } + + boolean isPowerSaveModeOn() { + return mPowerSaveModeOn; + } + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public BatteryTip createFromParcel(Parcel in) { return new LowBatteryTip(in); 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 3bb33c62cdd..3312e16277c 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java @@ -28,7 +28,6 @@ import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragment import com.android.settings.fuelgauge.batterytip.actions.RestrictAppAction; import com.android.settings.fuelgauge.batterytip.tips.BatteryDefenderTip; 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; @@ -51,7 +50,6 @@ public class BatteryTipUtilsTest { @Mock private InstrumentedPreferenceFragment mFragment; private RestrictAppTip mRestrictAppTip; - private EarlyWarningTip mEarlyWarningTip; private LowBatteryTip mLowBatteryTip; private BatteryDefenderTip mBatteryDefenderTip; @@ -63,8 +61,6 @@ public class BatteryTipUtilsTest { when(mSettingsActivity.getApplicationContext()).thenReturn(RuntimeEnvironment.application); when(mFragment.getContext()).thenReturn(RuntimeEnvironment.application); mRestrictAppTip = spy(new RestrictAppTip(BatteryTip.StateType.NEW, new ArrayList<>())); - mEarlyWarningTip = spy( - new EarlyWarningTip(BatteryTip.StateType.NEW, true /* powerSaveModeOn */)); mLowBatteryTip = spy( new LowBatteryTip(BatteryTip.StateType.NEW, false /* powerSaveModeOn */)); mBatteryDefenderTip = spy(new BatteryDefenderTip(BatteryTip.StateType.NEW)); @@ -86,14 +82,6 @@ public class BatteryTipUtilsTest { mFragment)).isInstanceOf(OpenRestrictAppFragmentAction.class); } - @Test - public void testGetActionForBatteryTip_typeEarlyWarningStateNew_returnActionOpen() { - when(mEarlyWarningTip.getState()).thenReturn(BatteryTip.StateType.NEW); - - assertThat(BatteryTipUtils.getActionForBatteryTip(mEarlyWarningTip, mSettingsActivity, - mFragment)).isInstanceOf(OpenBatterySaverAction.class); - } - @Test public void testGetActionForBatteryTip_typeLowBatteryStateNew_returnActionOpen() { when(mLowBatteryTip.getState()).thenReturn(BatteryTip.StateType.NEW); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTipTest.java deleted file mode 100644 index aeea10fc0b3..00000000000 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTipTest.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.settings.fuelgauge.batterytip.tips; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.Mockito.verify; - -import android.content.Context; -import android.os.Parcel; - -import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.R; -import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; - -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; - -@RunWith(RobolectricTestRunner.class) -public class EarlyWarningTipTest { - - @Mock - private MetricsFeatureProvider mMetricsFeatureProvider; - private Context mContext; - private EarlyWarningTip mEarlyWarningTip; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - - mContext = RuntimeEnvironment.application; - mEarlyWarningTip = - new EarlyWarningTip(BatteryTip.StateType.NEW, false /* powerSaveModeOn */); - } - - @Test - public void testParcelable() { - Parcel parcel = Parcel.obtain(); - mEarlyWarningTip.writeToParcel(parcel, mEarlyWarningTip.describeContents()); - parcel.setDataPosition(0); - - final EarlyWarningTip parcelTip = new EarlyWarningTip(parcel); - - assertThat(parcelTip.isPowerSaveModeOn()).isFalse(); - } - - @Test - public void testInfo_stateNew_displayPowerModeInfo() { - final EarlyWarningTip tip = - new EarlyWarningTip(BatteryTip.StateType.NEW, false /* powerModeOn */); - - assertThat(tip.getTitle(mContext)).isEqualTo("Turn on Battery Saver"); - assertThat(tip.getSummary(mContext)).isEqualTo("Battery may run out earlier than usual"); - assertThat(tip.getIconId()).isEqualTo(R.drawable.ic_battery_status_bad_24dp); - assertThat(tip.getIconTintColorId()).isEqualTo(R.color.battery_bad_color_light); - } - - @Test - public void testUpdate_powerModeTurnedOn_typeBecomeInvisible() { - final EarlyWarningTip nextTip = - new EarlyWarningTip(BatteryTip.StateType.INVISIBLE, true /* powerModeOn */); - - mEarlyWarningTip.updateState(nextTip); - - assertThat(mEarlyWarningTip.getState()).isEqualTo(BatteryTip.StateType.INVISIBLE); - } - - @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); - } - - @Test - public void testLog() { - mEarlyWarningTip.log(mContext, mMetricsFeatureProvider); - - verify(mMetricsFeatureProvider).action(mContext, - MetricsProto.MetricsEvent.ACTION_EARLY_WARNING_TIP, BatteryTip.StateType.NEW); - } -} diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTipTest.java index ff96b5b07a5..108a1dde45f 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTipTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/LowBatteryTipTest.java @@ -23,6 +23,7 @@ import android.content.Context; import android.os.Parcel; import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.R; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import org.junit.Before; @@ -36,8 +37,6 @@ import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class LowBatteryTipTest { - private static final CharSequence SUMMARY = "Turn on Battery Saver to extend battery life"; - @Mock private MetricsFeatureProvider mMetricsFeatureProvider; private Context mContext; @@ -46,7 +45,6 @@ public class LowBatteryTipTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - mContext = RuntimeEnvironment.application; mLowBatteryTip = new LowBatteryTip(BatteryTip.StateType.NEW, false /* powerSaveModeOn */); } @@ -60,21 +58,30 @@ public class LowBatteryTipTest { final LowBatteryTip parcelTip = new LowBatteryTip(parcel); assertThat(parcelTip.isPowerSaveModeOn()).isFalse(); - assertThat(parcelTip.getSummary(mContext)).isEqualTo(SUMMARY); + assertThat(parcelTip.getSummary(mContext)).isEqualTo( + mContext.getString(R.string.battery_tip_low_battery_summary)); } @Test - public void getSummary_tipNew_showTitle() { + public void updateState_stateNew_showExpectedInformation() { mLowBatteryTip.mState = BatteryTip.StateType.NEW; - assertThat(mLowBatteryTip.getTitle(mContext)).isEqualTo("Battery level low"); + assertThat(mLowBatteryTip.getTitle(mContext)).isEqualTo( + mContext.getString(R.string.battery_tip_low_battery_title)); + assertThat(mLowBatteryTip.getSummary(mContext)).isEqualTo( + mContext.getString(R.string.battery_tip_low_battery_summary)); + assertThat(mLowBatteryTip.getIconId()).isEqualTo(R.drawable.ic_battery_status_bad_24dp); + assertThat(mLowBatteryTip.getIconTintColorId()).isEqualTo(R.color.battery_bad_color_light); } @Test - public void getSummary_tipNew_showSummary() { - mLowBatteryTip.mState = BatteryTip.StateType.NEW; + public void updateState_powerSaveModeOn_notShowTipItem() { + final LowBatteryTip tip = new LowBatteryTip( + BatteryTip.StateType.NEW, true /* powerSaveModeOn */); - assertThat(mLowBatteryTip.getSummary(mContext)).isEqualTo(SUMMARY); + tip.updateState(tip); + + assertThat(tip.mState).isEqualTo(BatteryTip.StateType.INVISIBLE); } @Test