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

Commit 58ff1943 authored by ykhung's avatar ykhung
Browse files

Remove saver schedule type logging entry from BatterySaverController

Bug: 15125481
Test: make SettingsGoogleRoboTests ROBOTEST_FILTER="com.android.settings.fuelgauge"
Change-Id: I698c4ef71217ecd68034cd5761e2b94cd868b38f
parent 62a350d1
Loading
Loading
Loading
Loading
+0 −39
Original line number Original line Diff line number Diff line
@@ -15,17 +15,14 @@
 */
 */
package com.android.settings.fuelgauge;
package com.android.settings.fuelgauge;


import android.app.settings.SettingsEnums;
import android.content.ContentResolver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Context;
import android.database.ContentObserver;
import android.database.ContentObserver;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Handler;
import android.os.Looper;
import android.os.Looper;
import android.os.PowerManager;
import android.os.PowerManager;
import android.provider.Settings;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.provider.Settings.Global;
import android.util.Pair;


import androidx.preference.Preference;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceScreen;
@@ -33,8 +30,6 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -49,7 +44,6 @@ public class BatterySaverController extends BasePreferenceController
    private final BatterySaverReceiver mBatteryStateChangeReceiver;
    private final BatterySaverReceiver mBatteryStateChangeReceiver;
    private final PowerManager mPowerManager;
    private final PowerManager mPowerManager;
    private Preference mBatterySaverPref;
    private Preference mBatterySaverPref;
    private final MetricsFeatureProvider mMetricsFeatureProvider;
    private final ContentObserver mObserver = new ContentObserver(
    private final ContentObserver mObserver = new ContentObserver(
            new Handler(Looper.getMainLooper())) {
            new Handler(Looper.getMainLooper())) {
        @Override
        @Override
@@ -62,7 +56,6 @@ public class BatterySaverController extends BasePreferenceController
        super(context, KEY_BATTERY_SAVER);
        super(context, KEY_BATTERY_SAVER);


        mPowerManager = mContext.getSystemService(PowerManager.class);
        mPowerManager = mContext.getSystemService(PowerManager.class);
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
        mBatteryStateChangeReceiver = new BatterySaverReceiver(context);
        mBatteryStateChangeReceiver = new BatterySaverReceiver(context);
        mBatteryStateChangeReceiver.setBatterySaverListener(this);
        mBatteryStateChangeReceiver.setBatterySaverListener(this);
        BatterySaverUtils.revertScheduleToNoneIfNeeded(context);
        BatterySaverUtils.revertScheduleToNoneIfNeeded(context);
@@ -128,41 +121,9 @@ public class BatterySaverController extends BasePreferenceController
        }
        }
    }
    }


    private void logPowerSaver() {
        if (!mPowerManager.isPowerSaveMode()) {
            // Power saver is off, so don't do anything.
            return;
        }

        final ContentResolver resolver = mContext.getContentResolver();
        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;
                powerLevelTriggerPercentage = Global.getInt(resolver,
                        Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
                break;
            case PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC:
                fuelgaugeScheduleType = SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_ROUTINE;
                break;
            default:
                // empty
        }
        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));
    }

    @Override
    @Override
    public void onPowerSaveModeChanged() {
    public void onPowerSaveModeChanged() {
        updateSummary();
        updateSummary();
        AsyncTask.execute(() -> logPowerSaver());
    }
    }


    @Override
    @Override
+0 −67
Original line number Original line Diff line number Diff line
@@ -29,9 +29,6 @@ import android.util.Pair;


import androidx.preference.Preference;
import androidx.preference.Preference;


import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
@@ -51,16 +48,12 @@ public class BatterySaverControllerTest {


    private BatterySaverController mBatterySaverController;
    private BatterySaverController mBatterySaverController;
    private Context mContext;
    private Context mContext;
    private FakeFeatureFactory mFeatureFactory;
    private MetricsFeatureProvider mMetricsFeatureProvider;


    @Before
    @Before
    public void setUp() {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        MockitoAnnotations.initMocks(this);


        mContext = RuntimeEnvironment.application;
        mContext = RuntimeEnvironment.application;
        mFeatureFactory = FakeFeatureFactory.setupForTest();
        mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
        mBatterySaverController = spy(new BatterySaverController(mContext));
        mBatterySaverController = spy(new BatterySaverController(mContext));
        ReflectionHelpers.setField(mBatterySaverController, "mPowerManager", mPowerManager);
        ReflectionHelpers.setField(mBatterySaverController, "mPowerManager", mPowerManager);
        ReflectionHelpers.setField(mBatterySaverController, "mBatterySaverPref", mBatterySaverPref);
        ReflectionHelpers.setField(mBatterySaverController, "mBatterySaverPref", mBatterySaverPref);
@@ -81,59 +74,6 @@ public class BatterySaverControllerTest {
        verify(mBatterySaverPref).setSummary("Off");
        verify(mBatterySaverPref).setSummary("Off");
    }
    }


    @Test
    public void onPreferenceChange_onPowerSaveModeChanged_manualTrigger_logsType() {
        when(mPowerManager.isPowerSaveMode()).thenReturn(true);
        Settings.Global.putInt(mContext.getContentResolver(),
                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),
                Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
                        -1));
    }

    @Test
    public void onPreferenceChange_onPowerSaveModeChanged_triggerPercent_logsTypeAndPercentage() {
        when(mPowerManager.isPowerSaveMode()).thenReturn(true);
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.AUTOMATIC_POWER_SAVE_MODE,
                PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
        final int percentageVal = 15;
        Settings.Global.putInt(mContext.getContentResolver(),
                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),
                Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
                        percentageVal));
    }

    @Test
    public void onPreferenceChange_onPowerSaveModeChanged_triggerDynamic_logsType() {
        when(mPowerManager.isPowerSaveMode()).thenReturn(true);
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.AUTOMATIC_POWER_SAVE_MODE,
                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),
                Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
                        -1));
    }

    @Test
    @Test
    public void getSummary_batterySaverOn_showSummaryOn() {
    public void getSummary_batterySaverOn_showSummaryOn() {
        when(mPowerManager.isPowerSaveMode()).thenReturn(true);
        when(mPowerManager.isPowerSaveMode()).thenReturn(true);
@@ -177,11 +117,4 @@ public class BatterySaverControllerTest {


        assertThat(mBatterySaverController.getSummary()).isEqualTo("Off");
        assertThat(mBatterySaverController.getSummary()).isEqualTo("Off");
    }
    }

    private static void waitAWhile() {
        try {
            Thread.sleep(200);
        } catch (Exception e) {
        }
    }
}
}