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

Commit 31f17d88 authored by Weien Wang's avatar Weien Wang Committed by Android (Google) Code Review
Browse files

Merge "Fix the battery icon on the battery page when low battery"

parents d3fede04 27e9617c
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.PowerManager;
import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceFragment;
import androidx.preference.PreferenceScreen;
@@ -57,6 +58,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
    private final Activity mActivity;
    private final PreferenceFragment mHost;
    private final Lifecycle mLifecycle;
    private final PowerManager mPowerManager;

    private LayoutPreference mBatteryLayoutPref;

@@ -69,6 +71,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
        if (mLifecycle != null) {
            mLifecycle.addObserver(this);
        }
        mPowerManager = context.getSystemService(PowerManager.class);
    }

    @Override
@@ -115,6 +118,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl

        mBatteryMeterView.setBatteryLevel(info.batteryLevel);
        mBatteryMeterView.setCharging(!info.discharging);
        mBatteryMeterView.setPowerSave(mPowerManager.isPowerSaveMode());
    }

    public void quickUpdateHeaderPreference() {
@@ -127,6 +131,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
        // Set battery level and charging status
        mBatteryMeterView.setBatteryLevel(batteryLevel);
        mBatteryMeterView.setCharging(!discharging);
        mBatteryMeterView.setPowerSave(mPowerManager.isPowerSaveMode());
        mBatteryPercentText.setText(Utils.formatPercentage(batteryLevel));

        // clear all the summaries
+10 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ public class BatteryMeterView extends ImageView {
    ColorFilter mErrorColorFilter;
    @VisibleForTesting
    ColorFilter mAccentColorFilter;
    private boolean mPowerSaveEnabled;

    public BatteryMeterView(Context context) {
        this(context, null, 0);
@@ -73,6 +74,15 @@ public class BatteryMeterView extends ImageView {
        }
    }

    public void setPowerSave(boolean powerSave) {
        mDrawable.setPowerSave(powerSave);
        mPowerSaveEnabled = powerSave;
    }

    public boolean getPowerSave() {
        return mPowerSaveEnabled;
    }

    public int getBatteryLevel() {
        return mDrawable.getBatteryLevel();
    }
+20 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;

import android.app.Activity;
import androidx.lifecycle.LifecycleOwner;
@@ -33,6 +34,7 @@ import android.content.Context;
import android.content.Intent;
import android.os.BatteryManager;
import androidx.preference.PreferenceFragment;
import android.os.PowerManager;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;
import android.widget.TextView;
@@ -52,8 +54,9 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowPowerManager;

@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {
@@ -80,6 +83,7 @@ public class BatteryHeaderPreferenceControllerTest {
    private EntityHeaderController mEntityHeaderController;
    private BatteryHeaderPreferenceController mController;
    private Context mContext;
    private PowerManager mPowerManager;
    private BatteryMeterView mBatteryMeterView;
    private TextView mBatteryPercentText;
    private TextView mSummary;
@@ -114,6 +118,8 @@ public class BatteryHeaderPreferenceControllerTest {

        mBatteryInfo.batteryLevel = BATTERY_LEVEL;

        mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);

        mController = new BatteryHeaderPreferenceController(
                mContext, mActivity, mPreferenceFragment, mLifecycle);
        mController.mBatteryMeterView = mBatteryMeterView;
@@ -187,4 +193,17 @@ public class BatteryHeaderPreferenceControllerTest {
        assertThat(mBatteryMeterView.getCharging()).isTrue();
        assertThat(mBatteryPercentText.getText()).isEqualTo("60%");
    }

    @Test
    public void testQuickUpdateHeaderPreference_showPowerSave() {
        boolean testValues[] = {false, true};

        ShadowPowerManager shadowPowerManager = shadowOf(mPowerManager);
        for (boolean value : testValues) {
            shadowPowerManager.setIsPowerSaveMode(value);
            mController.quickUpdateHeaderPreference();

            assertThat(mBatteryMeterView.getPowerSave()).isEqualTo(value);
        }
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -86,4 +86,11 @@ public class BatteryMeterViewTest {

        verify(mDrawable).setBatteryColorFilter(mAccentColorFilter);
    }

    @Test
    public void testSetBatteryInfo_powerSave_setCorrectly() {
        mBatteryMeterView.setPowerSave(true);

        assertThat(mBatteryMeterView.getPowerSave()).isEqualTo(true);
    }
}