diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java index d568accd202..d9e06376a18 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java @@ -68,7 +68,8 @@ public class BatteryTipLoader extends AsyncLoader> { final Context context = getContext(); tips.add(new LowBatteryDetector(policy, batteryInfo).detect()); - tips.add(new HighUsageDetector(context, policy, mBatteryStatsHelper).detect()); + tips.add(new HighUsageDetector(context, policy, mBatteryStatsHelper, + batteryInfo.discharging).detect()); tips.add(new SmartBatteryDetector(policy, context.getContentResolver()).detect()); tips.add(new EarlyWarningDetector(policy, context).detect()); tips.add(new SummaryDetector(policy, batteryInfo.averageTimeToDischarge).detect()); diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java index dadd04f9985..664a8ca202e 100644 --- a/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java +++ b/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java @@ -44,28 +44,29 @@ public class HighUsageDetector implements BatteryTipDetector { private BatteryTipPolicy mPolicy; private BatteryStatsHelper mBatteryStatsHelper; private List mHighUsageAppList; - private Context mContext; @VisibleForTesting HighUsageDataParser mDataParser; @VisibleForTesting BatteryUtils mBatteryUtils; + @VisibleForTesting + boolean mDischarging; public HighUsageDetector(Context context, BatteryTipPolicy policy, - BatteryStatsHelper batteryStatsHelper) { - mContext = context; + BatteryStatsHelper batteryStatsHelper, boolean discharging) { mPolicy = policy; mBatteryStatsHelper = batteryStatsHelper; mHighUsageAppList = new ArrayList<>(); mBatteryUtils = BatteryUtils.getInstance(context); mDataParser = new HighUsageDataParser(mPolicy.highUsagePeriodMs, mPolicy.highUsageBatteryDraining); + mDischarging = discharging; } @Override public BatteryTip detect() { final long lastFullChargeTimeMs = mBatteryUtils.calculateLastFullChargeTime( mBatteryStatsHelper, System.currentTimeMillis()); - if (mPolicy.highUsageEnabled) { + if (mPolicy.highUsageEnabled && mDischarging) { parseBatteryData(); if (mDataParser.isDeviceHeavilyUsed() || mPolicy.testHighUsageTip) { final List batterySippers = mBatteryStatsHelper.getUsageList(); 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 2a2420d7f0c..d00cf875fa3 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 @@ -30,6 +30,7 @@ import android.text.format.DateUtils; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; +import com.android.settings.fuelgauge.BatteryInfo; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.fuelgauge.batterytip.AppInfo; import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy; @@ -77,7 +78,8 @@ public class HighUsageDetectorTest { mContext = RuntimeEnvironment.application; mPolicy = spy(new BatteryTipPolicy(mContext)); - mHighUsageDetector = spy(new HighUsageDetector(mContext, mPolicy, mBatteryStatsHelper)); + mHighUsageDetector = spy(new HighUsageDetector(mContext, mPolicy, mBatteryStatsHelper, + true /* mDischarging */)); mHighUsageDetector.mBatteryUtils = mBatteryUtils; mHighUsageDetector.mDataParser = mDataParser; doNothing().when(mHighUsageDetector).parseBatteryData(); @@ -109,6 +111,15 @@ public class HighUsageDetectorTest { assertThat(mHighUsageDetector.detect().isVisible()).isFalse(); } + @Test + public void testDetect_deviceCharging_tipInvisible() { + ReflectionHelpers.setField(mPolicy, "highUsageEnabled", true); + doReturn(true).when(mDataParser).isDeviceHeavilyUsed(); + mHighUsageDetector.mDischarging = false; + + assertThat(mHighUsageDetector.detect().isVisible()).isFalse(); + } + @Test public void testDetect_testFeatureOn_tipNew() { doReturn(false).when(mDataParser).isDeviceHeavilyUsed();