From 674c9bb2ffde84bd177fd44568d9a12b1c16dc6f Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Wed, 1 Feb 2017 09:45:17 -0800 Subject: [PATCH] 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 --- core/java/com/android/internal/os/BatteryStatsImpl.java | 8 ++++++++ .../java/com/android/server/am/BatteryStatsService.java | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index c34c3794da549..240d3d02e0cc8 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -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; diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index f1f8bb20652d6..35713025a2f55 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -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);