diff options
author | jackqdyulei <jackqdyulei@google.com> | 2018-02-06 14:03:30 -0800 |
---|---|---|
committer | jackqdyulei <jackqdyulei@google.com> | 2018-02-08 15:22:27 -0800 |
commit | a2df26e9b358086224d587b6da45c59da6098fe2 (patch) | |
tree | 54015b1a90cb08ca707adc44a86899263d07c00e | |
parent | 92757b2454c3bbc6d54a5b49efad4ebafc9fe01b (diff) | |
download | packages_apps_Settings-a2df26e9b358086224d587b6da45c59da6098fe2.tar.gz packages_apps_Settings-a2df26e9b358086224d587b6da45c59da6098fe2.tar.bz2 packages_apps_Settings-a2df26e9b358086224d587b6da45c59da6098fe2.zip |
Use BatterySaverReceiver in battery saver settings
Use this receiver to listen to following updates:
1. Plug state: if it is plugged in, disable this two state
button, otherwise make it enabled
2. low power mode: If mode on, show "turn off" otherwise show
"turn on"
Bug: 72228477
Test: RunSettingsRoboTests
Change-Id: Ib3d3df9f9a5fbac8b1b876c9e193beb75f522ebd
4 files changed, 44 insertions, 20 deletions
diff --git a/src/com/android/settings/fuelgauge/BatterySaverReceiver.java b/src/com/android/settings/fuelgauge/BatterySaverReceiver.java index 22544389cf..300dc0f01d 100644 --- a/src/com/android/settings/fuelgauge/BatterySaverReceiver.java +++ b/src/com/android/settings/fuelgauge/BatterySaverReceiver.java @@ -69,7 +69,7 @@ public class BatterySaverReceiver extends BroadcastReceiver { mBatterySaverListener = lsn; } - interface BatterySaverListener { + public interface BatterySaverListener { void onPowerSaveModeChanged(); void onBatteryChanged(boolean pluggedIn); } diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java index 17b42b80f6..1d427c9f95 100644 --- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java @@ -22,6 +22,7 @@ import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import com.android.settings.fuelgauge.BatteryBroadcastReceiver; +import com.android.settings.fuelgauge.BatterySaverReceiver; import com.android.settings.widget.TwoStateButtonPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -31,20 +32,19 @@ import com.android.settingslib.core.lifecycle.events.OnStop; /** * Controller to update the battery saver button */ -//TODO(b/72228477): disable the button if device is charging. public class BatterySaverButtonPreferenceController extends TwoStateButtonPreferenceController implements - LifecycleObserver, OnStart, OnStop, BatteryBroadcastReceiver.OnBatteryChangedListener { + LifecycleObserver, OnStart, OnStop, BatterySaverReceiver.BatterySaverListener { private static final String KEY = "battery_saver_button_container"; - private BatteryBroadcastReceiver mBatteryBroadcastReceiver; + private BatterySaverReceiver mBatterySaverReceiver; @VisibleForTesting PowerManager mPowerManager; public BatterySaverButtonPreferenceController(Context context, Lifecycle lifecycle) { super(context, KEY); mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); - mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(context); - mBatteryBroadcastReceiver.setBatteryChangedListener(this); + mBatterySaverReceiver = new BatterySaverReceiver(context); + mBatterySaverReceiver.setBatterySaverListener(this); if (lifecycle != null) { lifecycle.addObserver(this); } @@ -52,19 +52,18 @@ public class BatterySaverButtonPreferenceController extends @Override public void onStart() { - mBatteryBroadcastReceiver.register(); + mBatterySaverReceiver.setListening(true); } @Override public void onStop() { - mBatteryBroadcastReceiver.unRegister(); + mBatterySaverReceiver.setListening(false); } @Override public void updateState(Preference preference) { super.updateState(preference); - final boolean lowPowerModeOn = mPowerManager.isPowerSaveMode(); - updateButton(!lowPowerModeOn); + setButtonVisibility(!mPowerManager.isPowerSaveMode()); } @Override @@ -73,13 +72,17 @@ public class BatterySaverButtonPreferenceController extends } @Override - public void onBatteryChanged() { - final boolean lowPowerModeOn = mPowerManager.isPowerSaveMode(); - updateButton(!lowPowerModeOn); + public void onButtonClicked(boolean stateOn) { + mPowerManager.setPowerSaveMode(stateOn); } @Override - public void onButtonClicked(boolean stateOn) { - mPowerManager.setPowerSaveMode(stateOn); + public void onPowerSaveModeChanged() { + setButtonVisibility(!mPowerManager.isPowerSaveMode()); + } + + @Override + public void onBatteryChanged(boolean pluggedIn) { + setButtonEnabled(!pluggedIn); } }
\ No newline at end of file diff --git a/src/com/android/settings/widget/TwoStateButtonPreferenceController.java b/src/com/android/settings/widget/TwoStateButtonPreferenceController.java index 5f5e098469..47699ef0a7 100644 --- a/src/com/android/settings/widget/TwoStateButtonPreferenceController.java +++ b/src/com/android/settings/widget/TwoStateButtonPreferenceController.java @@ -47,7 +47,7 @@ public abstract class TwoStateButtonPreferenceController extends BasePreferenceC mButtonOff.setOnClickListener(this); } - protected void updateButton(boolean stateOn) { + protected void setButtonVisibility(boolean stateOn) { if (stateOn) { mButtonOff.setVisibility(View.GONE); mButtonOn.setVisibility(View.VISIBLE); @@ -57,6 +57,11 @@ public abstract class TwoStateButtonPreferenceController extends BasePreferenceC } } + protected void setButtonEnabled(boolean enabled) { + mButtonOn.setEnabled(enabled); + mButtonOff.setEnabled(enabled); + } + @Override public void onClick(View v) { final boolean stateOn = v.getId() == R.id.state_on_button; diff --git a/tests/robotests/src/com/android/settings/widget/TwoStateButtonPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/widget/TwoStateButtonPreferenceControllerTest.java index b160888993..a28981513f 100644 --- a/tests/robotests/src/com/android/settings/widget/TwoStateButtonPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/widget/TwoStateButtonPreferenceControllerTest.java @@ -67,21 +67,37 @@ public class TwoStateButtonPreferenceControllerTest { } @Test - public void testUpdateButtons_stateOn_onlyShowButtonOn() { - mController.updateButton(true /* stateOn */); + public void testSetButtonVisibility_stateOn_onlyShowButtonOn() { + mController.setButtonVisibility(true /* stateOn */); assertThat(mButtonOn.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mButtonOff.getVisibility()).isEqualTo(View.GONE); } @Test - public void testUpdateButtons_stateOff_onlyShowButtonOff() { - mController.updateButton(false /* stateOn */); + public void testSetButtonVisibility_stateOff_onlyShowButtonOff() { + mController.setButtonVisibility(false /* stateOn */); assertThat(mButtonOn.getVisibility()).isEqualTo(View.GONE); assertThat(mButtonOff.getVisibility()).isEqualTo(View.VISIBLE); } + @Test + public void testSetButtonEnabled_enabled_buttonEnabled() { + mController.setButtonEnabled(true /* enabled */); + + assertThat(mButtonOn.isEnabled()).isTrue(); + assertThat(mButtonOff.isEnabled()).isTrue(); + } + + @Test + public void testSetButtonEnabled_disabled_buttonDisabled() { + mController.setButtonEnabled(false /* enabled */); + + assertThat(mButtonOn.isEnabled()).isFalse(); + assertThat(mButtonOff.isEnabled()).isFalse(); + } + /** * Controller to test methods in {@link TwoStateButtonPreferenceController} */ |