From 3ed5be3fa7064966df873956f56c3b0b12807ba4 Mon Sep 17 00:00:00 2001 From: Makoto Onuki Date: Wed, 1 Feb 2017 14:04:47 -0800 Subject: Add dumpsys options to procstats to inject screen state Test: CTS CtsDumpsysHostTestCases, not submitted yet though. $ cts-tradefed run cts --skip-device-info --skip-preconditions --skip-system-status-check com.android.compatibility.common.tradefed.targetprep.NetworkConnectivityChecker -a armeabi-v7a -l INFO -m CtsDumpsysHostTestCases -t 'android.dumpsys.cts.ProcessStatsDumpsysTest' Bug 34228624 Change-Id: I9cf7f737624fe9f188956be7ba7485151555bc4b --- .../com/android/server/am/ProcessStatsService.java | 31 +++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) 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] []"); + pw.println(" [--start-testing] [--stop-testing] "); + pw.println(" [--pretend-screen-on] [--pretend-screen-off] [--stop-pretend-screen]"); + pw.println(" []"); 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(" : 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; -- cgit v1.2.3-59-g8ed1b