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

Commit 37a35d58 authored by Yiling Chuang's avatar Yiling Chuang
Browse files

Update wireless charging string

Add a capability to provide different strings during wireless charging.

Bug: 316239566
Test: robotests
Change-Id: Ic7c70ae33ae951dfe931995e5ab0d478222d57c9
parent be60d166
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -7198,6 +7198,8 @@
    <string name="help_url_dock_defender" translatable="false"></string>
    <!-- Help URL, Incompatible charging [DO NOT TRANSLATE] -->
    <string name="help_url_incompatible_charging" translatable="false"></string>
    <!-- Help URL, Wireless charging [DO NOT TRANSLATE] -->
    <string name="help_url_wireless_charging" translatable="false"></string>
    <!-- Help URL, Accounts [DO NOT TRANSLATE] -->
    <string name="help_url_accounts" translatable="false"></string>
    <!-- Help URL, Choose lockscreen [DO NOT TRANSLATE] -->
+13 −1
Original line number Diff line number Diff line
@@ -43,14 +43,18 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
    @VisibleForTesting BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
    @VisibleForTesting UsageProgressBarPreference mBatteryUsageProgressBarPref;

    private BatteryTip mBatteryTip;
    private final PowerManager mPowerManager;
    private final BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;

    private BatteryTip mBatteryTip;

    public BatteryHeaderPreferenceController(Context context, String key) {
        super(context, key);
        mPowerManager = context.getSystemService(PowerManager.class);
        mBatteryStatusFeatureProvider =
                FeatureFactory.getFeatureFactory().getBatteryStatusFeatureProvider();
        mBatterySettingsFeatureProvider =
                FeatureFactory.getFeatureFactory().getBatterySettingsFeatureProvider();
    }

    @Override
@@ -74,6 +78,14 @@ public class BatteryHeaderPreferenceController extends BasePreferenceController
    }

    private CharSequence generateLabel(BatteryInfo info) {
        if (info.pluggedStatus == BatteryManager.BATTERY_PLUGGED_WIRELESS) {
            final CharSequence wirelessChargingLabel =
                    mBatterySettingsFeatureProvider.getWirelessChargingLabel(mContext, info);
            if (wirelessChargingLabel != null) {
                return wirelessChargingLabel;
            }
        }

        if (Utils.containsIncompatibleChargers(mContext, TAG)) {
            return mContext.getString(
                    com.android.settingslib.R.string.battery_info_status_not_charging);
+7 −0
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@ package com.android.settings.fuelgauge;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;

@@ -41,4 +44,8 @@ public interface BatterySettingsFeatureProvider {
            List<BatteryTip> batteryTips,
            BatteryInfo batteryInfo,
            BatteryTipPolicy batteryTipPolicy);

    /** Return a label for the bottom summary during wireless charging. */
    @Nullable
    CharSequence getWirelessChargingLabel(@NonNull Context context, @NonNull BatteryInfo info);
}
+10 −0
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@ package com.android.settings.fuelgauge;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
import com.android.settings.fuelgauge.batterytip.detectors.LowBatteryDetector;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
@@ -50,4 +53,11 @@ public class BatterySettingsFeatureProviderImpl implements BatterySettingsFeatur
            BatteryTipPolicy batteryTipPolicy) {
        batteryTips.add(new LowBatteryDetector(context, batteryTipPolicy, batteryInfo).detect());
    }

    @Override
    @Nullable
    public CharSequence getWirelessChargingLabel(
            @NonNull Context context, @NonNull BatteryInfo info) {
        return null;
    }
}
+54 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.settings.fuelgauge;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -40,6 +41,7 @@ import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SmartBatteryTip;
import com.android.settings.testutils.BatteryTestUtils;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settings.widget.EntityHeaderController;
@@ -81,6 +83,7 @@ public class BatteryHeaderPreferenceControllerTest {
    private Context mContext;
    private ShadowPowerManager mShadowPowerManager;
    private Intent mBatteryIntent;
    private FakeFeatureFactory mFactory;

    @Before
    public void setUp() {
@@ -103,6 +106,7 @@ public class BatteryHeaderPreferenceControllerTest {
        mBatteryInfo.batteryLevel = BATTERY_LEVEL;

        mShadowPowerManager = Shadows.shadowOf(mContext.getSystemService(PowerManager.class));
        mFactory = FakeFeatureFactory.setupForTest();

        mController = spy(new BatteryHeaderPreferenceController(mContext, PREF_KEY));
        mController.mBatteryUsageProgressBarPref = mBatteryUsageProgressBarPref;
@@ -272,6 +276,56 @@ public class BatteryHeaderPreferenceControllerTest {
        verify(mBatteryUsageProgressBarPref).setBottomSummary(expectedChargingString);
    }

    @Test
    public void updateBatteryStatus_customizedWirelessChargingLabel_customizedLabel() {
        var label = "Customized Wireless Charging Label";
        var batteryInfo =
                arrangeUpdateBatteryStatusTestWithRemainingLabel(
                        /* remainingLabel= */ "Full by 1:30 PM",
                        /* statusLabel= */ "Fast Charging",
                        /* isFastCharging= */ true,
                        /* isChargingStringV2= */ true);
        batteryInfo.pluggedStatus = BatteryManager.BATTERY_PLUGGED_WIRELESS;
        when(mFactory.batterySettingsFeatureProvider.getWirelessChargingLabel(eq(mContext),
                any(BatteryInfo.class))).thenReturn(label);

        mController.updateBatteryStatus(/* label= */ null, batteryInfo);

        verify(mBatteryUsageProgressBarPref).setBottomSummary(label);
    }

    @Test
    public void updateBatteryStatus_noCustomizedWirelessChargingLabel_statusWithRemainingLabel() {
        var batteryInfo =
                arrangeUpdateBatteryStatusTestWithRemainingLabel(
                        /* remainingLabel= */ "Full by 1:30 PM",
                        /* statusLabel= */ "Fast Charging",
                        /* isFastCharging= */ true,
                        /* isChargingStringV2= */ true);
        batteryInfo.pluggedStatus = BatteryManager.BATTERY_PLUGGED_WIRELESS;
        var expectedChargingString = batteryInfo.statusLabel + " • " + batteryInfo.remainingLabel;

        mController.updateBatteryStatus(/* label= */ null, batteryInfo);

        verify(mBatteryUsageProgressBarPref).setBottomSummary(expectedChargingString);
    }

    @Test
    public void updateBatteryStatus_noCustomizedWirelessChargingLabel_v1StatusWithRemainingLabel() {
        var batteryInfo =
                arrangeUpdateBatteryStatusTestWithRemainingLabel(
                        /* remainingLabel= */ "1 hr, 40 min left until full",
                        /* statusLabel= */ "Charging wirelessly",
                        /* isFastCharging= */ false,
                        /* isChargingStringV2= */ false);
        batteryInfo.pluggedStatus = BatteryManager.BATTERY_PLUGGED_WIRELESS;
        var expectedChargingString = batteryInfo.statusLabel + " • " + batteryInfo.remainingLabel;

        mController.updateBatteryStatus(/* label= */ null, batteryInfo);

        verify(mBatteryUsageProgressBarPref).setBottomSummary(expectedChargingString);
    }

    private BatteryInfo arrangeUpdateBatteryStatusTestWithRemainingLabel(
            String remainingLabel,
            String statusLabel,
Loading