Loading res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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] --> src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java +13 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java +7 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); } src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } } tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java +54 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -81,6 +83,7 @@ public class BatteryHeaderPreferenceControllerTest { private Context mContext; private ShadowPowerManager mShadowPowerManager; private Intent mBatteryIntent; private FakeFeatureFactory mFactory; @Before public void setUp() { Loading @@ -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; Loading Loading @@ -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 Loading
res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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] -->
src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java +13 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading
src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java +7 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); }
src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } }
tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java +54 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -81,6 +83,7 @@ public class BatteryHeaderPreferenceControllerTest { private Context mContext; private ShadowPowerManager mShadowPowerManager; private Intent mBatteryIntent; private FakeFeatureFactory mFactory; @Before public void setUp() { Loading @@ -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; Loading Loading @@ -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