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

Commit 55593a98 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Adding enableNightMode flag to BatterySaverPolicy."

parents 6737cc67 4db6a3ca
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -614,6 +614,11 @@ public final class PowerManager {
         * Whether to go into Deep Doze as soon as the screen turns off or not.
         */
        int QUICK_DOZE = 15;

        /**
         * Whether to enable night mode when battery saver is enabled.
         */
        int NIGHT_MODE = 16;
    }

    /**
+1 −0
Original line number Diff line number Diff line
@@ -11442,6 +11442,7 @@ public final class Settings {
         * <pre>
         * advertise_is_enabled              (boolean)
         * datasaver_disabled                (boolean)
         * enable_night_mode                 (boolean)
         * launch_boost_disabled             (boolean)
         * vibration_disabled                (boolean)
         * animation_disabled                (boolean)
+18 −4
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ import android.os.BatteryManager;
import android.os.Binder;
import android.os.Handler;
import android.os.PowerManager;
import android.os.PowerManager.ServiceType;
import android.os.PowerManagerInternal;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.ServiceManager;
@@ -161,9 +163,6 @@ final class UiModeManagerService extends SystemService {
                case Intent.ACTION_BATTERY_CHANGED:
                    mCharging = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
                    break;
                case PowerManager.ACTION_POWER_SAVE_MODE_CHANGING:
                    mPowerSave = intent.getBooleanExtra(PowerManager.EXTRA_POWER_SAVE_MODE, false);
                    break;
            }
            synchronized (mLock) {
                if (mSystemReady) {
@@ -208,9 +207,24 @@ final class UiModeManagerService extends SystemService {
        context.registerReceiver(mDockModeReceiver,
                new IntentFilter(Intent.ACTION_DOCK_EVENT));
        IntentFilter batteryFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        batteryFilter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGING);
        context.registerReceiver(mBatteryReceiver, batteryFilter);

        PowerManagerInternal localPowerManager =
                LocalServices.getService(PowerManagerInternal.class);
        mPowerSave = localPowerManager.getLowPowerState(ServiceType.NIGHT_MODE).batterySaverEnabled;
        localPowerManager.registerLowPowerModeObserver(ServiceType.NIGHT_MODE,
                state -> {
                    synchronized (mLock) {
                        if (mPowerSave == state.batterySaverEnabled) {
                            return;
                        }
                        mPowerSave = state.batterySaverEnabled;
                        if (mSystemReady) {
                            updateLocked(0, 0);
                        }
                    }
                });

        mConfiguration.setToDefaults();

        final Resources res = context.getResources();
+22 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ public class BatterySaverPolicy extends ContentObserver {
    private static final String KEY_AOD_DISABLED = "aod_disabled";
    // Go into deep Doze as soon as the screen turns off.
    private static final String KEY_QUICK_DOZE_ENABLED = "quick_doze_enabled";
    private static final String KEY_ENABLE_NIGHT_MODE = "enable_night_mode";

    private static final String KEY_CPU_FREQ_INTERACTIVE = "cpufreq-i";
    private static final String KEY_CPU_FREQ_NONINTERACTIVE = "cpufreq-n";
@@ -123,6 +124,7 @@ public class BatterySaverPolicy extends ContentObserver {
            false, /* enableAdjustBrightness */
            false, /* enableDataSaver */
            false, /* enableFireWall */
            false, /* enableNightMode */
            false, /* enableQuickDoze */
            new ArrayMap<>(), /* filesForInteractive */
            new ArrayMap<>(), /* filesForNoninteractive */
@@ -147,6 +149,7 @@ public class BatterySaverPolicy extends ContentObserver {
            false, /* enableAdjustBrightness */
            false, /* enableDataSaver */
            true,  /* enableFirewall */
            true, /* enableNightMode */
            true, /* enableQuickDoze */
            new ArrayMap<>(), /* filesForInteractive */
            new ArrayMap<>(), /* filesForNoninteractive */
@@ -522,6 +525,11 @@ public class BatterySaverPolicy extends ContentObserver {
         */
        public final boolean enableFirewall;

        /**
         * Whether to enable night mode or not.
         */
        public final boolean enableNightMode;

        /**
         * Whether Quick Doze is enabled or not.
         */
@@ -578,6 +586,7 @@ public class BatterySaverPolicy extends ContentObserver {
                boolean enableAdjustBrightness,
                boolean enableDataSaver,
                boolean enableFirewall,
                boolean enableNightMode,
                boolean enableQuickDoze,
                ArrayMap<String, String> filesForInteractive,
                ArrayMap<String, String> filesForNoninteractive,
@@ -598,6 +607,7 @@ public class BatterySaverPolicy extends ContentObserver {
            this.enableAdjustBrightness = enableAdjustBrightness;
            this.enableDataSaver = enableDataSaver;
            this.enableFirewall = enableFirewall;
            this.enableNightMode = enableNightMode;
            this.enableQuickDoze = enableQuickDoze;
            this.filesForInteractive = filesForInteractive;
            this.filesForNoninteractive = filesForNoninteractive;
@@ -619,6 +629,7 @@ public class BatterySaverPolicy extends ContentObserver {
                    enableAdjustBrightness,
                    enableDataSaver,
                    enableFirewall,
                    enableNightMode,
                    enableQuickDoze,
                    filesForInteractive,
                    filesForNoninteractive,
@@ -654,6 +665,8 @@ public class BatterySaverPolicy extends ContentObserver {
                    config.getEnableAdjustBrightness(),
                    config.getEnableDataSaver(),
                    config.getEnableFirewall(),
                    // TODO: add option to config
                    config.getAdvertiseIsEnabled(),
                    config.getEnableQuickDoze(),
                    /* filesForInteractive */
                    (new CpuFrequencies()).parseString(cpuFreqInteractive).toSysFileMap(),
@@ -716,6 +729,8 @@ public class BatterySaverPolicy extends ContentObserver {
                    !defaultPolicy.enableDataSaver);
            boolean enableFirewall = !parser.getBoolean(KEY_ACTIVATE_FIREWALL_DISABLED,
                    !defaultPolicy.enableFirewall);
            boolean enableNightMode = !parser.getBoolean(KEY_ENABLE_NIGHT_MODE,
                    !defaultPolicy.enableNightMode);
            boolean enableQuickDoze = parser.getBoolean(KEY_QUICK_DOZE_ENABLED,
                    defaultPolicy.enableQuickDoze);
            boolean forceAllAppsStandby = parser.getBoolean(KEY_FORCE_ALL_APPS_STANDBY,
@@ -739,6 +754,7 @@ public class BatterySaverPolicy extends ContentObserver {
                    enableAdjustBrightness,
                    enableDataSaver,
                    enableFirewall,
                    enableNightMode,
                    enableQuickDoze,
                    /* filesForInteractive */
                    (new CpuFrequencies()).parseString(cpuFreqInteractive).toSysFileMap(),
@@ -768,6 +784,7 @@ public class BatterySaverPolicy extends ContentObserver {
                    && enableAdjustBrightness == other.enableAdjustBrightness
                    && enableDataSaver == other.enableDataSaver
                    && enableFirewall == other.enableFirewall
                    && enableNightMode == other.enableNightMode
                    && enableQuickDoze == other.enableQuickDoze
                    && forceAllAppsStandby == other.forceAllAppsStandby
                    && forceBackgroundCheck == other.forceBackgroundCheck
@@ -833,6 +850,9 @@ public class BatterySaverPolicy extends ContentObserver {
                case ServiceType.FORCE_BACKGROUND_CHECK:
                    return builder.setBatterySaverEnabled(currPolicy.forceBackgroundCheck)
                            .build();
                case ServiceType.NIGHT_MODE:
                    return builder.setBatterySaverEnabled(currPolicy.enableNightMode)
                            .build();
                case ServiceType.OPTIONAL_SENSORS:
                    return builder.setBatterySaverEnabled(currPolicy.disableOptionalSensors)
                            .build();
@@ -1009,6 +1029,8 @@ public class BatterySaverPolicy extends ContentObserver {
        pw.println("  " + KEY_SOUNDTRIGGER_DISABLED + "=" + p.disableSoundTrigger);
        pw.print(indent);
        pw.println("  " + KEY_QUICK_DOZE_ENABLED + "=" + p.enableQuickDoze);
        pw.print(indent);
        pw.println("  " + KEY_ENABLE_NIGHT_MODE + "=" + p.enableNightMode);

        pw.print("    Interactive File values:\n");
        dumpMap(pw, "      ", p.filesForInteractive);
+6 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ import org.mockito.MockitoAnnotations;
 * Tests for {@link com.android.server.power.batterysaver.BatterySaverPolicy}
 */
public class BatterySaverPolicyTest extends AndroidTestCase {
    private static final int MAX_SERVICE_TYPE = 15;
    private static final int MAX_SERVICE_TYPE = 16;
    private static final float BRIGHTNESS_FACTOR = 0.7f;
    private static final float DEFAULT_BRIGHTNESS_FACTOR = 0.5f;
    private static final float PRECISION = 0.001f;
@@ -145,6 +145,11 @@ public class BatterySaverPolicyTest extends AndroidTestCase {
        testServiceDefaultValue_On(ServiceType.NETWORK_FIREWALL);
    }

    @SmallTest
    public void testGetBatterySaverPolicy_PolicyNightMode_DefaultValueCorrect() {
        testServiceDefaultValue_On(ServiceType.NIGHT_MODE);
    }

    @SmallTest
    public void testGetBatterySaverPolicy_PolicyDataSaver_DefaultValueCorrect() {
        mBatterySaverPolicy.updateConstantsLocked("", "");