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

Commit 47d8e1da authored by Zaiyue Xue's avatar Zaiyue Xue
Browse files

Remove BatteryHeaderPreferenceController usage in PowerUsageSummary.

This is a no-op refactor. This change makes the BatteryHeaderPreference Catalyst migration doesn't depend on PowerUsageSummary.

Bug: 372774754
Test: manual
Flag: EXEMPT bug fix
Change-Id: I3d8d2856036f6840a0a163c35668f55baee487ab
parent 178eb0bd
Loading
Loading
Loading
Loading
+48 −7
Original line number Diff line number Diff line
@@ -16,10 +16,17 @@

package com.android.settings.fuelgauge;

import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_NOT_PRESENT;

import android.content.Context;
import android.content.Intent;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleEventObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen;

import com.android.settings.core.BasePreferenceController;
@@ -29,27 +36,56 @@ import com.android.settingslib.widget.UsageProgressBarPreference;

/** Controller that update the battery header view */
public class BatteryHeaderPreferenceController extends BasePreferenceController
        implements PreferenceControllerMixin {
        implements PreferenceControllerMixin, LifecycleEventObserver {
    private static final String TAG = "BatteryHeaderPreferenceController";
    private static final int BATTERY_MAX_LEVEL = 100;

    @VisibleForTesting UsageProgressBarPreference mBatteryUsageProgressBarPref;
    @Nullable @VisibleForTesting BatteryBroadcastReceiver mBatteryBroadcastReceiver;
    @Nullable @VisibleForTesting UsageProgressBarPreference mBatteryUsageProgressBarPreference;

    public BatteryHeaderPreferenceController(Context context, String key) {
        super(context, key);
    }

    @Override
    public void onStateChanged(@NonNull LifecycleOwner lifecycleOwner,
            @NonNull Lifecycle.Event event) {
        switch (event) {
            case ON_CREATE:
                mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext);
                mBatteryBroadcastReceiver.setBatteryChangedListener(
                        type -> {
                            if (type != BATTERY_NOT_PRESENT) {
                                quickUpdateHeaderPreference();
                            }
                        });
                break;
            case ON_START:
                if (mBatteryBroadcastReceiver != null) {
                    mBatteryBroadcastReceiver.register();
                }
                break;
            case ON_STOP:
                if (mBatteryBroadcastReceiver != null) {
                    mBatteryBroadcastReceiver.unRegister();
                }
                break;
            default:
                break;
        }
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mBatteryUsageProgressBarPref = screen.findPreference(getPreferenceKey());
        mBatteryUsageProgressBarPreference = screen.findPreference(getPreferenceKey());
        // Hide the bottom summary from the progress bar.
        mBatteryUsageProgressBarPref.setBottomSummary("");
        mBatteryUsageProgressBarPreference.setBottomSummary("");

        if (com.android.settings.Utils.isBatteryPresent(mContext)) {
            quickUpdateHeaderPreference();
        } else {
            mBatteryUsageProgressBarPref.setVisible(false);
            mBatteryUsageProgressBarPreference.setVisible(false);
        }
    }

@@ -60,12 +96,17 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController

    /** Updates {@link UsageProgressBarPreference} information. */
    public void quickUpdateHeaderPreference() {
        if (mBatteryUsageProgressBarPreference == null) {
            return;
        }

        Intent batteryBroadcast =
                com.android.settingslib.fuelgauge.BatteryUtils.getBatteryIntent(mContext);
        final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast);

        mBatteryUsageProgressBarPref.setUsageSummary(formatBatteryPercentageText(batteryLevel));
        mBatteryUsageProgressBarPref.setPercent(batteryLevel, BATTERY_MAX_LEVEL);
        mBatteryUsageProgressBarPreference.setUsageSummary(
                formatBatteryPercentageText(batteryLevel));
        mBatteryUsageProgressBarPreference.setPercent(batteryLevel, BATTERY_MAX_LEVEL);
    }

    private CharSequence formatBatteryPercentageText(int batteryLevel) {
+0 −13
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.fuelgauge.BatteryHeaderPreferenceController;
import com.android.settings.fuelgauge.BatteryHeaderTextPreferenceController;
import com.android.settings.fuelgauge.BatteryInfo;
import com.android.settings.fuelgauge.BatteryInfoLoader;
@@ -68,7 +67,6 @@ public class PowerUsageSummary extends PowerUsageBase
    @VisibleForTesting BatteryUtils mBatteryUtils;
    @VisibleForTesting BatteryInfo mBatteryInfo;

    @VisibleForTesting BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
    @VisibleForTesting BatteryHeaderTextPreferenceController mBatteryHeaderTextPreferenceController;
    @VisibleForTesting BatteryTipPreferenceController mBatteryTipPreferenceController;
    @VisibleForTesting boolean mNeedUpdateBatteryTip;
@@ -95,7 +93,6 @@ public class PowerUsageSummary extends PowerUsageBase

                @Override
                public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
                    mBatteryHeaderPreferenceController.quickUpdateHeaderPreference();
                    mBatteryHeaderTextPreferenceController.updateHeaderPreference(batteryInfo);
                    mBatteryHeaderTextPreferenceController.updateHeaderByBatteryTips(
                            mBatteryTipPreferenceController.getCurrentBatteryTip(), batteryInfo);
@@ -132,7 +129,6 @@ public class PowerUsageSummary extends PowerUsageBase
        super.onAttach(context);
        final Activity activity = getActivity();

        mBatteryHeaderPreferenceController = use(BatteryHeaderPreferenceController.class);
        mBatteryHeaderTextPreferenceController = use(BatteryHeaderTextPreferenceController.class);

        mBatteryTipPreferenceController = use(BatteryTipPreferenceController.class);
@@ -254,15 +250,6 @@ public class PowerUsageSummary extends PowerUsageBase
        mNeedUpdateBatteryTip = icicle == null || mBatteryTipPreferenceController.needUpdate();
    }

    @Override
    protected void restartBatteryStatsLoader(@BatteryUpdateType int refreshType) {
        super.restartBatteryStatsLoader(refreshType);
        // Update battery header if battery is present.
        if (mIsBatteryPresent) {
            mBatteryHeaderPreferenceController.quickUpdateHeaderPreference();
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
+38 −13
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import android.content.Intent;
import android.hardware.usb.UsbManager;
import android.os.BatteryManager;

import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen;

import com.android.settings.core.BasePreferenceController;
@@ -55,10 +57,11 @@ public class BatteryHeaderPreferenceControllerTest {
    private static final int BATTERY_MAX_LEVEL = 100;

    @Mock private PreferenceScreen mPreferenceScreen;
    @Mock private BatteryInfo mBatteryInfo;
    @Mock private BatteryBroadcastReceiver mBatteryBroadcastReceiver;
    @Mock private EntityHeaderController mEntityHeaderController;
    @Mock private UsageProgressBarPreference mBatteryUsageProgressBarPref;
    @Mock private UsageProgressBarPreference mBatteryUsageProgressBarPreference;
    @Mock private UsbManager mUsbManager;
    @Mock private LifecycleOwner mLifecycleOwner;

    private BatteryHeaderPreferenceController mController;
    private Context mContext;
@@ -78,14 +81,12 @@ public class BatteryHeaderPreferenceControllerTest {
        mBatteryIntent.putExtra(BatteryManager.EXTRA_PLUGGED, 1);
        doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any());

        doReturn(mBatteryUsageProgressBarPref)
        doReturn(mBatteryUsageProgressBarPreference)
                .when(mPreferenceScreen)
                .findPreference(PREF_KEY);

        mBatteryInfo.batteryLevel = BATTERY_LEVEL;

        mController = spy(new BatteryHeaderPreferenceController(mContext, PREF_KEY));
        mController.mBatteryUsageProgressBarPref = mBatteryUsageProgressBarPref;
        mController.mBatteryUsageProgressBarPreference = mBatteryUsageProgressBarPreference;

        BatteryUtils.setChargingStringV2Enabled(null);
    }
@@ -96,21 +97,45 @@ public class BatteryHeaderPreferenceControllerTest {
        ShadowUtils.reset();
    }

    @Test
    public void onStateChanged_onCreate_receiverCreated() {
        mController.onStateChanged(mLifecycleOwner,  Lifecycle.Event.ON_CREATE);

        assertThat(mController.mBatteryBroadcastReceiver).isNotNull();
    }

    @Test
    public void onStateChanged_onStart_receiverRegistered() {
        mController.mBatteryBroadcastReceiver = mBatteryBroadcastReceiver;

        mController.onStateChanged(mLifecycleOwner,  Lifecycle.Event.ON_START);

        verify(mBatteryBroadcastReceiver).register();
    }

    @Test
    public void onStateChanged_onStop_receiverUnregistered() {
        mController.mBatteryBroadcastReceiver = mBatteryBroadcastReceiver;

        mController.onStateChanged(mLifecycleOwner,  Lifecycle.Event.ON_STOP);

        verify(mBatteryBroadcastReceiver).unRegister();
    }

    @Test
    public void displayPreference_displayBatteryLevel() {
        mController.displayPreference(mPreferenceScreen);

        verify(mBatteryUsageProgressBarPref).setUsageSummary(formatBatteryPercentageText());
        verify(mBatteryUsageProgressBarPref).setPercent(BATTERY_LEVEL, BATTERY_MAX_LEVEL);
        verify(mBatteryUsageProgressBarPreference).setUsageSummary(formatBatteryPercentageText());
        verify(mBatteryUsageProgressBarPreference).setPercent(BATTERY_LEVEL, BATTERY_MAX_LEVEL);
    }


    @Test
    public void quickUpdateHeaderPreference_onlyUpdateBatteryLevelAndChargingState() {
        mController.quickUpdateHeaderPreference();

        verify(mBatteryUsageProgressBarPref).setUsageSummary(formatBatteryPercentageText());
        verify(mBatteryUsageProgressBarPref).setPercent(BATTERY_LEVEL, BATTERY_MAX_LEVEL);
        verify(mBatteryUsageProgressBarPreference).setUsageSummary(formatBatteryPercentageText());
        verify(mBatteryUsageProgressBarPreference).setPercent(BATTERY_LEVEL, BATTERY_MAX_LEVEL);
    }

    @Test
@@ -125,14 +150,14 @@ public class BatteryHeaderPreferenceControllerTest {

        mController.displayPreference(mPreferenceScreen);

        assertThat(mBatteryUsageProgressBarPref.isVisible()).isFalse();
        assertThat(mBatteryUsageProgressBarPreference.isVisible()).isFalse();
    }

    @Test
    public void displayPreference_init_setEmptyBottomSummary() {
        mController.displayPreference(mPreferenceScreen);

        verify(mBatteryUsageProgressBarPref).setBottomSummary("");
        verify(mBatteryUsageProgressBarPreference).setBottomSummary("");
    }

    private CharSequence formatBatteryPercentageText() {