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

Commit ce51f659 authored by Yiling Chuang's avatar Yiling Chuang Committed by Android (Google) Code Review
Browse files

Merge "Customize the remaining time label during wireless charging." into main

parents 319245cd 901a46c9
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -396,7 +396,11 @@ public class BatteryInfo {
                    chargeTimeMs <= 0
                            ? null
                            : getPowerRemainingChargingLabel(
                                    context, chargeTimeMs, info.isFastCharging, currentTimeMs);
                                    context,
                                    chargeTimeMs,
                                    info.isFastCharging,
                                    info.pluggedStatus,
                                    currentTimeMs);

            info.chargeLabel =
                    chargeTimeMs <= 0
@@ -428,7 +432,21 @@ public class BatteryInfo {
    }

    private static CharSequence getPowerRemainingChargingLabel(
            Context context, long remainingTimeMs, boolean isFastCharging, long currentTimeMs) {
            Context context,
            long remainingTimeMs,
            boolean isFastCharging,
            int pluggedStatus,
            long currentTimeMs) {
        if (pluggedStatus == BatteryManager.BATTERY_PLUGGED_WIRELESS) {
            BatterySettingsFeatureProvider provider =
                    FeatureFactory.getFeatureFactory().getBatterySettingsFeatureProvider();
            final CharSequence wirelessChargingRemainingLabel =
                    provider.getWirelessChargingRemainingLabel(
                            context, remainingTimeMs, currentTimeMs);
            if (wirelessChargingRemainingLabel != null) {
                return wirelessChargingRemainingLabel;
            }
        }
        if (com.android.settingslib.fuelgauge.BatteryUtils.isChargingStringV2Enabled()) {
            int chargeLabelResId =
                    isFastCharging
+5 −0
Original line number Diff line number Diff line
@@ -48,4 +48,9 @@ public interface BatterySettingsFeatureProvider {
    /** Return a label for the bottom summary during wireless charging. */
    @Nullable
    CharSequence getWirelessChargingLabel(@NonNull Context context, @NonNull BatteryInfo info);

    /** Return a remaining time label for wireless charging. */
    @Nullable
    CharSequence getWirelessChargingRemainingLabel(
            @NonNull Context context, long remainingTimeMs, long currentTimeMs);
}
+7 −0
Original line number Diff line number Diff line
@@ -60,4 +60,11 @@ public class BatterySettingsFeatureProviderImpl implements BatterySettingsFeatur
            @NonNull Context context, @NonNull BatteryInfo info) {
        return null;
    }

    @Nullable
    @Override
    public CharSequence getWirelessChargingRemainingLabel(
            @NonNull Context context, long remainingTimeMs, long currentTimeMs) {
        return null;
    }
}
+76 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertWithMessage;

import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
@@ -634,6 +635,81 @@ public class BatteryInfoTest {
                expectedChargeLabel);
    }

    @Test
    public void
            getBatteryInfo_customizedWirelessChargingLabel_updateRemainingLabelAndStatusLabel() {
        prepareTestGetBatteryInfoEnvironment(
                /* remainingTimeMs= */ Duration.ofHours(1).toMillis(),
                /* chargingStringV2Enabled= */ true);
        Intent batteryIntent =
                createIntentForGetBatteryInfoTest(
                        ChargingType.WIRELESS, ChargingSpeed.REGULAR, /* batteryLevel= */ 45);
        CharSequence expectedLabel = "Full by 8:00 AM";
        when(mFeatureFactory.batterySettingsFeatureProvider.getWirelessChargingRemainingLabel(
                        eq(mContext), anyLong(), anyLong()))
                .thenReturn(expectedLabel);
        var currentTimeMillis = Instant.parse("2021-02-09T13:00:00.00Z").toEpochMilli();
        var info =
                BatteryInfo.getBatteryInfo(
                        mContext,
                        batteryIntent,
                        mBatteryUsageStats,
                        MOCK_ESTIMATE,
                        /* elapsedRealtimeUs= */ UNUSED_TIME_MS,
                        /* shortString= */ false,
                        /* currentTimeMillis= */ currentTimeMillis);

        assertThat(info.remainingLabel).isEqualTo(expectedLabel);
    }

    @Test
    public void
            getBatteryInfo_noCustomizedWirelessChargingLabel_updateRemainingLabelAndStatusLabel() {
        prepareTestGetBatteryInfoEnvironment(
                /* remainingTimeMs= */ Duration.ofHours(1).toMillis(),
                /* chargingStringV2Enabled= */ true);
        Intent batteryIntent =
                createIntentForGetBatteryInfoTest(
                        ChargingType.WIRELESS, ChargingSpeed.REGULAR, /* batteryLevel= */ 45);
        when(mFeatureFactory.batterySettingsFeatureProvider.getWirelessChargingRemainingLabel(
                        eq(mContext), anyLong(), anyLong()))
                .thenReturn(null);
        var expectedStatusLabel = "Charging";
        var expectedRemainingLabel = "Fully charged by";
        var expectedChargeLabel = "45% - " + expectedRemainingLabel;
        var currentTimeMillis = Instant.parse("2024-04-01T15:00:00Z").toEpochMilli();

        assertGetBatteryInfo(
                batteryIntent,
                currentTimeMillis,
                expectedStatusLabel,
                expectedRemainingLabel,
                expectedChargeLabel);
    }

    @Test
    public void getBatteryInfo_noCustomWirelessChargingLabelWithV1_updateRemainingAndStatusLabel() {
        prepareTestGetBatteryInfoEnvironment(
                /* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(),
                /* chargingStringV2Enabled= */ false);
        Intent batteryIntent =
                createIntentForGetBatteryInfoTest(
                        ChargingType.WIRELESS, ChargingSpeed.REGULAR, /* batteryLevel= */ 10);
        when(mFeatureFactory.batterySettingsFeatureProvider.getWirelessChargingRemainingLabel(
                        eq(mContext), anyLong(), anyLong()))
                .thenReturn(null);
        var expectedStatusLabel = "Charging wirelessly";
        var expectedRemainingLabel = "2 hr, 10 min left until full";
        var expectedChargeLabel = "10% - " + expectedRemainingLabel;

        assertGetBatteryInfo(
                batteryIntent,
                /* currentTimeMillis= */ UNUSED_TIME_MS,
                expectedStatusLabel,
                expectedRemainingLabel,
                expectedChargeLabel);
    }

    private enum ChargingSpeed {
        FAST,
        REGULAR,
+7 −1
Original line number Diff line number Diff line
@@ -70,7 +70,13 @@ public class BatterySettingsFeatureProviderImplTest {
        assertThat(expectedResult).isTrue();
    }

    @Test void getWirelessChargingLabel_returnNull() {
    @Test
    public void getWirelessChargingLabel_returnNull() {
        assertThat(mImpl.getWirelessChargingLabel(mContext, new BatteryInfo())).isNull();
    }

    @Test
    public void getWirelessChargingRemainingLabel_returnNull() {
        assertThat(mImpl.getWirelessChargingRemainingLabel(mContext, 1000L, 1000L)).isNull();
    }
}