summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-02-02 01:02:26 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-02-02 01:02:33 +0000
commitd8a937e02eefd9b86e32b1dcfdda96f153a2d9c2 (patch)
tree2eba380adade265e9dadaa8a1416c84e19060b40
parentb0412060ea9e982852c0af1a45754ca9449e1f9d (diff)
parent3ed5be3fa7064966df873956f56c3b0b12807ba4 (diff)
Merge "Add dumpsys options to procstats to inject screen state"
-rw-r--r--services/core/java/com/android/server/am/ProcessStatsService.java31
1 files changed, 30 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ProcessStatsService.java b/services/core/java/com/android/server/am/ProcessStatsService.java
index 8d2b1c2fda79..d210ed76eca8 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.AtomicFile;
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 @@ public final class ProcessStatsService extends IProcessStats.Stub {
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 final class ProcessStatsService extends IProcessStats.Stub {
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 @@ public final class ProcessStatsService extends IProcessStats.Stub {
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 @@ public final class ProcessStatsService extends IProcessStats.Stub {
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 @@ public final class ProcessStatsService extends IProcessStats.Stub {
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;