diff --git a/src/com/android/settings/fuelgauge/BatterySaverController.java b/src/com/android/settings/fuelgauge/BatterySaverController.java index 8fec9b46768..7fa479968a9 100644 --- a/src/com/android/settings/fuelgauge/BatterySaverController.java +++ b/src/com/android/settings/fuelgauge/BatterySaverController.java @@ -19,6 +19,7 @@ import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; +import android.os.AsyncTask; import android.os.Handler; import android.os.Looper; import android.os.PowerManager; @@ -137,17 +138,13 @@ public class BatterySaverController extends BasePreferenceController final int mode = Global.getInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); int fuelgaugeScheduleType = SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_NO_SCHEDULE; + int powerLevelTriggerPercentage = -1; switch (mode) { case PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE: fuelgaugeScheduleType = SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_PERCENTAGE; - final int powerLevelTriggerPercentage = Global.getInt(resolver, + powerLevelTriggerPercentage = Global.getInt(resolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); - mMetricsFeatureProvider.action(mContext, SettingsEnums.FUELGAUGE_BATTERY_SAVER, - Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE, - fuelgaugeScheduleType), - Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE, - powerLevelTriggerPercentage)); break; case PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC: fuelgaugeScheduleType = SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_ROUTINE; @@ -157,13 +154,15 @@ public class BatterySaverController extends BasePreferenceController } mMetricsFeatureProvider.action(mContext, SettingsEnums.FUELGAUGE_BATTERY_SAVER, Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE, - fuelgaugeScheduleType)); + fuelgaugeScheduleType), + Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE, + powerLevelTriggerPercentage)); } @Override public void onPowerSaveModeChanged() { updateSummary(); - logPowerSaver(); + AsyncTask.execute(() -> logPowerSaver()); } @Override diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java index cee11603d43..86418c66482 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java @@ -88,9 +88,13 @@ public class BatterySaverControllerTest { Settings.Global.AUTOMATIC_POWER_SAVE_MODE, -1); mBatterySaverController.onPowerSaveModeChanged(); + + waitAWhile(); verify(mMetricsFeatureProvider).action(mContext, SettingsEnums.FUELGAUGE_BATTERY_SAVER, Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE, - SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_NO_SCHEDULE)); + SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_NO_SCHEDULE), + Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE, + -1)); } @Test @@ -104,6 +108,8 @@ public class BatterySaverControllerTest { Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, percentageVal); mBatterySaverController.onPowerSaveModeChanged(); + + waitAWhile(); verify(mMetricsFeatureProvider).action(mContext, SettingsEnums.FUELGAUGE_BATTERY_SAVER, Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE, SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_PERCENTAGE), @@ -119,9 +125,13 @@ public class BatterySaverControllerTest { PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC); mBatterySaverController.onPowerSaveModeChanged(); + + waitAWhile(); verify(mMetricsFeatureProvider).action(mContext, SettingsEnums.FUELGAUGE_BATTERY_SAVER, Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE, - SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_ROUTINE)); + SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_ROUTINE), + Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE, + -1)); } @Test @@ -167,4 +177,11 @@ public class BatterySaverControllerTest { assertThat(mBatterySaverController.getSummary()).isEqualTo("Off"); } + + private static void waitAWhile() { + try { + Thread.sleep(200); + } catch (Exception e) { + } + } }