Mock on-battery state correctly on batteryless devices.
The setup command `dumpsys battery unplug` fakes only the
"(AC|USB|Wireless) powered" battery service state.
In addition to it, for simulating the on-battery status on batteryless devices,
the "status" field of the service needs to be altered. The field is "unknown"
on Android P batteryless devices, and com.android.internal.os.BatteryStatsImpl
never considers itself as on-battery under the state.
Bug: 126827395
Test: -t com.android.server.cts.BatteryStatsValidationTest on Chromebase
Test: -t com.android.server.cts.BatteryStatsValidationTest on Pixel 3
Change-Id: I089539dd2e0111c57597404d4f72ce25bd20e30f
diff --git a/hostsidetests/incident/src/com/android/server/cts/BatteryStatsValidationTest.java b/hostsidetests/incident/src/com/android/server/cts/BatteryStatsValidationTest.java
index 9234387..bbdcb08 100644
--- a/hostsidetests/incident/src/com/android/server/cts/BatteryStatsValidationTest.java
+++ b/hostsidetests/incident/src/com/android/server/cts/BatteryStatsValidationTest.java
@@ -72,6 +72,9 @@
public static final String KEY_REQUEST_CODE = "request_code";
public static final String BG_VS_FG_TAG = "BatteryStatsBgVsFgActions";
+ // Constants from BatteryMangager.
+ public static final int BATTERY_STATUS_DISCHARGING = 3;
+
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -109,11 +112,13 @@
protected void batteryOnScreenOn() throws Exception {
getDevice().executeShellCommand("dumpsys battery unplug");
+ getDevice().executeShellCommand("dumpsys battery set status " + BATTERY_STATUS_DISCHARGING);
getDevice().executeShellCommand("dumpsys batterystats disable pretend-screen-off");
}
protected void batteryOnScreenOff() throws Exception {
getDevice().executeShellCommand("dumpsys battery unplug");
+ getDevice().executeShellCommand("dumpsys battery set status " + BATTERY_STATUS_DISCHARGING);
getDevice().executeShellCommand("dumpsys batterystats enable pretend-screen-off");
}