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

Commit 8bcaab7c authored by Yiling Chuang's avatar Yiling Chuang
Browse files

Update the flow of charging optimization strings.

Bug: 329020954
Test: atest SettingsRoboTests
Change-Id: I73738602036d79568fe4739a63534af1c64bd9d1
parent c5571e55
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -86,13 +86,14 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
            return mContext.getString(
                    com.android.settingslib.R.string.battery_info_status_charging_on_hold);
        }
        if (info.remainingLabel != null
                && mBatterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) {
            return info.remainingLabel;
        }
        if (info.remainingLabel == null
                || info.batteryStatus == BatteryManager.BATTERY_STATUS_NOT_CHARGING) {
            return info.statusLabel;
        }
        if (mBatterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) {
            return info.remainingLabel;
        }
        if (info.pluggedStatus == BatteryManager.BATTERY_PLUGGED_WIRELESS) {
            final CharSequence wirelessChargingLabel =
                    mBatterySettingsFeatureProvider.getWirelessChargingLabel(mContext, info);
+30 −23
Original line number Diff line number Diff line
@@ -390,12 +390,37 @@ public class BatteryInfo {
            info.remainingLabel = null;
            int chargingLimitedResId = R.string.power_charging_limited;
            info.chargeLabel = context.getString(chargingLimitedResId, info.batteryPercentString);
        } else if ((chargeTimeMs > 0
            return;
        }
        final BatterySettingsFeatureProvider featureProvider =
                FeatureFactory.getFeatureFactory().getBatterySettingsFeatureProvider();
        if (featureProvider.isChargingOptimizationMode(context)) {
            final CharSequence chargeLabel =
                    featureProvider.getChargingOptimizationChargeLabel(
                            context,
                            info.batteryLevel,
                            info.batteryPercentString,
                            chargeTimeMs,
                            currentTimeMs);
            if (chargeLabel != null) {
                final CharSequence remainingLabel =
                        featureProvider.getChargingOptimizationRemainingLabel(
                                context,
                                info.batteryLevel,
                                info.pluggedStatus,
                                chargeTimeMs,
                                currentTimeMs);
                if (remainingLabel != null) {
                    info.chargeLabel = chargeLabel;
                    info.remainingLabel = remainingLabel;
                    return;
                }
            }
        }
        if ((chargeTimeMs > 0
                        && status != BatteryManager.BATTERY_STATUS_FULL
                        && dockDefenderMode == BatteryUtils.DockDefenderMode.DISABLED)
                || dockDefenderMode == BatteryUtils.DockDefenderMode.TEMPORARILY_BYPASSED) {
            final BatterySettingsFeatureProvider featureProvider =
                    FeatureFactory.getFeatureFactory().getBatterySettingsFeatureProvider();
            // Battery is charging to full
            info.remainingTimeUs = PowerUtil.convertMsToUs(chargeTimeMs);
            int resId = getChargingDurationResId(info.isFastCharging);
@@ -419,8 +444,7 @@ public class BatteryInfo {
                                    info.batteryPercentString,
                                    chargeTimeMs,
                                    info.isFastCharging,
                                    currentTimeMs,
                                    featureProvider);
                                    currentTimeMs);
        } else if (dockDefenderMode == BatteryUtils.DockDefenderMode.FUTURE_BYPASS) {
            // Dock defender will be triggered in the future, charging will be optimized.
            info.chargeLabel =
@@ -447,14 +471,6 @@ public class BatteryInfo {
            int pluggedStatus,
            long currentTimeMs,
            BatterySettingsFeatureProvider featureProvider) {
        if (featureProvider.isChargingOptimizationMode(context)) {
            final CharSequence chargingOptimizationRemainingLabel =
                    featureProvider.getChargingOptimizationRemainingLabel(
                            context, chargeRemainingTimeMs, currentTimeMs);
            if (chargingOptimizationRemainingLabel != null) {
                return chargingOptimizationRemainingLabel;
            }
        }
        if (pluggedStatus == BatteryManager.BATTERY_PLUGGED_WIRELESS) {
            final CharSequence wirelessChargingRemainingLabel =
                    featureProvider.getWirelessChargingRemainingLabel(
@@ -488,16 +504,7 @@ public class BatteryInfo {
            String batteryPercentString,
            long chargeTimeMs,
            boolean isFastCharging,
            long currentTimeMs,
            BatterySettingsFeatureProvider featureProvider) {
        if (featureProvider.isChargingOptimizationMode(context)) {
            final CharSequence chargingOptimizationChargeLabel =
                    featureProvider.getChargingOptimizationChargeLabel(
                            context, batteryPercentString, chargeTimeMs, currentTimeMs);
            if (chargingOptimizationChargeLabel != null) {
                return chargingOptimizationChargeLabel;
            }
        }
            long currentTimeMs) {
        if (com.android.settingslib.fuelgauge.BatteryUtils.isChargingStringV2Enabled()) {
            var timeString =
                    PowerUtil.getTargetTimeShortString(context, chargeTimeMs, currentTimeMs);
+7 −2
Original line number Diff line number Diff line
@@ -60,13 +60,18 @@ public interface BatterySettingsFeatureProvider {
    /** Return a charging remaining time label for charging optimization mode. */
    @Nullable
    CharSequence getChargingOptimizationRemainingLabel(
            @NonNull Context context, long chargeRemainingTimeMs, long currentTimeMs);
            @NonNull Context context,
            int batteryLevel,
            int pluggedStatus,
            long chargeRemainingTimeMs,
            long currentTimeMs);

    /** Return a charge label for charging optimization mode. */
    @Nullable
    CharSequence getChargingOptimizationChargeLabel(
            @NonNull Context context,
            @NonNull String batteryPercentageString,
            int batteryLevel,
            String batteryPercentageString,
            long chargeRemainingTimeMs,
            long currentTimeMs);
}
+7 −2
Original line number Diff line number Diff line
@@ -76,7 +76,11 @@ public class BatterySettingsFeatureProviderImpl implements BatterySettingsFeatur
    @Nullable
    @Override
    public CharSequence getChargingOptimizationRemainingLabel(
            @NonNull Context context, long chargeRemainingTimeMs, long currentTimeMs) {
            @NonNull Context context,
            int batteryLevel,
            int pluggedStatus,
            long chargeRemainingTimeMs,
            long currentTimeMs) {
        return null;
    }

@@ -84,7 +88,8 @@ public class BatterySettingsFeatureProviderImpl implements BatterySettingsFeatur
    @Override
    public CharSequence getChargingOptimizationChargeLabel(
            @NonNull Context context,
            @NonNull String batteryPercentageString,
            int batteryLevel,
            String batteryPercentageString,
            long chargeRemainingTimeMs,
            long currentTimeMs) {
        return null;
+5 −0
Original line number Diff line number Diff line
@@ -159,6 +159,11 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle
                    com.android.settingslib.R.string.power_charging_on_hold_settings_home_page,
                    info.batteryPercentString);
        }
        final BatterySettingsFeatureProvider featureProvider =
                FeatureFactory.getFeatureFactory().getBatterySettingsFeatureProvider();
        if (info.chargeLabel != null && featureProvider.isChargingOptimizationMode(mContext)) {
            return info.chargeLabel;
        }
        if (info.batteryStatus == BatteryManager.BATTERY_STATUS_NOT_CHARGING) {
            // Present status only if no remaining time or status anomalous
            return info.statusLabel;
Loading