From 6cc5e383940da055003ea8256fc1afc1126b1c6c Mon Sep 17 00:00:00 2001 From: Edgar Arriaga Date: Tue, 13 Dec 2022 23:00:29 +0000 Subject: [PATCH] Simplify debug command to force compactions This removes the need to specify the UID as part of the command Bug: 262442634 Test: am compact full (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:94ea572a57d4d5328d2e4b53582a7ea692a39a79) Merged-In: I3fa2d9bcc14e4ce31e8825d5a029f5768553f4fc Change-Id: I3fa2d9bcc14e4ce31e8825d5a029f5768553f4fc --- .../server/am/ActivityManagerShellCommand.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index 94d08bf7b59de..86f709b804fa7 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -1066,16 +1066,26 @@ final class ActivityManagerShellCommand extends ShellCommand { } @NeverCompile - int runCompact(PrintWriter pw) { + int runCompact(PrintWriter pw) throws RemoteException { ProcessRecord app; String op = getNextArgRequired(); boolean isFullCompact = op.equals("full"); boolean isSomeCompact = op.equals("some"); if (isFullCompact || isSomeCompact) { String processName = getNextArgRequired(); - String uid = getNextArgRequired(); synchronized (mInternal.mProcLock) { - app = mInternal.getProcessRecordLocked(processName, Integer.parseInt(uid)); + // Default to current user + int userId = mInterface.getCurrentUserId(); + String userOpt = getNextOption(); + if (userOpt != null && "--user".equals(userOpt)) { + int inputUserId = UserHandle.parseUserArg(getNextArgRequired()); + if (inputUserId != UserHandle.USER_CURRENT) { + userId = inputUserId; + } + } + final int uid = + mInternal.getPackageManagerInternal().getPackageUid(processName, 0, userId); + app = mInternal.getProcessRecordLocked(processName, uid); } pw.println("Process record found pid: " + app.mPid); if (isFullCompact) { @@ -4018,7 +4028,7 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" --allow-background-activity-starts: The receiver may start activities"); pw.println(" even if in the background."); pw.println(" --async: Send without waiting for the completion of the receiver."); - pw.println(" compact [some|full|system] "); + pw.println(" compact [some|full|system] [--user ]"); pw.println(" Force process compaction."); pw.println(" some: execute file compaction."); pw.println(" full: execute anon + file compaction.");