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
This commit is contained in:
Zaiyue Xue
2024-11-21 14:51:17 +08:00
parent 178eb0bd15
commit 47d8e1daee
3 changed files with 86 additions and 33 deletions

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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() {