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; package com.android.settings.fuelgauge;
import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_NOT_PRESENT;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleEventObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
@@ -29,27 +36,56 @@ import com.android.settingslib.widget.UsageProgressBarPreference;
/** Controller that update the battery header view */ /** Controller that update the battery header view */
public class BatteryHeaderPreferenceController extends BasePreferenceController public class BatteryHeaderPreferenceController extends BasePreferenceController
implements PreferenceControllerMixin { implements PreferenceControllerMixin, LifecycleEventObserver {
private static final String TAG = "BatteryHeaderPreferenceController"; private static final String TAG = "BatteryHeaderPreferenceController";
private static final int BATTERY_MAX_LEVEL = 100; 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) { public BatteryHeaderPreferenceController(Context context, String key) {
super(context, 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 @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
mBatteryUsageProgressBarPref = screen.findPreference(getPreferenceKey()); mBatteryUsageProgressBarPreference = screen.findPreference(getPreferenceKey());
// Hide the bottom summary from the progress bar. // Hide the bottom summary from the progress bar.
mBatteryUsageProgressBarPref.setBottomSummary(""); mBatteryUsageProgressBarPreference.setBottomSummary("");
if (com.android.settings.Utils.isBatteryPresent(mContext)) { if (com.android.settings.Utils.isBatteryPresent(mContext)) {
quickUpdateHeaderPreference(); quickUpdateHeaderPreference();
} else { } else {
mBatteryUsageProgressBarPref.setVisible(false); mBatteryUsageProgressBarPreference.setVisible(false);
} }
} }
@@ -60,12 +96,17 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
/** Updates {@link UsageProgressBarPreference} information. */ /** Updates {@link UsageProgressBarPreference} information. */
public void quickUpdateHeaderPreference() { public void quickUpdateHeaderPreference() {
if (mBatteryUsageProgressBarPreference == null) {
return;
}
Intent batteryBroadcast = Intent batteryBroadcast =
com.android.settingslib.fuelgauge.BatteryUtils.getBatteryIntent(mContext); com.android.settingslib.fuelgauge.BatteryUtils.getBatteryIntent(mContext);
final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast); final int batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
mBatteryUsageProgressBarPref.setUsageSummary(formatBatteryPercentageText(batteryLevel)); mBatteryUsageProgressBarPreference.setUsageSummary(
mBatteryUsageProgressBarPref.setPercent(batteryLevel, BATTERY_MAX_LEVEL); formatBatteryPercentageText(batteryLevel));
mBatteryUsageProgressBarPreference.setPercent(batteryLevel, BATTERY_MAX_LEVEL);
} }
private CharSequence formatBatteryPercentageText(int batteryLevel) { private CharSequence formatBatteryPercentageText(int batteryLevel) {

View File

@@ -36,7 +36,6 @@ import androidx.preference.Preference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.fuelgauge.BatteryHeaderPreferenceController;
import com.android.settings.fuelgauge.BatteryHeaderTextPreferenceController; import com.android.settings.fuelgauge.BatteryHeaderTextPreferenceController;
import com.android.settings.fuelgauge.BatteryInfo; import com.android.settings.fuelgauge.BatteryInfo;
import com.android.settings.fuelgauge.BatteryInfoLoader; import com.android.settings.fuelgauge.BatteryInfoLoader;
@@ -68,7 +67,6 @@ public class PowerUsageSummary extends PowerUsageBase
@VisibleForTesting BatteryUtils mBatteryUtils; @VisibleForTesting BatteryUtils mBatteryUtils;
@VisibleForTesting BatteryInfo mBatteryInfo; @VisibleForTesting BatteryInfo mBatteryInfo;
@VisibleForTesting BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
@VisibleForTesting BatteryHeaderTextPreferenceController mBatteryHeaderTextPreferenceController; @VisibleForTesting BatteryHeaderTextPreferenceController mBatteryHeaderTextPreferenceController;
@VisibleForTesting BatteryTipPreferenceController mBatteryTipPreferenceController; @VisibleForTesting BatteryTipPreferenceController mBatteryTipPreferenceController;
@VisibleForTesting boolean mNeedUpdateBatteryTip; @VisibleForTesting boolean mNeedUpdateBatteryTip;
@@ -95,7 +93,6 @@ public class PowerUsageSummary extends PowerUsageBase
@Override @Override
public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) { public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
mBatteryHeaderPreferenceController.quickUpdateHeaderPreference();
mBatteryHeaderTextPreferenceController.updateHeaderPreference(batteryInfo); mBatteryHeaderTextPreferenceController.updateHeaderPreference(batteryInfo);
mBatteryHeaderTextPreferenceController.updateHeaderByBatteryTips( mBatteryHeaderTextPreferenceController.updateHeaderByBatteryTips(
mBatteryTipPreferenceController.getCurrentBatteryTip(), batteryInfo); mBatteryTipPreferenceController.getCurrentBatteryTip(), batteryInfo);
@@ -132,7 +129,6 @@ public class PowerUsageSummary extends PowerUsageBase
super.onAttach(context); super.onAttach(context);
final Activity activity = getActivity(); final Activity activity = getActivity();
mBatteryHeaderPreferenceController = use(BatteryHeaderPreferenceController.class);
mBatteryHeaderTextPreferenceController = use(BatteryHeaderTextPreferenceController.class); mBatteryHeaderTextPreferenceController = use(BatteryHeaderTextPreferenceController.class);
mBatteryTipPreferenceController = use(BatteryTipPreferenceController.class); mBatteryTipPreferenceController = use(BatteryTipPreferenceController.class);
@@ -254,15 +250,6 @@ public class PowerUsageSummary extends PowerUsageBase
mNeedUpdateBatteryTip = icicle == null || mBatteryTipPreferenceController.needUpdate(); 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 @Override
public void onSaveInstanceState(Bundle outState) { public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);

View File

@@ -27,6 +27,8 @@ import android.content.Intent;
import android.hardware.usb.UsbManager; import android.hardware.usb.UsbManager;
import android.os.BatteryManager; import android.os.BatteryManager;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
@@ -55,10 +57,11 @@ public class BatteryHeaderPreferenceControllerTest {
private static final int BATTERY_MAX_LEVEL = 100; private static final int BATTERY_MAX_LEVEL = 100;
@Mock private PreferenceScreen mPreferenceScreen; @Mock private PreferenceScreen mPreferenceScreen;
@Mock private BatteryInfo mBatteryInfo; @Mock private BatteryBroadcastReceiver mBatteryBroadcastReceiver;
@Mock private EntityHeaderController mEntityHeaderController; @Mock private EntityHeaderController mEntityHeaderController;
@Mock private UsageProgressBarPreference mBatteryUsageProgressBarPref; @Mock private UsageProgressBarPreference mBatteryUsageProgressBarPreference;
@Mock private UsbManager mUsbManager; @Mock private UsbManager mUsbManager;
@Mock private LifecycleOwner mLifecycleOwner;
private BatteryHeaderPreferenceController mController; private BatteryHeaderPreferenceController mController;
private Context mContext; private Context mContext;
@@ -78,14 +81,12 @@ public class BatteryHeaderPreferenceControllerTest {
mBatteryIntent.putExtra(BatteryManager.EXTRA_PLUGGED, 1); mBatteryIntent.putExtra(BatteryManager.EXTRA_PLUGGED, 1);
doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any()); doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any());
doReturn(mBatteryUsageProgressBarPref) doReturn(mBatteryUsageProgressBarPreference)
.when(mPreferenceScreen) .when(mPreferenceScreen)
.findPreference(PREF_KEY); .findPreference(PREF_KEY);
mBatteryInfo.batteryLevel = BATTERY_LEVEL;
mController = spy(new BatteryHeaderPreferenceController(mContext, PREF_KEY)); mController = spy(new BatteryHeaderPreferenceController(mContext, PREF_KEY));
mController.mBatteryUsageProgressBarPref = mBatteryUsageProgressBarPref; mController.mBatteryUsageProgressBarPreference = mBatteryUsageProgressBarPreference;
BatteryUtils.setChargingStringV2Enabled(null); BatteryUtils.setChargingStringV2Enabled(null);
} }
@@ -96,21 +97,45 @@ public class BatteryHeaderPreferenceControllerTest {
ShadowUtils.reset(); 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 @Test
public void displayPreference_displayBatteryLevel() { public void displayPreference_displayBatteryLevel() {
mController.displayPreference(mPreferenceScreen); mController.displayPreference(mPreferenceScreen);
verify(mBatteryUsageProgressBarPref).setUsageSummary(formatBatteryPercentageText()); verify(mBatteryUsageProgressBarPreference).setUsageSummary(formatBatteryPercentageText());
verify(mBatteryUsageProgressBarPref).setPercent(BATTERY_LEVEL, BATTERY_MAX_LEVEL); verify(mBatteryUsageProgressBarPreference).setPercent(BATTERY_LEVEL, BATTERY_MAX_LEVEL);
} }
@Test @Test
public void quickUpdateHeaderPreference_onlyUpdateBatteryLevelAndChargingState() { public void quickUpdateHeaderPreference_onlyUpdateBatteryLevelAndChargingState() {
mController.quickUpdateHeaderPreference(); mController.quickUpdateHeaderPreference();
verify(mBatteryUsageProgressBarPref).setUsageSummary(formatBatteryPercentageText()); verify(mBatteryUsageProgressBarPreference).setUsageSummary(formatBatteryPercentageText());
verify(mBatteryUsageProgressBarPref).setPercent(BATTERY_LEVEL, BATTERY_MAX_LEVEL); verify(mBatteryUsageProgressBarPreference).setPercent(BATTERY_LEVEL, BATTERY_MAX_LEVEL);
} }
@Test @Test
@@ -125,14 +150,14 @@ public class BatteryHeaderPreferenceControllerTest {
mController.displayPreference(mPreferenceScreen); mController.displayPreference(mPreferenceScreen);
assertThat(mBatteryUsageProgressBarPref.isVisible()).isFalse(); assertThat(mBatteryUsageProgressBarPreference.isVisible()).isFalse();
} }
@Test @Test
public void displayPreference_init_setEmptyBottomSummary() { public void displayPreference_init_setEmptyBottomSummary() {
mController.displayPreference(mPreferenceScreen); mController.displayPreference(mPreferenceScreen);
verify(mBatteryUsageProgressBarPref).setBottomSummary(""); verify(mBatteryUsageProgressBarPreference).setBottomSummary("");
} }
private CharSequence formatBatteryPercentageText() { private CharSequence formatBatteryPercentageText() {