From 6cd9fc0a7eaa89b6852e68200986b8a58ba4d88d Mon Sep 17 00:00:00 2001 From: Wesley Wang Date: Wed, 16 Feb 2022 14:52:43 +0800 Subject: [PATCH] Refactor compact battery status method (1/2) - Move compact battery status logic into libs Bug: 219650786 Test: make SettingsRoboTests Change-Id: Icc53c8d88235bffedfb51a3526668277fcbf4f40 --- .../fuelgauge/BatteryBroadcastReceiver.java | 3 +- .../settings/fuelgauge/BatteryInfo.java | 41 ++++--------------- .../BatteryBroadcastReceiverTest.java | 10 ++--- 3 files changed, 14 insertions(+), 40 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java b/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java index 71e65bfdd6b..436cde809a8 100644 --- a/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java +++ b/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java @@ -112,7 +112,8 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver { if (intent != null && mBatteryListener != null) { if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { final String batteryLevel = Utils.getBatteryPercentage(intent); - final String batteryStatus = Utils.getBatteryStatus(mContext, intent); + final String batteryStatus = + Utils.getBatteryStatus(mContext, intent, /* compactStatus= */ false); final int batteryHealth = intent.getIntExtra( BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN); if (!Utils.isBatteryPresent(intent)) { diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java index 4e90710a639..98f19fedb3d 100644 --- a/src/com/android/settings/fuelgauge/BatteryInfo.java +++ b/src/com/android/settings/fuelgauge/BatteryInfo.java @@ -37,7 +37,6 @@ import com.android.settings.Utils; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.UsageView; import com.android.settingslib.R; -import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.settingslib.fuelgauge.Estimate; import com.android.settingslib.fuelgauge.EstimateKt; import com.android.settingslib.utils.PowerUtil; @@ -244,6 +243,8 @@ public class BatteryInfo { @NonNull BatteryUsageStats batteryUsageStats, Estimate estimate, long elapsedRealtimeUs, boolean shortString) { final long startTime = System.currentTimeMillis(); + final boolean isCompactStatus = context.getResources().getBoolean( + com.android.settings.R.bool.config_use_compact_battery_status); BatteryInfo info = new BatteryInfo(); info.mBatteryUsageStats = batteryUsageStats; info.batteryLevel = Utils.getBatteryLevel(batteryBroadcast); @@ -254,21 +255,21 @@ public class BatteryInfo { BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN) == BatteryManager.BATTERY_HEALTH_OVERHEAT; - info.statusLabel = getBatteryStatus(context, batteryBroadcast); + info.statusLabel = Utils.getBatteryStatus(context, batteryBroadcast, isCompactStatus); info.batteryStatus = batteryBroadcast.getIntExtra( BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); if (!info.mCharging) { updateBatteryInfoDischarging(context, shortString, estimate, info); } else { updateBatteryInfoCharging(context, batteryBroadcast, batteryUsageStats, - info); + info, isCompactStatus); } BatteryUtils.logRuntime(LOG_TAG, "time for getBatteryInfo", startTime); return info; } private static void updateBatteryInfoCharging(Context context, Intent batteryBroadcast, - BatteryUsageStats stats, BatteryInfo info) { + BatteryUsageStats stats, BatteryInfo info, boolean compactStatus) { final Resources resources = context.getResources(); final long chargeTimeMs = stats.getChargeTimeRemainingMs(); final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS, @@ -292,7 +293,8 @@ public class BatteryInfo { R.string.power_remaining_charging_duration_only, timeString); info.chargeLabel = context.getString(resId, info.batteryPercentString, timeString); } else { - final String chargeStatusLabel = getBatteryStatus(context, batteryBroadcast); + final String chargeStatusLabel = + Utils.getBatteryStatus(context, batteryBroadcast, compactStatus); info.remainingLabel = null; info.chargeLabel = info.batteryLevel == 100 ? info.batteryPercentString : resources.getString(R.string.power_charging, info.batteryPercentString, @@ -326,35 +328,6 @@ public class BatteryInfo { } } - private static String getBatteryStatus(Context context, Intent batteryChangedIntent) { - final Resources res = context.getResources(); - final boolean isShortStatus = - res.getBoolean(com.android.settings.R.bool.config_use_compact_battery_status); - - if (!isShortStatus) { - return Utils.getBatteryStatus(context, batteryChangedIntent); - } - - final int status = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_STATUS, - BatteryManager.BATTERY_STATUS_UNKNOWN); - final BatteryStatus batteryStatus = new BatteryStatus(batteryChangedIntent); - String statusString = res.getString(R.string.battery_info_status_unknown); - - if (batteryStatus.isCharged()) { - statusString = res.getString(R.string.battery_info_status_full); - } else { - if (status == BatteryManager.BATTERY_STATUS_CHARGING) { - statusString = res.getString(R.string.battery_info_status_charging); - } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) { - statusString = res.getString(R.string.battery_info_status_discharging); - } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) { - statusString = res.getString(R.string.battery_info_status_not_charging); - } - } - - return statusString; - } - public interface BatteryDataParser { void onParsingStarted(long startTime, long endTime); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java index 5f08698b4bd..d4469301894 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java @@ -85,8 +85,8 @@ public class BatteryBroadcastReceiverTest { assertThat(mBatteryBroadcastReceiver.mBatteryLevel) .isEqualTo(Utils.getBatteryPercentage(mChargingIntent)); - assertThat(mBatteryBroadcastReceiver.mBatteryStatus) - .isEqualTo(Utils.getBatteryStatus(mContext, mChargingIntent)); + assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo( + Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false)); verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL); } @@ -134,7 +134,7 @@ public class BatteryBroadcastReceiverTest { public void testOnReceive_batteryDataNotChanged_listenerNotInvoked() { final String batteryLevel = Utils.getBatteryPercentage(mChargingIntent); final String batteryStatus = - Utils.getBatteryStatus(mContext, mChargingIntent); + Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false); mBatteryBroadcastReceiver.mBatteryLevel = batteryLevel; mBatteryBroadcastReceiver.mBatteryStatus = batteryStatus; @@ -159,8 +159,8 @@ public class BatteryBroadcastReceiverTest { assertThat(mBatteryBroadcastReceiver.mBatteryLevel) .isEqualTo(Utils.getBatteryPercentage(mChargingIntent)); - assertThat(mBatteryBroadcastReceiver.mBatteryStatus) - .isEqualTo(Utils.getBatteryStatus(mContext, mChargingIntent)); + assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo( + Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false)); assertThat(mBatteryBroadcastReceiver.mBatteryHealth) .isEqualTo(BatteryManager.BATTERY_HEALTH_UNKNOWN); // 2 times because register will force update the battery