Batterystats commands to simulate screen on/off

Needed for batterystats cts tests to measure partial wakelock
duration reporting.

Bug: 34233085
Test: adb shell dumpsys batterystats enable pretend-screen-off
Change-Id: Ia7c76d6a0636d206e04f01be58d1e6dc3332c50d
This commit is contained in:
Amith Yamasani
2017-02-01 09:45:17 -08:00
parent 26dbff358c
commit 674c9bb2ff
2 changed files with 14 additions and 1 deletions

View File

@@ -377,6 +377,8 @@ public class BatteryStatsImpl extends BatteryStats {
int mScreenBrightnessBin = -1;
final StopwatchTimer[] mScreenBrightnessTimer = new StopwatchTimer[NUM_SCREEN_BRIGHTNESS_BINS];
boolean mPretendScreenOff;
boolean mInteractive;
StopwatchTimer mInteractiveTimer;
@@ -3395,6 +3397,11 @@ public class BatteryStatsImpl extends BatteryStats {
mNoAutoReset = enabled;
}
public void setPretendScreenOff(boolean pretendScreenOff) {
mPretendScreenOff = pretendScreenOff;
noteScreenStateLocked(pretendScreenOff ? Display.STATE_OFF : Display.STATE_ON);
}
private String mInitialAcquireWakeName;
private int mInitialAcquireWakeUid = -1;
@@ -3698,6 +3705,7 @@ public class BatteryStatsImpl extends BatteryStats {
}
public void noteScreenStateLocked(int state) {
state = mPretendScreenOff ? Display.STATE_OFF : state;
if (mScreenState != state) {
recordDailyStatsIfNeededLocked(true);
final int oldState = mScreenState;

View File

@@ -51,8 +51,8 @@ import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.util.IntArray;
import android.util.Slog;
import android.util.TimeUtils;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IBatteryStats;
import com.android.internal.os.BatteryStatsHelper;
@@ -1127,6 +1127,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
pw.println(" full-history: include additional detailed events in battery history:");
pw.println(" wake_lock_in, alarms and proc events");
pw.println(" no-auto-reset: don't automatically reset stats when unplugged");
pw.println(" pretend-screen-off: pretend the screen is off, even if screen state changes");
}
private int doEnableOrDisable(PrintWriter pw, int i, String[] args, boolean enable) {
@@ -1144,6 +1145,10 @@ public final class BatteryStatsService extends IBatteryStats.Stub
synchronized (mStats) {
mStats.setNoAutoReset(enable);
}
} else if ("pretend-screen-off".equals(args[i])) {
synchronized (mStats) {
mStats.setPretendScreenOff(enable);
}
} else {
pw.println("Unknown enable/disable option: " + args[i]);
dumpHelp(pw);