diff --git a/src/com/android/settings/fuelgauge/BatteryHeaderTextPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryHeaderTextPreferenceController.java index b6091740ef6..a97b1dfa165 100644 --- a/src/com/android/settings/fuelgauge/BatteryHeaderTextPreferenceController.java +++ b/src/com/android/settings/fuelgauge/BatteryHeaderTextPreferenceController.java @@ -80,13 +80,14 @@ public class BatteryHeaderTextPreferenceController extends BasePreferenceControl } if (BatteryUtils.isBatteryDefenderOn(info) || FeatureFactory.getFeatureFactory() - .getPowerUsageFeatureProvider() - .isExtraDefend()) { + .getPowerUsageFeatureProvider() + .isExtraDefend()) { return mContext.getString( com.android.settingslib.R.string.battery_info_status_charging_on_hold); } if (info.remainingLabel != null - && mBatterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) { + && mBatterySettingsFeatureProvider.isChargingOptimizationMode( + mContext, info.isLongLife)) { return info.remainingLabel; } if (info.batteryStatus == BatteryManager.BATTERY_STATUS_NOT_CHARGING) { @@ -97,8 +98,8 @@ public class BatteryHeaderTextPreferenceController extends BasePreferenceControl mBatterySettingsFeatureProvider.getWirelessChargingLabel(mContext, info); if (mBatteryHeaderTextPreference != null && wirelessChargingLabel != null) { mBatteryHeaderTextPreference.setContentDescription( - mBatterySettingsFeatureProvider - .getWirelessChargingContentDescription(mContext, info)); + mBatterySettingsFeatureProvider.getWirelessChargingContentDescription( + mContext, info)); return wirelessChargingLabel; } } diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java index fa30253a296..c8ac5011c52 100644 --- a/src/com/android/settings/fuelgauge/BatteryInfo.java +++ b/src/com/android/settings/fuelgauge/BatteryInfo.java @@ -404,7 +404,7 @@ public class BatteryInfo { } final BatterySettingsFeatureProvider featureProvider = FeatureFactory.getFeatureFactory().getBatterySettingsFeatureProvider(); - if (featureProvider.isChargingOptimizationMode(context)) { + if (featureProvider.isChargingOptimizationMode(context, info.isLongLife)) { final CharSequence chargeLabel = featureProvider.getChargingOptimizationChargeLabel( context, @@ -567,10 +567,11 @@ public class BatteryInfo { private static boolean isPluggedIn(Context context, boolean isCharging, int chargingPolicy) { return isCharging - || (chargingPolicy == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE - && FeatureFactory.getFeatureFactory() - .getBatterySettingsFeatureProvider() - .isChargingOptimizationMode(context)); + || FeatureFactory.getFeatureFactory() + .getBatterySettingsFeatureProvider() + .isChargingOptimizationMode( + context, + chargingPolicy == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE); } public interface BatteryDataParser { diff --git a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java index d001bcce358..df87c7de04f 100644 --- a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java @@ -60,7 +60,7 @@ public interface BatterySettingsFeatureProvider { @NonNull Context context, long remainingTimeMs, long currentTimeMs); /** Return true if it's in the charging optimization mode. */ - boolean isChargingOptimizationMode(@NonNull Context context); + boolean isChargingOptimizationMode(@NonNull Context context, boolean isLongLife); /** Return a charging remaining time label for charging optimization mode. */ @Nullable diff --git a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java index 4b5d9526f16..19c10d78306 100644 --- a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java @@ -76,7 +76,7 @@ public class BatterySettingsFeatureProviderImpl implements BatterySettingsFeatur } @Override - public boolean isChargingOptimizationMode(@NonNull Context context) { + public boolean isChargingOptimizationMode(@NonNull Context context, boolean isLongLife) { return false; } diff --git a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java index fd0d820feb1..44fb0c4ae21 100644 --- a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java +++ b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java @@ -161,7 +161,8 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle } final BatterySettingsFeatureProvider featureProvider = FeatureFactory.getFeatureFactory().getBatterySettingsFeatureProvider(); - if (info.chargeLabel != null && featureProvider.isChargingOptimizationMode(mContext)) { + if (info.chargeLabel != null + && featureProvider.isChargingOptimizationMode(mContext, info.isLongLife)) { return info.chargeLabel; } if (info.batteryStatus == BatteryManager.BATTERY_STATUS_NOT_CHARGING) { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderTextPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderTextPreferenceControllerTest.java index 18fb90d758b..47850bc7fc6 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderTextPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderTextPreferenceControllerTest.java @@ -18,6 +18,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.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; @@ -98,9 +99,7 @@ public class BatteryHeaderTextPreferenceControllerTest { mBatteryIntent.putExtra(BatteryManager.EXTRA_PLUGGED, 1); doReturn(mBatteryIntent).when(mContext).registerReceiver(any(), any()); - doReturn(mBatteryHeaderTextPreference) - .when(mPreferenceScreen) - .findPreference(PREF_KEY); + doReturn(mBatteryHeaderTextPreference).when(mPreferenceScreen).findPreference(PREF_KEY); mBatteryInfo.batteryLevel = BATTERY_LEVEL; @@ -322,7 +321,8 @@ public class BatteryHeaderTextPreferenceControllerTest { /* isFastCharging= */ true, /* isChargingStringV2= */ true); var expectedChargingString = batteryInfo.remainingLabel; - when(mFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) + when(mFactory.batterySettingsFeatureProvider.isChargingOptimizationMode( + eq(mContext), anyBoolean())) .thenReturn(true); mController.updateBatteryStatus(/* label= */ null, batteryInfo); @@ -339,7 +339,8 @@ public class BatteryHeaderTextPreferenceControllerTest { /* isFastCharging= */ true, /* isChargingStringV2= */ true); var expectedChargingString = batteryInfo.statusLabel; - when(mFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) + when(mFactory.batterySettingsFeatureProvider.isChargingOptimizationMode( + eq(mContext), anyBoolean())) .thenReturn(true); mController.updateBatteryStatus(/* label= */ null, batteryInfo); @@ -356,7 +357,8 @@ public class BatteryHeaderTextPreferenceControllerTest { /* isFastCharging= */ true, /* isChargingStringV2= */ true); var expectedChargingString = batteryInfo.statusLabel + " • " + batteryInfo.remainingLabel; - when(mFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) + when(mFactory.batterySettingsFeatureProvider.isChargingOptimizationMode( + eq(mContext), anyBoolean())) .thenReturn(false); mController.updateBatteryStatus(/* label= */ null, batteryInfo); @@ -448,7 +450,9 @@ public class BatteryHeaderTextPreferenceControllerTest { mController.updateHeaderPreference(mBatteryInfo); - verify(mBatteryHeaderTextPreference).setText(mContext.getString( + verify(mBatteryHeaderTextPreference) + .setText( + mContext.getString( com.android.settingslib.R.string .battery_info_status_charging_on_hold)); } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java index 8d6cc08597f..209c1333e01 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java @@ -19,6 +19,7 @@ package com.android.settings.fuelgauge; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; @@ -729,7 +730,8 @@ public class BatteryInfoTest { ChargingType.WIRED, ChargingSpeed.REGULAR, /* batteryLevel= */ 65); var expectedRemainingLabel = "Expected remaining label"; var expectedChargeLabel = "65% - " + expectedRemainingLabel; - when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) + when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode( + eq(mContext), anyBoolean())) .thenReturn(true); when(mFeatureFactory.batterySettingsFeatureProvider.getChargingOptimizationRemainingLabel( eq(mContext), anyInt(), anyInt(), anyLong(), anyLong())) @@ -755,7 +757,8 @@ public class BatteryInfoTest { Intent batteryIntent = createIntentForGetBatteryInfoTest( ChargingType.WIRED, ChargingSpeed.REGULAR, /* batteryLevel= */ 65); - when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) + when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode( + eq(mContext), anyBoolean())) .thenReturn(false); var expectedStatusLabel = "Charging"; var expectedRemainingLabel = "2 hr, 10 min left until full"; @@ -777,7 +780,8 @@ public class BatteryInfoTest { Intent batteryIntent = createIntentForGetBatteryInfoTest( ChargingType.WIRED, ChargingSpeed.REGULAR, /* batteryLevel= */ 65); - when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) + when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode( + eq(mContext), anyBoolean())) .thenReturn(false); var expectedStatusLabel = "Charging"; var expectedRemainingLabel = "Fully charged by"; @@ -827,7 +831,7 @@ public class BatteryInfoTest { } @Test - public void getBatteryInfo_plugTypeNoneWithLonglifeAndChargeOptimization_chargingString() { + public void getBatteryInfo_plugTypeNoneIsChargeOptimization_chargingString() { prepareTestGetBatteryInfoEnvironment( /* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(), /* chargingStringV2Enabled= */ false); @@ -840,7 +844,8 @@ public class BatteryInfoTest { /* isLonglife= */ true); var expectedRemainingLabel = "Expected remaining label"; var expectedChargeLabel = "85% - " + expectedRemainingLabel; - when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) + when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode( + eq(mContext), anyBoolean())) .thenReturn(true); when(mFeatureFactory.batterySettingsFeatureProvider.getChargingOptimizationRemainingLabel( eq(mContext), anyInt(), anyInt(), anyLong(), anyLong())) @@ -859,34 +864,7 @@ public class BatteryInfoTest { } @Test - public void getBatteryInfo_plugTypeNoneNotChargeOptimizationLonglife_dischargingString() { - prepareTestGetBatteryInfoEnvironment( - /* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(), - /* chargingStringV2Enabled= */ false); - Intent batteryIntent = - createIntentForGetBatteryInfoTest( - ChargingType.NONE, - ChargingSpeed.REGULAR, - /* batteryLevel= */ 85, - BatteryManager.BATTERY_STATUS_DISCHARGING, - /* isLonglife= */ true); - var expectedRemainingLabel = - PowerUtil.getBatteryRemainingShortStringFormatted( - mContext, PowerUtil.convertUsToMs(1000L)); - when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) - .thenReturn(false); - var expectedStatusLabel = "Not charging"; - - assertGetBatteryInfo( - batteryIntent, - /* currentTimeMillis= */ UNUSED_TIME_MS, - expectedStatusLabel, - expectedRemainingLabel, - expectedRemainingLabel); - } - - @Test - public void getBatteryInfo_plugTypeNoneChargeOptimizationNotLonglife_dischargingString() { + public void getBatteryInfo_plugTypeNoneNotChargeOptimization_dischargingString() { prepareTestGetBatteryInfoEnvironment( /* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(), /* chargingStringV2Enabled= */ false); @@ -900,8 +878,9 @@ public class BatteryInfoTest { var expectedRemainingLabel = PowerUtil.getBatteryRemainingShortStringFormatted( mContext, PowerUtil.convertUsToMs(1000L)); - when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext)) - .thenReturn(true); + when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode( + eq(mContext), anyBoolean())) + .thenReturn(false); var expectedStatusLabel = "Not charging"; assertGetBatteryInfo( diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImplTest.java index 8ddf6cb076f..93bae3965dd 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImplTest.java @@ -89,7 +89,7 @@ public class BatterySettingsFeatureProviderImplTest { @Test public void isChargingOptimizationMode_default_returnFalse() { - assertThat(mImpl.isChargingOptimizationMode(mContext)).isFalse(); + assertThat(mImpl.isChargingOptimizationMode(mContext, true)).isFalse(); } @Test