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

Commit a71f46ec authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update the flow of charging optimization strings." into main

parents 065c6b71 8bcaab7c
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