Merge "Add test flags for battery tips." into pi-dev
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java
index 17284a0..5520bf3 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicy.java
@@ -47,6 +47,10 @@
private static final String KEY_DATA_HISTORY_RETAIN_DAY = "data_history_retain_day";
private static final String KEY_EXCESSIVE_BG_DRAIN_PERCENTAGE = "excessive_bg_drain_percentage";
+ private static final String KEY_TEST_BATTERY_SAVER_TIP = "test_battery_saver_tip";
+ private static final String KEY_TEST_HIGH_USAGE_TIP = "test_high_usage_tip";
+ private static final String KEY_TEST_SMART_BATTERY_TIP = "test_smart_battery_tip";
+
/**
* {@code true} if general battery tip is enabled
*
@@ -164,6 +168,30 @@
*/
public final int excessiveBgDrainPercentage;
+ /**
+ * {@code true} if we want to test battery saver tip.
+ *
+ * @see Settings.Global#BATTERY_TIP_CONSTANTS
+ * @see #KEY_TEST_BATTERY_SAVER_TIP
+ */
+ public final boolean testBatterySaverTip;
+
+ /**
+ * {@code true} if we want to test high usage tip.
+ *
+ * @see Settings.Global#BATTERY_TIP_CONSTANTS
+ * @see #KEY_TEST_HIGH_USAGE_TIP
+ */
+ public final boolean testHighUsageTip;
+
+ /**
+ * {@code true} if we want to test smart battery tip.
+ *
+ * @see Settings.Global#BATTERY_TIP_CONSTANTS
+ * @see #KEY_TEST_SMART_BATTERY_TIP
+ */
+ public final boolean testSmartBatteryTip;
+
private final KeyValueListParser mParser;
public BatteryTipPolicy(Context context) {
@@ -197,6 +225,10 @@
lowBatteryHour = mParser.getInt(KEY_LOW_BATTERY_HOUR, 16);
dataHistoryRetainDay = mParser.getInt(KEY_DATA_HISTORY_RETAIN_DAY, 30);
excessiveBgDrainPercentage = mParser.getInt(KEY_EXCESSIVE_BG_DRAIN_PERCENTAGE, 10);
+
+ testBatterySaverTip = mParser.getBoolean(KEY_TEST_BATTERY_SAVER_TIP, false);
+ testHighUsageTip = mParser.getBoolean(KEY_TEST_HIGH_USAGE_TIP, false);
+ testSmartBatteryTip = mParser.getBoolean(KEY_TEST_SMART_BATTERY_TIP, false);
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/EarlyWarningDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/EarlyWarningDetector.java
index a10c8f1..9b6b9b5 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/EarlyWarningDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/EarlyWarningDetector.java
@@ -53,7 +53,7 @@
batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0;
final boolean powerSaveModeOn = mPowerManager.isPowerSaveMode();
final boolean earlyWarning = mPowerUsageFeatureProvider.getEarlyWarningSignal(mContext,
- EarlyWarningDetector.class.getName());
+ EarlyWarningDetector.class.getName()) || mPolicy.testBatterySaverTip;
final int state = powerSaveModeOn
? BatteryTip.StateType.HANDLED
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java
index 1b6e2f0..8435c52 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java
@@ -34,6 +34,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.TimeUnit;
/**
* Detector whether to show summary tip. This detector should be executed as the last
@@ -65,7 +66,7 @@
final long screenUsageTimeMs = mBatteryUtils.calculateScreenUsageTime(mBatteryStatsHelper);
if (mPolicy.highUsageEnabled) {
parseBatteryData();
- if (mDataParser.isDeviceHeavilyUsed()) {
+ if (mDataParser.isDeviceHeavilyUsed() || mPolicy.testHighUsageTip) {
final List<BatterySipper> batterySippers = mBatteryStatsHelper.getUsageList();
for (int i = 0, size = batterySippers.size(); i < size; i++) {
final BatterySipper batterySipper = batterySippers.get(i);
@@ -84,6 +85,14 @@
}
}
+ // When in test mode, add an app if necessary
+ if (mPolicy.testHighUsageTip && mHighUsageAppList.isEmpty()) {
+ mHighUsageAppList.add(new AppInfo.Builder()
+ .setPackageName("com.android.settings")
+ .setScreenOnTimeMs(TimeUnit.HOURS.toMillis(3))
+ .build());
+ }
+
Collections.sort(mHighUsageAppList, Collections.reverseOrder());
mHighUsageAppList = mHighUsageAppList.subList(0,
Math.min(mPolicy.highUsageAppCount, mHighUsageAppList.size()));
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetector.java
index bff324d..ecd595e 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetector.java
@@ -38,10 +38,10 @@
@Override
public BatteryTip detect() {
// Show it if there is no other tips shown
- final boolean smartBatteryOn = Settings.Global.getInt(mContentResolver,
- Settings.Global.APP_STANDBY_ENABLED, 1) != 0;
+ final boolean smartBatteryOff = Settings.Global.getInt(mContentResolver,
+ Settings.Global.APP_STANDBY_ENABLED, 1) == 0 || mPolicy.testSmartBatteryTip;
final int state =
- smartBatteryOn ? BatteryTip.StateType.INVISIBLE : BatteryTip.StateType.NEW;
+ smartBatteryOff ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
return new SmartBatteryTip(state);
}
}
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 c52b73e..654b247 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPolicyTest.java
@@ -45,7 +45,10 @@
+ ",low_battery_enabled=false"
+ ",low_battery_hour=10"
+ ",data_history_retain_day=24"
- + ",excessive_bg_drain_percentage=25";
+ + ",excessive_bg_drain_percentage=25"
+ + ",test_battery_saver_tip=true"
+ + ",test_high_usage_tip=false"
+ + ",test_smart_battery_tip=true";
private Context mContext;
@Before
@@ -74,6 +77,9 @@
assertThat(batteryTipPolicy.lowBatteryHour).isEqualTo(10);
assertThat(batteryTipPolicy.dataHistoryRetainDay).isEqualTo(24);
assertThat(batteryTipPolicy.excessiveBgDrainPercentage).isEqualTo(25);
+ assertThat(batteryTipPolicy.testBatterySaverTip).isTrue();
+ assertThat(batteryTipPolicy.testHighUsageTip).isFalse();
+ assertThat(batteryTipPolicy.testSmartBatteryTip).isTrue();
}
@Test
@@ -97,5 +103,8 @@
assertThat(batteryTipPolicy.lowBatteryHour).isEqualTo(16);
assertThat(batteryTipPolicy.dataHistoryRetainDay).isEqualTo(30);
assertThat(batteryTipPolicy.excessiveBgDrainPercentage).isEqualTo(10);
+ assertThat(batteryTipPolicy.testBatterySaverTip).isFalse();
+ assertThat(batteryTipPolicy.testHighUsageTip).isFalse();
+ assertThat(batteryTipPolicy.testSmartBatteryTip).isFalse();
}
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/EarlyWarningDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/EarlyWarningDetectorTest.java
index 21ef8a3..c4c3d02 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/EarlyWarningDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/EarlyWarningDetectorTest.java
@@ -75,6 +75,16 @@
}
@Test
+ public void testDetect_testFeatureOn_tipNew() {
+ doReturn(false).when(mFakeFeatureFactory.powerUsageFeatureProvider)
+ .getEarlyWarningSignal(any(), any());
+ ReflectionHelpers.setField(mPolicy, "testBatterySaverTip", true);
+
+ assertThat(mEarlyWarningDetector.detect().getState())
+ .isEqualTo(BatteryTip.StateType.NEW);
+ }
+
+ @Test
public void testDetect_batterySaverOn_tipHandled() {
doReturn(true).when(mPowerManager).isPowerSaveMode();
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java
index d983dfc..2a2420d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java
@@ -34,6 +34,7 @@
import com.android.settings.fuelgauge.batterytip.AppInfo;
import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
import com.android.settings.fuelgauge.batterytip.HighUsageDataParser;
+import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -109,6 +110,14 @@
}
@Test
+ public void testDetect_testFeatureOn_tipNew() {
+ doReturn(false).when(mDataParser).isDeviceHeavilyUsed();
+ ReflectionHelpers.setField(mPolicy, "testHighUsageTip", true);
+
+ assertThat(mHighUsageDetector.detect().getState()).isEqualTo(BatteryTip.StateType.NEW);
+ }
+
+ @Test
public void testDetect_containsHighUsageApp_tipVisible() {
doReturn(true).when(mDataParser).isDeviceHeavilyUsed();
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetectorTest.java
index 9134319..ad08a22 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/SmartBatteryDetectorTest.java
@@ -24,6 +24,7 @@
import android.provider.Settings;
import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
+import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
@@ -31,6 +32,7 @@
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
+import org.robolectric.util.ReflectionHelpers;
@RunWith(SettingsRobolectricTestRunner.class)
public class SmartBatteryDetectorTest {
@@ -38,6 +40,7 @@
private Context mContext;
private ContentResolver mContentResolver;
private SmartBatteryDetector mSmartBatteryDetector;
+ private BatteryTipPolicy mPolicy;
@Before
public void setUp() {
@@ -45,8 +48,15 @@
mContext = RuntimeEnvironment.application;
mContentResolver = mContext.getContentResolver();
- final BatteryTipPolicy policy = spy(new BatteryTipPolicy(mContext));
- mSmartBatteryDetector = new SmartBatteryDetector(policy, mContentResolver);
+ mPolicy = spy(new BatteryTipPolicy(mContext));
+ mSmartBatteryDetector = new SmartBatteryDetector(mPolicy, mContentResolver);
+ }
+
+ @Test
+ public void testDetect_testFeatureOn_tipNew() {
+ ReflectionHelpers.setField(mPolicy, "testSmartBatteryTip", true);
+
+ assertThat(mSmartBatteryDetector.detect().getState()).isEqualTo(BatteryTip.StateType.NEW);
}
@Test