diff options
| -rw-r--r-- | core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java | 77 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerShellCommand.java | 13 |
2 files changed, 52 insertions, 38 deletions
diff --git a/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java b/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java index 53062d837cfa..27eeb96912c6 100644 --- a/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java +++ b/core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java @@ -456,40 +456,6 @@ public class PerfettoProtoLogImpl implements IProtoLog { } /** - * Responds to a shell command. - */ - public int onShellCommand(ShellCommand shell) { - PrintWriter pw = shell.getOutPrintWriter(); - String cmd = shell.getNextArg(); - if (cmd == null) { - return unknownCommand(pw); - } - ArrayList<String> args = new ArrayList<>(); - String arg; - while ((arg = shell.getNextArg()) != null) { - args.add(arg); - } - final ILogger logger = (msg) -> logAndPrintln(pw, msg); - String[] groups = args.toArray(new String[args.size()]); - switch (cmd) { - case "enable-text": - return this.startLoggingToLogcat(groups, logger); - case "disable-text": - return this.stopLoggingToLogcat(groups, logger); - default: - return unknownCommand(pw); - } - } - - private int unknownCommand(PrintWriter pw) { - pw.println("Unknown command"); - pw.println("Window manager logging options:"); - pw.println(" enable-text [group...]: Enable logcat logging for given groups"); - pw.println(" disable-text [group...]: Disable logcat logging for given groups"); - return -1; - } - - /** * Returns {@code true} iff logging to proto is enabled. */ public boolean isProtoEnabled() { @@ -548,6 +514,49 @@ public class PerfettoProtoLogImpl implements IProtoLog { return 0; } + /** + * Responds to a shell command. + */ + public int onShellCommand(ShellCommand shell) { + PrintWriter pw = shell.getOutPrintWriter(); + String cmd = shell.getNextArg(); + if (cmd == null) { + return unknownCommand(pw); + } + ArrayList<String> args = new ArrayList<>(); + String arg; + while ((arg = shell.getNextArg()) != null) { + args.add(arg); + } + final ILogger logger = (msg) -> logAndPrintln(pw, msg); + String[] groups = args.toArray(new String[0]); + switch (cmd) { + case "start", "stop" -> { + pw.println("Command not supported. " + + "Please start and stop ProtoLog tracing with Perfetto."); + return -1; + } + case "enable-text" -> { + mViewerConfigReader.loadViewerConfig(logger); + return setTextLogging(true, logger, groups); + } + case "disable-text" -> { + return setTextLogging(false, logger, groups); + } + default -> { + return unknownCommand(pw); + } + } + } + + private int unknownCommand(PrintWriter pw) { + pw.println("Unknown command"); + pw.println("Window manager logging options:"); + pw.println(" enable-text [group...]: Enable logcat logging for given groups"); + pw.println(" disable-text [group...]: Disable logcat logging for given groups"); + return -1; + } + static void logAndPrintln(@Nullable PrintWriter pw, String msg) { Slog.i(LOG_TAG, msg); if (pw != null) { diff --git a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java index 0b29f9688acd..a6db310f4e63 100644 --- a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java +++ b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java @@ -49,6 +49,7 @@ import android.view.ViewDebug; import com.android.internal.os.ByteTransferPipe; import com.android.internal.protolog.LegacyProtoLogImpl; +import com.android.internal.protolog.PerfettoProtoLogImpl; import com.android.internal.protolog.common.IProtoLog; import com.android.internal.protolog.common.ProtoLog; import com.android.server.IoThread; @@ -111,8 +112,13 @@ public class WindowManagerShellCommand extends ShellCommand { case "logging": IProtoLog instance = ProtoLog.getSingleInstance(); int result = 0; - if (instance instanceof LegacyProtoLogImpl) { - result = ((LegacyProtoLogImpl) instance).onShellCommand(this); + if (instance instanceof LegacyProtoLogImpl + || instance instanceof PerfettoProtoLogImpl) { + if (instance instanceof LegacyProtoLogImpl) { + result = ((LegacyProtoLogImpl) instance).onShellCommand(this); + } else { + result = ((PerfettoProtoLogImpl) instance).onShellCommand(this); + } if (result != 0) { pw.println("Not handled, please use " + "`adb shell dumpsys activity service SystemUIService " @@ -120,8 +126,7 @@ public class WindowManagerShellCommand extends ShellCommand { } } else { result = -1; - pw.println("Command not supported. " - + "Only supported when using legacy ProtoLog."); + pw.println("ProtoLog impl doesn't support handling commands"); } return result; case "user-rotation": |