OSDN Git Service

Batterystats commands to simulate screen on/off
authorAmith Yamasani <yamasani@google.com>
Wed, 1 Feb 2017 17:45:17 +0000 (09:45 -0800)
committerAmith Yamasani <yamasani@google.com>
Wed, 1 Feb 2017 23:39:57 +0000 (15:39 -0800)
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
services/core/java/com/android/server/am/BatteryStatsService.java

index c34c379..240d3d0 100644 (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;
index f1f8bb2..3571302 100644 (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);