Add dialog for summary tip
Also change SummaryTip to store the time data, which is used in the dialog. If "Full last charge" time is available, show normal message otherwise show message without it. Bug: 72997971 Test: RunSettingsRoboTests Change-Id: I4ce94f0935465a18275edb13e3be343313427c3b
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batterytip;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.robolectric.Shadows.shadowOf;
|
||||
|
||||
@@ -26,9 +27,11 @@ import android.content.Context;
|
||||
import android.text.format.DateUtils;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.fuelgauge.Estimate;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.testutils.shadow.ShadowUtils;
|
||||
@@ -54,6 +57,7 @@ public class BatteryTipDialogFragmentTest {
|
||||
private static final String PACKAGE_NAME = "com.android.app";
|
||||
private static final String DISPLAY_NAME = "app";
|
||||
private static final long SCREEN_TIME_MS = DateUtils.HOUR_IN_MILLIS;
|
||||
private static final long AVERAGE_TIME_MS = DateUtils.HOUR_IN_MILLIS;
|
||||
|
||||
private BatteryTipDialogFragment mDialogFragment;
|
||||
private Context mContext;
|
||||
@@ -61,6 +65,7 @@ public class BatteryTipDialogFragmentTest {
|
||||
private RestrictAppTip mRestrictedOneAppTip;
|
||||
private RestrictAppTip mRestrictAppsTip;
|
||||
private UnrestrictAppTip mUnrestrictAppTip;
|
||||
private SummaryTip mSummaryTip;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -85,6 +90,8 @@ public class BatteryTipDialogFragmentTest {
|
||||
new ArrayList<>(restrictApps));
|
||||
|
||||
mUnrestrictAppTip = new UnrestrictAppTip(BatteryTip.StateType.NEW, appInfo);
|
||||
mSummaryTip = spy(new SummaryTip(BatteryTip.StateType.NEW,
|
||||
Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -151,4 +158,32 @@ public class BatteryTipDialogFragmentTest {
|
||||
assertThat(shadowDialog.getMessage())
|
||||
.isEqualTo(mContext.getString(R.string.battery_tip_unrestrict_app_dialog_message));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnCreateDialog_summaryTipWithEstimation_fireDialogWithEstimation() {
|
||||
doReturn(AVERAGE_TIME_MS).when(mSummaryTip).getAverageTimeMs();
|
||||
mDialogFragment = BatteryTipDialogFragment.newInstance(mSummaryTip);
|
||||
|
||||
FragmentTestUtil.startFragment(mDialogFragment);
|
||||
|
||||
final AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
|
||||
ShadowAlertDialog shadowDialog = shadowOf(dialog);
|
||||
|
||||
assertThat(shadowDialog.getMessage()).isEqualTo(
|
||||
"Based on your usage, your battery usually lasts about 1h when fully charged"
|
||||
+ ".\n\nIf you need to extend your battery life, turn on Battery Saver.");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnCreateDialog_summaryTipWithoutEstimation_fireDialogWithoutEstimation() {
|
||||
mDialogFragment = BatteryTipDialogFragment.newInstance(mSummaryTip);
|
||||
|
||||
FragmentTestUtil.startFragment(mDialogFragment);
|
||||
|
||||
final AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
|
||||
ShadowAlertDialog shadowDialog = shadowOf(dialog);
|
||||
|
||||
assertThat(shadowDialog.getMessage()).isEqualTo(
|
||||
"If you need to extend your battery life, turn on Battery Saver");
|
||||
}
|
||||
}
|
||||
|
@@ -15,8 +15,11 @@
|
||||
*/
|
||||
package com.android.settings.fuelgauge.batterytip;
|
||||
|
||||
import static com.android.settings.fuelgauge.batterytip.tips.BatteryTip.TipType.SMART_BATTERY_MANAGER;
|
||||
import static com.android.settings.fuelgauge.batterytip.tips.BatteryTip.TipType
|
||||
.SMART_BATTERY_MANAGER;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
@@ -30,6 +33,7 @@ import android.support.v7.preference.PreferenceCategory;
|
||||
import android.support.v7.preference.PreferenceGroup;
|
||||
import android.support.v7.preference.PreferenceManager;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
import android.text.format.DateUtils;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.SettingsActivity;
|
||||
@@ -54,6 +58,8 @@ public class BatteryTipPreferenceControllerTest {
|
||||
|
||||
private static final String KEY_PREF = "battery_tip";
|
||||
private static final String KEY_TIP = "key_battery_tip";
|
||||
private static final long AVERAGE_TIME_MS = DateUtils.HOUR_IN_MILLIS;
|
||||
|
||||
@Mock
|
||||
private BatteryTipPreferenceController.BatteryTipListener mBatteryTipListener;
|
||||
@Mock
|
||||
@@ -87,9 +93,9 @@ public class BatteryTipPreferenceControllerTest {
|
||||
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
|
||||
mOldBatteryTips = new ArrayList<>();
|
||||
mOldBatteryTips.add(new SummaryTip(BatteryTip.StateType.NEW));
|
||||
mOldBatteryTips.add(new SummaryTip(BatteryTip.StateType.NEW, AVERAGE_TIME_MS));
|
||||
mNewBatteryTips = new ArrayList<>();
|
||||
mNewBatteryTips.add(new SummaryTip(BatteryTip.StateType.INVISIBLE));
|
||||
mNewBatteryTips.add(new SummaryTip(BatteryTip.StateType.INVISIBLE, AVERAGE_TIME_MS));
|
||||
|
||||
mBatteryTipPreferenceController = new BatteryTipPreferenceController(mContext, KEY_PREF,
|
||||
mSettingsActivity, null, mBatteryTipListener);
|
||||
|
@@ -19,6 +19,8 @@ package com.android.settings.fuelgauge.batterytip.detectors;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Mockito.spy;
|
||||
|
||||
import android.text.format.DateUtils;
|
||||
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
@@ -33,6 +35,7 @@ import org.robolectric.util.ReflectionHelpers;
|
||||
public class SummaryDetectorTest {
|
||||
|
||||
private BatteryTipPolicy mPolicy;
|
||||
private static final long AVERAGE_TIME_MS = DateUtils.HOUR_IN_MILLIS;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -44,14 +47,14 @@ public class SummaryDetectorTest {
|
||||
@Test
|
||||
public void testDetect_disabledByPolicy_tipInvisible() {
|
||||
ReflectionHelpers.setField(mPolicy, "summaryEnabled", false);
|
||||
SummaryDetector detector = new SummaryDetector(mPolicy);
|
||||
SummaryDetector detector = new SummaryDetector(mPolicy, AVERAGE_TIME_MS);
|
||||
|
||||
assertThat(detector.detect().isVisible()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDetect_notDisabled_tipVisible() {
|
||||
SummaryDetector detector = new SummaryDetector(mPolicy);
|
||||
SummaryDetector detector = new SummaryDetector(mPolicy, AVERAGE_TIME_MS);
|
||||
|
||||
assertThat(detector.detect().isVisible()).isTrue();
|
||||
}
|
||||
|
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* 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 android.text.format.DateUtils;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
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.RuntimeEnvironment;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
public class SummaryTipTest {
|
||||
|
||||
private static final long AVERAGE_TIME_MS = DateUtils.HOUR_IN_MILLIS;
|
||||
|
||||
@Mock
|
||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
private Context mContext;
|
||||
private SummaryTip mSummaryTip;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mSummaryTip =
|
||||
new SummaryTip(BatteryTip.StateType.NEW, AVERAGE_TIME_MS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParcelable() {
|
||||
Parcel parcel = Parcel.obtain();
|
||||
mSummaryTip.writeToParcel(parcel, mSummaryTip.describeContents());
|
||||
parcel.setDataPosition(0);
|
||||
|
||||
final SummaryTip parcelTip = new SummaryTip(parcel);
|
||||
|
||||
assertThat(parcelTip.getAverageTimeMs()).isEqualTo(AVERAGE_TIME_MS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLog() {
|
||||
mSummaryTip.log(mContext, mMetricsFeatureProvider);
|
||||
|
||||
verify(mMetricsFeatureProvider).action(mContext,
|
||||
MetricsProto.MetricsEvent.ACTION_SUMMARY_TIP, BatteryTip.StateType.NEW);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user