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

Commit 84050edc authored by YK Hung's avatar YK Hung Committed by Android (Google) Code Review
Browse files

Merge "Update wireless charging string" into main

parents 18f72bb4 37a35d58
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