Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 113e3d5c authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Get auto-battery saver threshold max from global setting

Bug: 74351418
Test: Manual test with "settings put global low_power_trigger_level_max 100"
Test: m ROBOTEST_FILTER=AutoBatterySeekBarPreferenceControllerTest RunSettingsRoboTests
Change-Id: Ice25835f36e7855e3ed665cd780d7eb1a26acd27
parent 59520b02
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.util.Log;

import com.android.settings.R;
import com.android.settings.Utils;
@@ -40,6 +41,7 @@ import com.android.settingslib.core.lifecycle.events.OnStop;
 */
public class AutoBatterySeekBarPreferenceController extends BasePreferenceController implements
        LifecycleObserver, OnStart, OnStop, SeekBarPreference.OnPreferenceChangeListener {
    private static final String TAG = "AutoBatterySeekBarPreferenceController";
    @VisibleForTesting
    static final String KEY_AUTO_BATTERY_SEEK_BAR = "battery_saver_seek_bar";
    private final int mDefWarnLevel;
@@ -96,6 +98,24 @@ public class AutoBatterySeekBarPreferenceController extends BasePreferenceContro
    @VisibleForTesting
    void updatePreference(Preference preference) {
        final ContentResolver contentResolver = mContext.getContentResolver();

        // Override the max value with LOW_POWER_MODE_TRIGGER_LEVEL_MAX, if set.
        final int maxLevel = Settings.Global.getInt(contentResolver,
                Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL_MAX, 0);
        if (maxLevel > 0) {
            if (!(preference instanceof SeekBarPreference)) {
                Log.e(TAG, "Unexpected preference class: " + preference.getClass());
            } else {
                final SeekBarPreference seekBarPreference = (SeekBarPreference) preference;
                if (maxLevel < seekBarPreference.getMin()) {
                    Log.e(TAG, "LOW_POWER_MODE_TRIGGER_LEVEL_MAX too low; ignored.");
                } else {
                    seekBarPreference.setMax(maxLevel);
                }
            }
        }

        // Set the current value.
        final int level = Settings.Global.getInt(contentResolver,
                Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, mDefWarnLevel);
        if (level == 0) {
@@ -109,7 +129,7 @@ public class AutoBatterySeekBarPreferenceController extends BasePreferenceContro
    }

    /**
     * Observer that listens to change from {@link Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL}
     * Observer that listens to change from {@link Settings.Global#LOW_POWER_MODE_TRIGGER_LEVEL}
     */
    private final class AutoBatterySaverSettingObserver extends ContentObserver {
        private final Uri mUri = Settings.Global.getUriFor(
+20 −0
Original line number Diff line number Diff line
@@ -99,4 +99,24 @@ public class AutoBatterySeekBarPreferenceControllerTest {
        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0)).isEqualTo(TRIGGER_LEVEL);
    }

    @Test
    public void testOnPreferenceChange_changeMax() {
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL_MAX, 50);

        mController.updateState(mPreference);

        assertThat(mPreference.getMax()).isEqualTo(50);
    }

    @Test
    public void testOnPreferenceChange_noChangeMax() {
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL_MAX, 0);

        mController.updateState(mPreference);

        assertThat(mPreference.getMax()).isEqualTo(100);
    }
}