Loading core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java +43 −34 Original line number Diff line number Diff line Loading @@ -466,40 +466,6 @@ public class PerfettoProtoLogImpl implements IProtoLog { return internMap.get(string); } /** * 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. */ Loading Loading @@ -559,6 +525,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) { Loading services/core/java/com/android/server/wm/WindowManagerShellCommand.java +9 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -111,8 +112,13 @@ public class WindowManagerShellCommand extends ShellCommand { case "logging": IProtoLog instance = ProtoLog.getSingleInstance(); int result = 0; 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 " Loading @@ -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": Loading Loading
core/java/com/android/internal/protolog/PerfettoProtoLogImpl.java +43 −34 Original line number Diff line number Diff line Loading @@ -466,40 +466,6 @@ public class PerfettoProtoLogImpl implements IProtoLog { return internMap.get(string); } /** * 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. */ Loading Loading @@ -559,6 +525,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) { Loading
services/core/java/com/android/server/wm/WindowManagerShellCommand.java +9 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -111,8 +112,13 @@ public class WindowManagerShellCommand extends ShellCommand { case "logging": IProtoLog instance = ProtoLog.getSingleInstance(); int result = 0; 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 " Loading @@ -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": Loading