Merge "Add dumpsys options to procstats to inject screen state"
diff --git a/services/core/java/com/android/server/am/ProcessStatsService.java b/services/core/java/com/android/server/am/ProcessStatsService.java
index 8d2b1c2..d210ed7 100644
--- a/services/core/java/com/android/server/am/ProcessStatsService.java
+++ b/services/core/java/com/android/server/am/ProcessStatsService.java
@@ -28,6 +28,8 @@
import android.util.Slog;
import android.util.SparseArray;
import android.util.TimeUtils;
+
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.procstats.DumpUtils;
import com.android.internal.app.procstats.IProcessStats;
import com.android.internal.app.procstats.ProcessState;
@@ -78,6 +80,10 @@
boolean mPendingWriteCommitted;
long mLastWriteTime;
+ /** For CTS to inject the screen state. */
+ @GuardedBy("mAm")
+ Boolean mInjectedScreenState;
+
public ProcessStatsService(ActivityManagerService am, File file) {
mAm = am;
mBaseDir = file;
@@ -128,6 +134,9 @@
public boolean setMemFactorLocked(int memFactor, boolean screenOn, long now) {
mMemFactorLowered = memFactor < mLastMemOnlyState;
mLastMemOnlyState = memFactor;
+ if (mInjectedScreenState != null) {
+ screenOn = mInjectedScreenState;
+ }
if (screenOn) {
memFactor += ProcessStats.ADJ_SCREEN_ON;
}
@@ -573,7 +582,9 @@
pw.println(" [--checkin|-c|--csv] [--csv-screen] [--csv-proc] [--csv-mem]");
pw.println(" [--details] [--full-details] [--current] [--hours N] [--last N]");
pw.println(" [--max N] --active] [--commit] [--reset] [--clear] [--write] [-h]");
- pw.println(" [--start-testing] [--stop-testing] [<package.name>]");
+ pw.println(" [--start-testing] [--stop-testing] ");
+ pw.println(" [--pretend-screen-on] [--pretend-screen-off] [--stop-pretend-screen]");
+ pw.println(" [<package.name>]");
pw.println(" --checkin: perform a checkin: print and delete old committed states.");
pw.println(" -c: print only state in checkin format.");
pw.println(" --csv: output data suitable for putting in a spreadsheet.");
@@ -595,6 +606,9 @@
pw.println(" --read: replace current stats with last-written stats.");
pw.println(" --start-testing: clear all stats and starting high frequency pss sampling.");
pw.println(" --stop-testing: stop high frequency pss sampling.");
+ pw.println(" --pretend-screen-on: pretend screen is on.");
+ pw.println(" --pretend-screen-off: pretend screen is off.");
+ pw.println(" --stop-pretend-screen: forget \"pretend screen\" and use the real state.");
pw.println(" -a: print everything.");
pw.println(" -h: print this help text.");
pw.println(" <package.name>: optional name of package to filter output by.");
@@ -800,6 +814,21 @@
pw.println("Stopped high frequency sampling.");
quit = true;
}
+ } else if ("--pretend-screen-on".equals(arg)) {
+ synchronized (mAm) {
+ mInjectedScreenState = true;
+ }
+ quit = true;
+ } else if ("--pretend-screen-off".equals(arg)) {
+ synchronized (mAm) {
+ mInjectedScreenState = false;
+ }
+ quit = true;
+ } else if ("--stop-pretend-screen".equals(arg)) {
+ synchronized (mAm) {
+ mInjectedScreenState = null;
+ }
+ quit = true;
} else if ("-h".equals(arg)) {
dumpHelp(pw);
return;