diff --git a/protos/fuelgauge_log.proto b/protos/fuelgauge_log.proto
index 8512cb82506..150c2e2ce6a 100644
--- a/protos/fuelgauge_log.proto
+++ b/protos/fuelgauge_log.proto
@@ -20,6 +20,7 @@ message BatteryOptimizeHistoricalLogEntry {
RESET = 3;
RESTORE = 4;
BACKUP = 5;
+ FORCE_RESET = 6;
}
optional string package_name = 1;
diff --git a/res/values/config.xml b/res/values/config.xml
index 52d7183ebff..334d4e574c5 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -526,6 +526,10 @@
- content://com.android.settings.slices/intent/media_output_indicator
+
+
+
+
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index 777e4281764..79e01940ecd 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -343,7 +343,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
final String stateString;
final String footerString;
- if (!mBatteryOptimizeUtils.isValidPackageName()) {
+ if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
// Present optimized only string when the package name is invalid.
stateString = context.getString(R.string.manager_battery_usage_optimized_only);
footerString = context.getString(
diff --git a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
index 79df57ab08d..1bb3b4de001 100644
--- a/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
+++ b/src/com/android/settings/fuelgauge/BatteryBackupHelper.java
@@ -91,11 +91,12 @@ public final class BatteryBackupHelper implements BackupHelper {
@Override
public void restoreEntity(BackupDataInputStream data) {
- BatterySettingsMigrateChecker.verifyConfiguration(mContext);
+ BatterySettingsMigrateChecker.verifySaverConfiguration(mContext);
if (!isOwner() || data == null || data.size() == 0) {
Log.w(TAG, "ignore restoreEntity() for non-owner or empty data");
return;
}
+
if (KEY_OPTIMIZATION_LIST.equals(data.getKey())) {
final int dataSize = data.size();
final byte[] dataBytes = new byte[dataSize];
@@ -105,7 +106,10 @@ public final class BatteryBackupHelper implements BackupHelper {
Log.e(TAG, "failed to load BackupDataInputStream", e);
return;
}
- restoreOptimizationMode(dataBytes);
+ final int restoreCount = restoreOptimizationMode(dataBytes);
+ if (restoreCount > 0) {
+ BatterySettingsMigrateChecker.verifyOptimizationModes(mContext);
+ }
}
}
@@ -175,17 +179,17 @@ public final class BatteryBackupHelper implements BackupHelper {
}
@VisibleForTesting
- void restoreOptimizationMode(byte[] dataBytes) {
+ int restoreOptimizationMode(byte[] dataBytes) {
final long timestamp = System.currentTimeMillis();
final String dataContent = new String(dataBytes, StandardCharsets.UTF_8);
if (dataContent == null || dataContent.isEmpty()) {
Log.w(TAG, "no data found in the restoreOptimizationMode()");
- return;
+ return 0;
}
final String[] appConfigurations = dataContent.split(BatteryBackupHelper.DELIMITER);
if (appConfigurations == null || appConfigurations.length == 0) {
Log.w(TAG, "no data found from the split() processing");
- return;
+ return 0;
}
int restoreCount = 0;
for (int index = 0; index < appConfigurations.length; index++) {
@@ -217,6 +221,7 @@ public final class BatteryBackupHelper implements BackupHelper {
}
Log.d(TAG, String.format("restoreOptimizationMode() count=%d in %d/ms",
restoreCount, (System.currentTimeMillis() - timestamp)));
+ return restoreCount;
}
/** Dump the app optimization mode backup history data. */
@@ -225,6 +230,23 @@ public final class BatteryBackupHelper implements BackupHelper {
getSharedPreferences(context), writer);
}
+ static boolean isOwner() {
+ return UserHandle.myUserId() == UserHandle.USER_SYSTEM;
+ }
+
+ static BatteryOptimizeUtils newBatteryOptimizeUtils(
+ Context context, String packageName, BatteryOptimizeUtils testOptimizeUtils) {
+ final int uid = BatteryUtils.getInstance(context).getPackageUid(packageName);
+ if (uid == BatteryUtils.UID_NULL) {
+ return null;
+ }
+ final BatteryOptimizeUtils batteryOptimizeUtils =
+ testOptimizeUtils != null
+ ? testOptimizeUtils /*testing only*/
+ : new BatteryOptimizeUtils(context, uid, packageName);
+ return batteryOptimizeUtils;
+ }
+
@VisibleForTesting
static SharedPreferences getSharedPreferences(Context context) {
return context.getSharedPreferences(
@@ -233,14 +255,11 @@ public final class BatteryBackupHelper implements BackupHelper {
private void restoreOptimizationMode(
String packageName, @BatteryOptimizeUtils.OptimizationMode int mode) {
- final int uid = BatteryUtils.getInstance(mContext).getPackageUid(packageName);
- if (uid == BatteryUtils.UID_NULL) {
+ final BatteryOptimizeUtils batteryOptimizeUtils =
+ newBatteryOptimizeUtils(mContext, packageName, mBatteryOptimizeUtils);
+ if (batteryOptimizeUtils == null) {
return;
}
- final BatteryOptimizeUtils batteryOptimizeUtils =
- mBatteryOptimizeUtils != null
- ? mBatteryOptimizeUtils /*testing only*/
- : new BatteryOptimizeUtils(mContext, uid, packageName);
batteryOptimizeUtils.setAppUsageState(
mode, BatteryOptimizeHistoricalLogEntry.Action.RESTORE);
Log.d(TAG, String.format("restore:%s mode=%d", packageName, mode));
@@ -294,8 +313,4 @@ public final class BatteryBackupHelper implements BackupHelper {
Log.e(TAG, "writeBackupData() is failed for " + dataKey, e);
}
}
-
- private static boolean isOwner() {
- return UserHandle.myUserId() == UserHandle.USER_SYSTEM;
- }
}
diff --git a/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java b/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java
index 81a15ca7275..79ecd4076ae 100644
--- a/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java
+++ b/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java
@@ -34,24 +34,20 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
- * Use this broadcastReceiver to listen to the battery change, and it will invoke
- * {@link OnBatteryChangedListener} if any of the following has been changed:
- *
- * 1. Battery level(e.g. 100%->99%)
- * 2. Battery status(e.g. plugged->unplugged)
- * 3. Battery saver(e.g. off->on)
- * 4. Battery health(e.g. good->overheat)
+ * Use this broadcastReceiver to listen to the battery change and it will invoke
+ * {@link OnBatteryChangedListener}
*/
public class BatteryBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "BatteryBroadcastRcvr";
/**
- * Callback when the following has been changed:
+ * Callback if any of the monitored fields has been changed:
*
* Battery level(e.g. 100%->99%)
* Battery status(e.g. plugged->unplugged)
* Battery saver(e.g. off->on)
* Battery health(e.g. good->overheat)
+ * Battery charging status(e.g. default->long life)
*/
public interface OnBatteryChangedListener {
void onBatteryChanged(@BatteryUpdateType int type);
@@ -63,6 +59,7 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver {
BatteryUpdateType.BATTERY_SAVER,
BatteryUpdateType.BATTERY_STATUS,
BatteryUpdateType.BATTERY_HEALTH,
+ BatteryUpdateType.CHARGING_STATUS,
BatteryUpdateType.BATTERY_NOT_PRESENT})
public @interface BatteryUpdateType {
int MANUAL = 0;
@@ -70,7 +67,8 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver {
int BATTERY_SAVER = 2;
int BATTERY_STATUS = 3;
int BATTERY_HEALTH = 4;
- int BATTERY_NOT_PRESENT = 5;
+ int CHARGING_STATUS = 5;
+ int BATTERY_NOT_PRESENT = 6;
}
@VisibleForTesting
@@ -78,6 +76,8 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver {
@VisibleForTesting
String mBatteryStatus;
@VisibleForTesting
+ int mChargingStatus;
+ @VisibleForTesting
int mBatteryHealth;
private OnBatteryChangedListener mBatteryListener;
private Context mContext;
@@ -121,21 +121,27 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver {
final String batteryLevel = Utils.getBatteryPercentage(intent);
final String batteryStatus =
Utils.getBatteryStatus(mContext, intent, /* compactStatus= */ false);
+ final int chargingStatus = intent.getIntExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS, BatteryManager.CHARGING_POLICY_DEFAULT);
final int batteryHealth = intent.getIntExtra(
BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN);
Log.d(
TAG,
- "Battery changed: level="
+ "Battery changed: level: "
+ batteryLevel
- + ", status="
+ + "| status: "
+ batteryStatus
- + ", health="
+ + "| chargingStatus: "
+ + chargingStatus
+ + "| health: "
+ batteryHealth);
if (!Utils.isBatteryPresent(intent)) {
Log.w(TAG, "Problem reading the battery meter.");
mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_NOT_PRESENT);
} else if (forceUpdate) {
mBatteryListener.onBatteryChanged(BatteryUpdateType.MANUAL);
+ } else if (chargingStatus != mChargingStatus) {
+ mBatteryListener.onBatteryChanged(BatteryUpdateType.CHARGING_STATUS);
} else if (batteryHealth != mBatteryHealth) {
mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_HEALTH);
} else if(!batteryLevel.equals(mBatteryLevel)) {
@@ -145,6 +151,7 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver {
}
mBatteryLevel = batteryLevel;
mBatteryStatus = batteryStatus;
+ mChargingStatus = chargingStatus;
mBatteryHealth = batteryHealth;
} else if (PowerManager.ACTION_POWER_SAVE_MODE_CHANGED.equals(action)) {
mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_SAVER);
diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java
index 300db23007c..27d7154d72a 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfo.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfo.java
@@ -51,7 +51,7 @@ public class BatteryInfo {
public int batteryStatus;
public int pluggedStatus;
public boolean discharging = true;
- public boolean isOverheated;
+ public boolean isBatteryDefender;
public long remainingTimeUs = 0;
public long averageTimeToDischarge = EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN;
public String batteryPercentString;
@@ -257,9 +257,9 @@ public class BatteryInfo {
info.pluggedStatus = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
info.mCharging = info.pluggedStatus != 0;
info.averageTimeToDischarge = estimate.getAverageDischargeTime();
- info.isOverheated = batteryBroadcast.getIntExtra(
- BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN)
- == BatteryManager.BATTERY_HEALTH_OVERHEAT;
+ info.isBatteryDefender = batteryBroadcast.getIntExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS, BatteryManager.CHARGING_POLICY_DEFAULT)
+ == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE;
info.statusLabel = Utils.getBatteryStatus(context, batteryBroadcast, isCompactStatus);
info.batteryStatus = batteryBroadcast.getIntExtra(
@@ -283,7 +283,7 @@ public class BatteryInfo {
info.discharging = false;
info.suggestionLabel = null;
int dockDefenderMode = BatteryUtils.getCurrentDockDefenderMode(context, info);
- if ((info.isOverheated && status != BatteryManager.BATTERY_STATUS_FULL
+ if ((info.isBatteryDefender && status != BatteryManager.BATTERY_STATUS_FULL
&& dockDefenderMode == BatteryUtils.DockDefenderMode.DISABLED)
|| dockDefenderMode == BatteryUtils.DockDefenderMode.ACTIVE) {
// Battery defender active, battery charging paused
diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
index b9ac64dd781..589e1fd4055 100644
--- a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java
@@ -31,11 +31,14 @@ import android.util.Log;
import androidx.annotation.VisibleForTesting;
+import com.android.settings.R;
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.Arrays;
+import java.util.List;
/** A utility class for application usage operation. */
public class BatteryOptimizeUtils {
@@ -125,11 +128,10 @@ public class BatteryOptimizeUtils {
mContext, mode, mUid, mPackageName, mBatteryUtils, mPowerAllowListBackend, action);
}
- /**
- * Return {@code true} if package name is valid (can get an uid).
- */
- public boolean isValidPackageName() {
- return mBatteryUtils.getPackageUid(mPackageName) != BatteryUtils.UID_NULL;
+ /** Return {@code true} if it is disabled for default optimized mode only. */
+ public boolean isDisabledForOptimizeModeOnly() {
+ return getAllowList(mContext).contains(mPackageName)
+ || mBatteryUtils.getPackageUid(mPackageName) == BatteryUtils.UID_NULL;
}
/**
@@ -214,6 +216,11 @@ public class BatteryOptimizeUtils {
|| powerAllowlistBackend.isDefaultActiveApp(packageName, uid);
}
+ static List getAllowList(Context context) {
+ return Arrays.asList(context.getResources().getStringArray(
+ R.array.config_disable_optimization_mode_apps));
+ }
+
private static void setAppUsageStateInternal(
Context context, @OptimizationMode int mode, int uid, String packageName,
BatteryUtils batteryUtils, PowerAllowlistBackend powerAllowlistBackend,
diff --git a/src/com/android/settings/fuelgauge/BatterySettingsMigrateChecker.java b/src/com/android/settings/fuelgauge/BatterySettingsMigrateChecker.java
index c54e6d8c503..4b9e6efaff0 100644
--- a/src/com/android/settings/fuelgauge/BatterySettingsMigrateChecker.java
+++ b/src/com/android/settings/fuelgauge/BatterySettingsMigrateChecker.java
@@ -23,16 +23,27 @@ import android.content.Intent;
import android.provider.Settings;
import android.util.Log;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settings.R;
+import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry;
import com.android.settings.fuelgauge.batterysaver.BatterySaverScheduleRadioButtonsController;
import com.android.settingslib.fuelgauge.BatterySaverUtils;
+import java.util.List;
+
/** Execute battery settings migration tasks in the device booting stage. */
public final class BatterySettingsMigrateChecker extends BroadcastReceiver {
private static final String TAG = "BatterySettingsMigrateChecker";
+ @VisibleForTesting
+ static BatteryOptimizeUtils sBatteryOptimizeUtils = null;
+
@Override
public void onReceive(Context context, Intent intent) {
- if (intent != null && Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
+ if (intent != null
+ && Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())
+ && BatteryBackupHelper.isOwner()) {
verifyConfiguration(context);
}
}
@@ -40,9 +51,35 @@ public final class BatterySettingsMigrateChecker extends BroadcastReceiver {
static void verifyConfiguration(Context context) {
context = context.getApplicationContext();
verifySaverConfiguration(context);
+ verifyOptimizationModes(context);
}
- private static void verifySaverConfiguration(Context context) {
+ /** Avoid users set important apps into the unexpected battery optimize modes */
+ static void verifyOptimizationModes(Context context) {
+ Log.d(TAG, "invoke verifyOptimizationModes()");
+ verifyOptimizationModes(context, BatteryOptimizeUtils.getAllowList(context));
+ }
+
+ @VisibleForTesting
+ static void verifyOptimizationModes(Context context, List allowList) {
+ allowList.forEach(packageName -> {
+ final BatteryOptimizeUtils batteryOptimizeUtils =
+ BatteryBackupHelper.newBatteryOptimizeUtils(context, packageName,
+ /* testOptimizeUtils */ sBatteryOptimizeUtils);
+ if (batteryOptimizeUtils == null) {
+ return;
+ }
+ if (batteryOptimizeUtils.getAppOptimizationMode() !=
+ BatteryOptimizeUtils.MODE_OPTIMIZED) {
+ Log.w(TAG, "Reset optimization mode for: " + packageName);
+ batteryOptimizeUtils.setAppUsageState(BatteryOptimizeUtils.MODE_OPTIMIZED,
+ BatteryOptimizeHistoricalLogEntry.Action.FORCE_RESET);
+ }
+ });
+ }
+
+ static void verifySaverConfiguration(Context context) {
+ Log.d(TAG, "invoke verifySaverConfiguration()");
final ContentResolver resolver = context.getContentResolver();
final int threshold = Settings.Global.getInt(resolver,
Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0);
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index 72d84ef6663..12760b18b0a 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -18,7 +18,6 @@ package com.android.settings.fuelgauge;
import android.app.AppOpsManager;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.content.pm.InstallSourceInfo;
import android.content.pm.PackageInfo;
@@ -322,10 +321,10 @@ public class BatteryUtils {
}
/**
- * Return {@code true} if battery is overheated and charging.
+ * Return {@code true} if battery defender is on and charging.
*/
public static boolean isBatteryDefenderOn(BatteryInfo batteryInfo) {
- return batteryInfo.isOverheated && !batteryInfo.discharging;
+ return batteryInfo.isBatteryDefender && !batteryInfo.discharging;
}
/**
@@ -627,11 +626,11 @@ public class BatteryUtils {
if (Settings.Global.getInt(context.getContentResolver(),
SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 0) == 1) {
return DockDefenderMode.TEMPORARILY_BYPASSED;
- } else if (batteryInfo.isOverheated && FeatureFactory.getFactory(context)
+ } else if (batteryInfo.isBatteryDefender && FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context)
.isExtraDefend()) {
return DockDefenderMode.ACTIVE;
- } else if (!batteryInfo.isOverheated) {
+ } else if (!batteryInfo.isBatteryDefender) {
return DockDefenderMode.FUTURE_BYPASS;
}
}
diff --git a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java b/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
index 88241b6ff39..ca75b0e8d22 100644
--- a/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/OptimizedPreferenceController.java
@@ -46,8 +46,8 @@ public class OptimizedPreferenceController extends AbstractPreferenceController
@Override
public void updateState(Preference preference) {
- if (!mBatteryOptimizeUtils.isValidPackageName()) {
- Log.d(TAG, "invalid package name, optimized states only");
+ if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
+ Log.d(TAG, "disable preference for " + mBatteryOptimizeUtils.getPackageName());
preference.setEnabled(true);
((SelectorWithWidgetPreference) preference).setChecked(true);
return;
diff --git a/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java b/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java
index fe896a6aed0..7db77f15e40 100644
--- a/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/RestrictedPreferenceController.java
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-
package com.android.settings.fuelgauge;
import android.content.Context;
@@ -43,8 +42,8 @@ public class RestrictedPreferenceController extends AbstractPreferenceController
@Override
public void updateState(Preference preference) {
- if (!mBatteryOptimizeUtils.isValidPackageName()) {
- Log.d(TAG, "invalid package name, disable pref");
+ if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
+ Log.d(TAG, "disable preference for " + mBatteryOptimizeUtils.getPackageName());
preference.setEnabled(false);
return;
} else {
diff --git a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java b/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
index be4091c782f..4578723ce5e 100644
--- a/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/UnrestrictedPreferenceController.java
@@ -42,8 +42,8 @@ public class UnrestrictedPreferenceController extends AbstractPreferenceControll
@Override
public void updateState(Preference preference) {
- if (!mBatteryOptimizeUtils.isValidPackageName()) {
- Log.d(TAG, "invalid package name, disable pref");
+ if (mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()) {
+ Log.d(TAG, "disable preference for " + mBatteryOptimizeUtils.getPackageName());
preference.setEnabled(false);
return;
} else {
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java
index 2dc057ea7a3..8b7d4c18856 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java
@@ -37,13 +37,12 @@ public class BatteryDefenderDetector implements BatteryTipDetector {
@Override
public BatteryTip detect() {
- final boolean isBasicBatteryDefend = mBatteryInfo.isOverheated
- && !FeatureFactory.getFactory(mContext)
- .getPowerUsageFeatureProvider(mContext)
- .isExtraDefend();
- final int state = isBasicBatteryDefend
- ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
- final boolean isPluggedIn = mBatteryInfo.pluggedStatus != 0;
- return new BatteryDefenderTip(state, isPluggedIn);
+ final boolean isBasicBatteryDefend = mBatteryInfo.isBatteryDefender
+ && !FeatureFactory.getFactory(mContext).getPowerUsageFeatureProvider(mContext)
+ .isExtraDefend();
+ final int state = isBasicBatteryDefend
+ ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
+ final boolean isPluggedIn = mBatteryInfo.pluggedStatus != 0;
+ return new BatteryDefenderTip(state, isPluggedIn);
}
}
diff --git a/src/com/android/settings/password/BiometricFragment.java b/src/com/android/settings/password/BiometricFragment.java
index d364c71b331..4ad04a1a903 100644
--- a/src/com/android/settings/password/BiometricFragment.java
+++ b/src/com/android/settings/password/BiometricFragment.java
@@ -141,6 +141,7 @@ public class BiometricFragment extends InstrumentedFragment {
.setDisallowBiometricsIfPolicyExists(
promptInfo.isDisallowBiometricsIfPolicyExists())
.setReceiveSystemEvents(true)
+ .setAllowBackgroundAuthentication(true)
.build();
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
index 0278553b2a5..5e9fb738672 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
@@ -710,7 +710,7 @@ public class AdvancedPowerUsageDetailTest {
@Test
public void initPreferenceForTriState_isValidPackageName_hasCorrectString() {
- when(mBatteryOptimizeUtils.isValidPackageName()).thenReturn(false);
+ when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
mFragment.initPreferenceForTriState(mContext);
@@ -720,7 +720,7 @@ public class AdvancedPowerUsageDetailTest {
@Test
public void initPreferenceForTriState_isSystemOrDefaultApp_hasCorrectString() {
- when(mBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
mFragment.initPreferenceForTriState(mContext);
@@ -731,7 +731,7 @@ public class AdvancedPowerUsageDetailTest {
@Test
public void initPreferenceForTriState_hasCorrectString() {
- when(mBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(false);
mFragment.initPreferenceForTriState(mContext);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java
index a829c40e9a6..62f812d299a 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java
@@ -69,6 +69,7 @@ public class BatteryBroadcastReceiverTest {
mBatteryBroadcastReceiver.mBatteryLevel = BATTERY_INIT_LEVEL;
mBatteryBroadcastReceiver.mBatteryStatus = BATTERY_INIT_STATUS;
mBatteryBroadcastReceiver.mBatteryHealth = BatteryManager.BATTERY_HEALTH_UNKNOWN;
+ mBatteryBroadcastReceiver.mChargingStatus = BatteryManager.CHARGING_POLICY_DEFAULT;
mBatteryBroadcastReceiver.setBatteryChangedListener(mBatteryListener);
mChargingIntent = new Intent(Intent.ACTION_BATTERY_CHANGED);
@@ -91,8 +92,8 @@ public class BatteryBroadcastReceiverTest {
@Test
public void onReceive_batteryHealthChanged_dataUpdated() {
- mChargingIntent
- .putExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_OVERHEAT);
+ mChargingIntent.putExtra(
+ BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_OVERHEAT);
mBatteryBroadcastReceiver.onReceive(mContext, mChargingIntent);
assertThat(mBatteryBroadcastReceiver.mBatteryHealth)
@@ -100,6 +101,17 @@ public class BatteryBroadcastReceiverTest {
verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_HEALTH);
}
+ @Test
+ public void onReceive_chargingStatusChanged_dataUpdated() {
+ mChargingIntent.putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
+ BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE);
+ mBatteryBroadcastReceiver.onReceive(mContext, mChargingIntent);
+
+ assertThat(mBatteryBroadcastReceiver.mChargingStatus)
+ .isEqualTo(BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE);
+ verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.CHARGING_STATUS);
+ }
+
@Test
public void onReceive_batteryNotPresent_shouldShowHelpMessage() {
mChargingIntent.putExtra(BatteryManager.EXTRA_PRESENT, false);
@@ -131,6 +143,8 @@ public class BatteryBroadcastReceiverTest {
assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(batteryStatus);
assertThat(mBatteryBroadcastReceiver.mBatteryHealth)
.isEqualTo(BatteryManager.BATTERY_HEALTH_UNKNOWN);
+ assertThat(mBatteryBroadcastReceiver.mChargingStatus)
+ .isEqualTo(BatteryManager.CHARGING_POLICY_DEFAULT);
verify(mBatteryListener, never()).onBatteryChanged(anyInt());
}
@@ -163,6 +177,8 @@ public class BatteryBroadcastReceiverTest {
Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false));
assertThat(mBatteryBroadcastReceiver.mBatteryHealth)
.isEqualTo(BatteryManager.BATTERY_HEALTH_UNKNOWN);
+ assertThat(mBatteryBroadcastReceiver.mChargingStatus)
+ .isEqualTo(BatteryManager.CHARGING_POLICY_DEFAULT);
// 2 times because register will force update the battery
verify(mBatteryListener, times(2)).onBatteryChanged(BatteryUpdateType.MANUAL);
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java
index f94e5bf7b66..2779e0ac0c7 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java
@@ -290,8 +290,8 @@ public class BatteryHeaderPreferenceControllerTest {
}
@Test
- public void updatePreference_isOverheat_showEmptyText() {
- mBatteryInfo.isOverheated = true;
+ public void updatePreference_isBatteryDefender_showEmptyText() {
+ mBatteryInfo.isBatteryDefender = true;
mController.updateHeaderPreference(mBatteryInfo);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
index ded108cfc89..b0d6da6ca2b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
@@ -214,18 +214,18 @@ public class BatteryInfoTest {
}
@Test
- public void testGetBatteryInfo_chargingWithOverheated_updateChargeLabel() {
+ public void testGetBatteryInfo_chargingWithDefender_updateChargeLabel() {
doReturn(TEST_CHARGE_TIME_REMAINING)
.when(mBatteryUsageStats)
.getChargeTimeRemainingMs();
- mChargingBatteryBroadcast
- .putExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_OVERHEAT);
+ mChargingBatteryBroadcast.putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
+ BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE);
BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
false /* shortString */);
- assertThat(info.isOverheated).isTrue();
+ assertThat(info.isBatteryDefender).isTrue();
assertThat(info.chargeLabel.toString()).contains(STATUS_CHARGING_PAUSED);
}
@@ -238,7 +238,8 @@ public class BatteryInfoTest {
50 /* level */,
100 /* scale */,
BatteryManager.BATTERY_STATUS_CHARGING)
- .putExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_OVERHEAT);
+ .putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
+ BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE);
BatteryInfo info = BatteryInfo.getBatteryInfo(mContext, intent,
mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
@@ -250,8 +251,8 @@ public class BatteryInfoTest {
@Test
public void testGetBatteryInfo_dockDefenderTemporarilyBypassed_updateChargeLabel() {
doReturn(REMAINING_TIME).when(mBatteryUsageStats).getChargeTimeRemainingMs();
- mChargingBatteryBroadcast
- .putExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_GOOD);
+ mChargingBatteryBroadcast.putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
+ BatteryManager.CHARGING_POLICY_DEFAULT);
Settings.Global.putInt(mContext.getContentResolver(),
BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 1);
@@ -269,8 +270,8 @@ public class BatteryInfoTest {
@Test
public void testGetBatteryInfo_dockDefenderFutureBypass_updateChargeLabel() {
doReturn(false).when(mFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
- mChargingBatteryBroadcast
- .putExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_GOOD);
+ mChargingBatteryBroadcast.putExtra(BatteryManager.EXTRA_CHARGING_STATUS,
+ BatteryManager.CHARGING_POLICY_DEFAULT);
BatteryInfo info = BatteryInfo.getBatteryInfo(mContext,
BatteryTestUtils.getCustomBatteryIntent(BatteryManager.BATTERY_PLUGGED_DOCK,
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
index 83a75f61e96..f9d3108f904 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryOptimizeUtilsTest.java
@@ -136,16 +136,16 @@ public class BatteryOptimizeUtilsTest {
}
@Test
- public void testIsValidPackageName_InvalidPackageName_returnFalse() {
+ public void isDisabledForOptimizeModeOnly_invalidPackageName_returnTrue() {
final BatteryOptimizeUtils testBatteryOptimizeUtils =
new BatteryOptimizeUtils(mContext, UID, null);
- assertThat(testBatteryOptimizeUtils.isValidPackageName()).isFalse();
+ assertThat(testBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).isTrue();
}
@Test
- public void testIsValidPackageName_validPackageName_returnTrue() {
- assertThat(mBatteryOptimizeUtils.isValidPackageName()).isTrue();
+ public void isDisabledForOptimizeModeOnly_validPackageName_returnFalse() {
+ assertThat(mBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).isFalse();
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsMigrateCheckerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsMigrateCheckerTest.java
index dfee3e797b9..c34dcecce73 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsMigrateCheckerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsMigrateCheckerTest.java
@@ -18,35 +18,76 @@ package com.android.settings.fuelgauge;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
+
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+import android.os.UserManager;
import com.android.settings.TestUtils;
+import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry;
import com.android.settings.fuelgauge.batterysaver.BatterySaverScheduleRadioButtonsController;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.InOrder;
+import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.ArrayList;
+import java.util.Arrays;
@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {BatterySettingsMigrateCheckerTest.ShadowUserHandle.class})
public final class BatterySettingsMigrateCheckerTest {
private static final Intent BOOT_COMPLETED_INTENT =
new Intent(Intent.ACTION_BOOT_COMPLETED);
+ private static final int UID = 2003;
+ private static final String PACKAGE_NAME = "com.android.test.app";
private Context mContext;
private BatterySettingsMigrateChecker mBatterySettingsMigrateChecker;
+ @Mock
+ private PackageManager mPackageManager;
+ @Mock
+ private BatteryOptimizeUtils mBatteryOptimizeUtils;
+
@Before
- public void setUp() {
+ public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
+ mContext = spy(RuntimeEnvironment.application);
+ doReturn(mContext).when(mContext).getApplicationContext();
+ doReturn(mPackageManager).when(mContext).getPackageManager();
+ doReturn(UID).when(mPackageManager)
+ .getPackageUid(PACKAGE_NAME, PackageManager.GET_META_DATA);
+ BatterySettingsMigrateChecker.sBatteryOptimizeUtils = mBatteryOptimizeUtils;
mBatterySettingsMigrateChecker = new BatterySettingsMigrateChecker();
}
+ @After
+ public void resetShadows() {
+ ShadowUserHandle.reset();
+ }
+
@Test
public void onReceive_invalidScheduledLevel_resetScheduledValue() {
final int invalidScheduledLevel = 5;
@@ -98,6 +139,54 @@ public final class BatterySettingsMigrateCheckerTest {
assertThat(getScheduledLevel()).isEqualTo(invalidScheduledLevel);
}
+ @Test
+ public void onReceive_nonOwner_noAction() {
+ ShadowUserHandle.setUid(1);
+ final int invalidScheduledLevel = 5;
+ setScheduledLevel(invalidScheduledLevel);
+
+ mBatterySettingsMigrateChecker.onReceive(mContext, BOOT_COMPLETED_INTENT);
+
+ assertThat(getScheduledLevel()).isEqualTo(invalidScheduledLevel);
+ }
+
+ @Test
+ public void verifyOptimizationModes_inAllowList_resetOptimizationMode() throws Exception {
+ doReturn(BatteryOptimizeUtils.MODE_RESTRICTED).when(mBatteryOptimizeUtils)
+ .getAppOptimizationMode();
+
+ mBatterySettingsMigrateChecker.verifyOptimizationModes(
+ mContext, Arrays.asList(PACKAGE_NAME));
+
+ final InOrder inOrder = inOrder(mBatteryOptimizeUtils);
+ inOrder.verify(mBatteryOptimizeUtils).getAppOptimizationMode();
+ inOrder.verify(mBatteryOptimizeUtils).setAppUsageState(
+ BatteryOptimizeUtils.MODE_OPTIMIZED,
+ BatteryOptimizeHistoricalLogEntry.Action.FORCE_RESET);
+ }
+
+ @Test
+ public void verifyOptimizationModes_optimizedMode_noAction() throws Exception {
+ doReturn(BatteryOptimizeUtils.MODE_OPTIMIZED).when(mBatteryOptimizeUtils)
+ .getAppOptimizationMode();
+
+ mBatterySettingsMigrateChecker.verifyOptimizationModes(
+ mContext, Arrays.asList(PACKAGE_NAME));
+
+ verify(mBatteryOptimizeUtils, never()).setAppUsageState(anyInt(), any());
+ }
+
+ @Test
+ public void verifyOptimizationModes_notInAllowList_noAction() throws Exception {
+ doReturn(BatteryOptimizeUtils.MODE_RESTRICTED).when(mBatteryOptimizeUtils)
+ .getAppOptimizationMode();
+
+ mBatterySettingsMigrateChecker.verifyOptimizationModes(
+ mContext, new ArrayList());
+
+ verifyNoInteractions(mBatteryOptimizeUtils);
+ }
+
private void setScheduledLevel(int scheduledLevel) {
TestUtils.setScheduledLevel(mContext, scheduledLevel);
}
@@ -105,4 +194,24 @@ public final class BatterySettingsMigrateCheckerTest {
private int getScheduledLevel() {
return TestUtils.getScheduledLevel(mContext);
}
+
+ @Implements(UserHandle.class)
+ public static class ShadowUserHandle {
+ // Sets the default as thte OWNER role.
+ private static int sUid = 0;
+
+ public static void setUid(int uid) {
+ sUid = uid;
+ }
+
+ @Implementation
+ public static int myUserId() {
+ return sUid;
+ }
+
+ @Resetter
+ public static void reset() {
+ sUid = 0;
+ }
+ }
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
index b5f81499ea5..2fe0cec63d8 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
@@ -487,32 +487,32 @@ public class BatteryUtilsTest {
}
@Test
- public void testIsBatteryDefenderOn_isOverheatedAndIsCharging_returnTrue() {
- mBatteryInfo.isOverheated = true;
+ public void testIsBatteryDefenderOn_isDefenderAndIsCharging_returnTrue() {
+ mBatteryInfo.isBatteryDefender = true;
mBatteryInfo.discharging = false;
assertThat(mBatteryUtils.isBatteryDefenderOn(mBatteryInfo)).isTrue();
}
@Test
- public void testIsBatteryDefenderOn_isOverheatedAndDischarging_returnFalse() {
- mBatteryInfo.isOverheated = true;
+ public void testIsBatteryDefenderOn_isDefenderAndDischarging_returnFalse() {
+ mBatteryInfo.isBatteryDefender = true;
mBatteryInfo.discharging = true;
assertThat(mBatteryUtils.isBatteryDefenderOn(mBatteryInfo)).isFalse();
}
@Test
- public void testIsBatteryDefenderOn_notOverheatedAndDischarging_returnFalse() {
- mBatteryInfo.isOverheated = false;
+ public void testIsBatteryDefenderOn_notDefenderAndDischarging_returnFalse() {
+ mBatteryInfo.isBatteryDefender = false;
mBatteryInfo.discharging = true;
assertThat(mBatteryUtils.isBatteryDefenderOn(mBatteryInfo)).isFalse();
}
@Test
- public void testIsBatteryDefenderOn_notOverheatedAndIsCharging_returnFalse() {
- mBatteryInfo.isOverheated = false;
+ public void testIsBatteryDefenderOn_notDefenderAndIsCharging_returnFalse() {
+ mBatteryInfo.isBatteryDefender = false;
mBatteryInfo.discharging = false;
assertThat(mBatteryUtils.isBatteryDefenderOn(mBatteryInfo)).isFalse();
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
index 1fec92a8134..71bb998e4b8 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/OptimizedPreferenceControllerTest.java
@@ -52,7 +52,7 @@ public class OptimizedPreferenceControllerTest {
@Test
public void testUpdateState_invalidPackage_prefEnabled() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(false);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
mController.updateState(mPreference);
@@ -62,7 +62,7 @@ public class OptimizedPreferenceControllerTest {
@Test
public void testUpdateState_isSystemOrDefaultAppAndOptimizeStates_prefChecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
BatteryOptimizeUtils.MODE_OPTIMIZED);
@@ -74,7 +74,7 @@ public class OptimizedPreferenceControllerTest {
@Test
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
mController.updateState(mPreference);
@@ -85,7 +85,7 @@ public class OptimizedPreferenceControllerTest {
@Test
public void testUpdateState_isOptimizedStates_prefChecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
BatteryOptimizeUtils.MODE_OPTIMIZED);
@@ -96,7 +96,7 @@ public class OptimizedPreferenceControllerTest {
@Test
public void testUpdateState_prefUnchecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
mController.updateState(mPreference);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java
index 944376c77dd..bcddbc2500b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedPreferenceControllerTest.java
@@ -52,7 +52,7 @@ public class RestrictedPreferenceControllerTest {
@Test
public void testUpdateState_isValidPackage_prefEnabled() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
mController.updateState(mPreference);
@@ -61,7 +61,7 @@ public class RestrictedPreferenceControllerTest {
@Test
public void testUpdateState_invalidPackage_prefDisabled() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(false);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
mController.updateState(mPreference);
@@ -70,7 +70,7 @@ public class RestrictedPreferenceControllerTest {
@Test
public void testUpdateState_isSystemOrDefaultAppAndRestrictedStates_prefChecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
BatteryOptimizeUtils.MODE_RESTRICTED);
@@ -82,7 +82,7 @@ public class RestrictedPreferenceControllerTest {
@Test
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
mController.updateState(mPreference);
@@ -93,7 +93,7 @@ public class RestrictedPreferenceControllerTest {
@Test
public void testUpdateState_isRestrictedStates_prefChecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
BatteryOptimizeUtils.MODE_RESTRICTED);
@@ -104,7 +104,7 @@ public class RestrictedPreferenceControllerTest {
@Test
public void testUpdateState_prefUnchecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
mController.updateState(mPreference);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
index c5642df576c..9bed9bad152 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/UnrestrictedPreferenceControllerTest.java
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-
package com.android.settings.fuelgauge;
import static com.google.common.truth.Truth.assertThat;
@@ -53,7 +52,7 @@ public class UnrestrictedPreferenceControllerTest {
@Test
public void testUpdateState_isValidPackage_prefEnabled() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
mController.updateState(mPreference);
@@ -62,7 +61,7 @@ public class UnrestrictedPreferenceControllerTest {
@Test
public void testUpdateState_invalidPackage_prefDisabled() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(false);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(true);
mController.updateState(mPreference);
@@ -71,7 +70,7 @@ public class UnrestrictedPreferenceControllerTest {
@Test
public void testUpdateState_isSystemOrDefaultAppAndUnrestrictedStates_prefChecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
BatteryOptimizeUtils.MODE_UNRESTRICTED);
@@ -83,7 +82,7 @@ public class UnrestrictedPreferenceControllerTest {
@Test
public void testUpdateState_isSystemOrDefaultApp_prefUnchecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mockBatteryOptimizeUtils.isSystemOrDefaultApp()).thenReturn(true);
mController.updateState(mPreference);
@@ -94,7 +93,7 @@ public class UnrestrictedPreferenceControllerTest {
@Test
public void testUpdateState_isUnrestrictedStates_prefChecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
when(mockBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(
BatteryOptimizeUtils.MODE_UNRESTRICTED);
@@ -105,7 +104,7 @@ public class UnrestrictedPreferenceControllerTest {
@Test
public void testUpdateState_prefUnchecked() {
- when(mockBatteryOptimizeUtils.isValidPackageName()).thenReturn(true);
+ when(mockBatteryOptimizeUtils.isDisabledForOptimizeModeOnly()).thenReturn(false);
mController.updateState(mPreference);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java
index f81a4be8d63..64d5d0460ef 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java
@@ -60,32 +60,32 @@ public class BatteryDefenderDetectorTest {
}
@Test
- public void testDetect_notOverheatedNotExtraDefend_tipInvisible() {
- mBatteryInfo.isOverheated = false;
+ public void testDetect_notDefenderNotExtraDefend_tipInvisible() {
+ mBatteryInfo.isBatteryDefender = false;
when(mFakeFeatureFactory.powerUsageFeatureProvider.isExtraDefend()).thenReturn(false);
assertThat(mBatteryDefenderDetector.detect().isVisible()).isFalse();
}
@Test
- public void testDetect_notOverheatedIsExtraDefend_tipInvisible() {
- mBatteryInfo.isOverheated = false;
+ public void testDetect_notDefenderIsExtraDefend_tipInvisible() {
+ mBatteryInfo.isBatteryDefender = false;
when(mFakeFeatureFactory.powerUsageFeatureProvider.isExtraDefend()).thenReturn(true);
assertThat(mBatteryDefenderDetector.detect().isVisible()).isFalse();
}
@Test
- public void testDetect_isOverheatedIsExtraDefend_tipInvisible() {
- mBatteryInfo.isOverheated = false;
+ public void testDetect_isDefenderIsExtraDefend_tipInvisible() {
+ mBatteryInfo.isBatteryDefender = false;
when(mFakeFeatureFactory.powerUsageFeatureProvider.isExtraDefend()).thenReturn(true);
assertThat(mBatteryDefenderDetector.detect().isVisible()).isFalse();
}
@Test
- public void testDetect_isOverheatedNotExtraDefend_tipNew() {
- mBatteryInfo.isOverheated = true;
+ public void testDetect_isDefenderNotExtraDefend_tipNew() {
+ mBatteryInfo.isBatteryDefender = true;
when(mFakeFeatureFactory.powerUsageFeatureProvider.isExtraDefend()).thenReturn(false);
assertThat(mBatteryDefenderDetector.detect().getState())
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java
index 9652a00ca18..bd2c5d1173b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java
@@ -83,7 +83,7 @@ public class DockDefenderDetectorTest {
@Test
public void testDetect_dockDefenderActive() {
- mBatteryInfo.isOverheated = true;
+ mBatteryInfo.isBatteryDefender = true;
doReturn(true).when(mFakeFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
BatteryTip batteryTip = mDockDefenderDetector.detect();
@@ -95,7 +95,7 @@ public class DockDefenderDetectorTest {
@Test
public void testDetect_dockDefenderFutureBypass() {
- mBatteryInfo.isOverheated = false;
+ mBatteryInfo.isBatteryDefender = false;
doReturn(false).when(mFakeFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
BatteryTip batteryTip = mDockDefenderDetector.detect();
@@ -107,7 +107,7 @@ public class DockDefenderDetectorTest {
@Test
public void testDetect_overheatedTrue_dockDefenderDisabled() {
- mBatteryInfo.isOverheated = true;
+ mBatteryInfo.isBatteryDefender = true;
doReturn(false).when(mFakeFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
BatteryTip batteryTip = mDockDefenderDetector.detect();
@@ -131,7 +131,7 @@ public class DockDefenderDetectorTest {
@Test
public void testDetect_overheatedTrueAndDockDefenderNotTriggered_dockDefenderDisabled() {
doReturn(false).when(mFakeFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
- mBatteryInfo.isOverheated = true;
+ mBatteryInfo.isBatteryDefender = true;
BatteryTip batteryTip = mDockDefenderDetector.detect();