Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 950c63f9 authored by Charles Yo's avatar Charles Yo
Browse files

Revert "Add register groups API"

Revert submission 28147757-no-processing-protolog

Reason for revert: b/351458758

Reverted changes: /q/submissionid:28147757-no-processing-protolog

Change-Id: I785dc0e11b4025867b757a039b4e0a1e609dd5d0
parent 6eac90fe
Loading
Loading
Loading
Loading
+5 −12
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;

@@ -66,7 +65,7 @@ public class LegacyProtoLogImpl implements IProtoLog {
    private final String mLegacyViewerConfigFilename;
    private final TraceBuffer mBuffer;
    private final LegacyProtoLogViewerConfigReader mViewerConfig;
    private final Map<String, IProtoLogGroup> mLogGroups = new TreeMap<>();
    private final TreeMap<String, IProtoLogGroup> mLogGroups;
    private final Runnable mCacheUpdater;
    private final int mPerChunkSize;

@@ -75,19 +74,20 @@ public class LegacyProtoLogImpl implements IProtoLog {
    private final Object mProtoLogEnabledLock = new Object();

    public LegacyProtoLogImpl(String outputFile, String viewerConfigFilename,
            Runnable cacheUpdater) {
            TreeMap<String, IProtoLogGroup> logGroups, Runnable cacheUpdater) {
        this(new File(outputFile), viewerConfigFilename, BUFFER_CAPACITY,
                new LegacyProtoLogViewerConfigReader(), PER_CHUNK_SIZE, cacheUpdater);
                new LegacyProtoLogViewerConfigReader(), PER_CHUNK_SIZE, logGroups, cacheUpdater);
    }

    public LegacyProtoLogImpl(File file, String viewerConfigFilename, int bufferCapacity,
            LegacyProtoLogViewerConfigReader viewerConfig, int perChunkSize,
            Runnable cacheUpdater) {
            TreeMap<String, IProtoLogGroup> logGroups, Runnable cacheUpdater) {
        mLogFile = file;
        mBuffer = new TraceBuffer(bufferCapacity);
        mLegacyViewerConfigFilename = viewerConfigFilename;
        mViewerConfig = viewerConfig;
        mPerChunkSize = perChunkSize;
        mLogGroups = logGroups;
        mCacheUpdater = cacheUpdater;
    }

@@ -414,12 +414,5 @@ public class LegacyProtoLogImpl implements IProtoLog {
        // so we ignore the level argument to this function.
        return group.isLogToLogcat() || (group.isLogToProto() && isProtoEnabled());
    }

    @Override
    public void registerGroups(IProtoLogGroup... protoLogGroups) {
        for (IProtoLogGroup group : protoLogGroups) {
            mLogGroups.put(group.name(), group);
        }
    }
}
+46 −47
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ import static android.internal.perfetto.protos.TracePacketOuterClass.TracePacket
import static android.internal.perfetto.protos.TracePacketOuterClass.TracePacket.SEQ_NEEDS_INCREMENTAL_STATE;
import static android.internal.perfetto.protos.TracePacketOuterClass.TracePacket.TIMESTAMP;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.internal.perfetto.protos.Protolog.ProtoLogViewerConfig.MessageData;
import android.os.ShellCommand;
@@ -83,6 +82,7 @@ import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;

/**
 * A service for the ProtoLog logging system.
@@ -98,7 +98,7 @@ public class PerfettoProtoLogImpl implements IProtoLog {
    );
    private final ProtoLogViewerConfigReader mViewerConfigReader;
    private final ViewerConfigInputStreamProvider mViewerConfigInputStreamProvider;
    private final TreeMap<String, IProtoLogGroup> mLogGroups = new TreeMap<>();
    private final TreeMap<String, IProtoLogGroup> mLogGroups;
    private final Runnable mCacheUpdater;

    private final int[] mDefaultLogLevelCounts = new int[LogLevel.values().length];
@@ -106,7 +106,8 @@ public class PerfettoProtoLogImpl implements IProtoLog {

    private final ExecutorService mBackgroundLoggingService = Executors.newSingleThreadExecutor();

    public PerfettoProtoLogImpl(String viewerConfigFilePath, Runnable cacheUpdater) {
    public PerfettoProtoLogImpl(String viewerConfigFilePath,
            TreeMap<String, IProtoLogGroup> logGroups, Runnable cacheUpdater) {
        this(() -> {
            try {
                return new ProtoInputStream(new FileInputStream(viewerConfigFilePath));
@@ -114,19 +115,31 @@ public class PerfettoProtoLogImpl implements IProtoLog {
                Slog.w(LOG_TAG, "Failed to load viewer config file " + viewerConfigFilePath, e);
                return null;
            }
        }, cacheUpdater);
        }, logGroups, cacheUpdater);
    }

    public PerfettoProtoLogImpl() {
        this(null, null, () -> {});
    public PerfettoProtoLogImpl(IProtoLogGroup[] logGroups) {
        this(null, logGroups, () -> {});
    }

    public PerfettoProtoLogImpl(
            ViewerConfigInputStreamProvider viewerConfigInputStreamProvider,
            IProtoLogGroup[] logGroups,
            Runnable cacheUpdater
    ) {
        this(viewerConfigInputStreamProvider,
                new ProtoLogViewerConfigReader(viewerConfigInputStreamProvider),
                new TreeMap<>(Arrays.stream(logGroups)
                        .collect(Collectors.toMap(IProtoLogGroup::name, group -> group))),
                cacheUpdater);
    }

    public PerfettoProtoLogImpl(
            ViewerConfigInputStreamProvider viewerConfigInputStreamProvider,
            TreeMap<String, IProtoLogGroup> logGroups,
            Runnable cacheUpdater
    ) {
        this(viewerConfigInputStreamProvider,
                new ProtoLogViewerConfigReader(viewerConfigInputStreamProvider), logGroups,
                cacheUpdater);
    }

@@ -134,6 +147,7 @@ public class PerfettoProtoLogImpl implements IProtoLog {
    public PerfettoProtoLogImpl(
            ViewerConfigInputStreamProvider viewerConfigInputStreamProvider,
            ProtoLogViewerConfigReader viewerConfigReader,
            TreeMap<String, IProtoLogGroup> logGroups,
            Runnable cacheUpdater
    ) {
        Producer.init(InitArguments.DEFAULTS);
@@ -146,6 +160,7 @@ public class PerfettoProtoLogImpl implements IProtoLog {
        mDataSource.register(params);
        this.mViewerConfigInputStreamProvider = viewerConfigInputStreamProvider;
        this.mViewerConfigReader = viewerConfigReader;
        this.mLogGroups = logGroups;
        this.mCacheUpdater = cacheUpdater;
    }

@@ -184,7 +199,7 @@ public class PerfettoProtoLogImpl implements IProtoLog {
                                tsNanos));
            }
            if (group.isLogToLogcat()) {
                logToLogcat(group.getTag(), logLevel, messageString, args);
                logToLogcat(group.getTag(), logLevel, 0, args);
            }
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
@@ -192,11 +207,6 @@ public class PerfettoProtoLogImpl implements IProtoLog {
    }

    private void dumpTransitionTraceConfig() {
        if (mViewerConfigInputStreamProvider == null) {
            // No viewer config available
            return;
        }

        ProtoInputStream pis = mViewerConfigInputStreamProvider.getInputStream();

        if (pis == null) {
@@ -291,40 +301,36 @@ public class PerfettoProtoLogImpl implements IProtoLog {
            @Nullable Object[] args) {
        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logToLogcat");
        try {
            String messageString = mViewerConfigReader.getViewerString(messageHash);

            if (messageString == null) {
                StringBuilder builder = new StringBuilder("UNKNOWN MESSAGE");
                for (Object o : args) {
                    builder.append(" ").append(o);
                }
                messageString = builder.toString();
                args = new Object[0];
            }

            doLogToLogcat(tag, level, messageString, args);
            doLogToLogcat(tag, level, messageHash, args);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void logToLogcat(String tag, LogLevel level, String message, @Nullable Object[] args) {
        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "logToLogcat");
        try {
            doLogToLogcat(tag, level, message, args);
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
        }
    }

    private void doLogToLogcat(String tag, LogLevel level, @NonNull String messageString,
    private void doLogToLogcat(String tag, LogLevel level, long messageHash,
            @Nullable Object[] args) {
        String message;
        String message = null;
        String messageString = mViewerConfigReader.getViewerString(messageHash);
        if (messageString != null) {
            if (args != null) {
                try {
                    message = TextUtils.formatSimple(messageString, args);
                } catch (Exception ex) {
                    Slog.w(LOG_TAG, "Invalid ProtoLog format string.", ex);
                }
            } else {
                message = messageString;
            }
        }
        if (message == null) {
            StringBuilder builder = new StringBuilder("UNKNOWN MESSAGE (" + messageHash + ")");
            if (args != null) {
                for (Object o : args) {
                    builder.append(" ").append(o);
                }
            }
            message = builder.toString();
        }
        passToLogcat(tag, level, message);
    }

@@ -660,13 +666,6 @@ public class PerfettoProtoLogImpl implements IProtoLog {
                || group.isLogToLogcat();
    }

    @Override
    public void registerGroups(IProtoLogGroup... protoLogGroups) {
        for (IProtoLogGroup protoLogGroup : protoLogGroups) {
            mLogGroups.put(protoLogGroup.name(), protoLogGroup);
        }
    }

    /**
     * Start logging the stack trace of the when the log message happened for target groups
     * @return status code
+6 −4
Original line number Diff line number Diff line
@@ -151,11 +151,13 @@ public class ProtoLog {
    }

    /**
     * Registers available protolog groups. A group must be registered before it can be used.
     * @param protoLogGroups The groups to register for use in protolog.
     * Should be called once for each process that wants to use ProtoLog
     */
    public static void registerGroups(IProtoLogGroup... protoLogGroups) {
        sProtoLogInstance.registerGroups(protoLogGroups);
    public static synchronized void initialize(IProtoLog protoLogInstance) {
        if (sProtoLogInstance != null) {
            throw new IllegalStateException("ProtoLog already initialized in this process");
        }
        sProtoLogInstance = protoLogInstance;
    }

    private static void logStringMessage(LogLevel logLevel, IProtoLogGroup group,
+0 −8
Original line number Diff line number Diff line
@@ -91,14 +91,6 @@ public class ProtoLogImpl {
        return getSingleInstance().isEnabled(group, level);
    }

    /**
     * Registers available protolog groups. A group must be registered before it can be used.
     * @param protoLogGroups The groups to register for use in protolog.
     */
    public static void registerGroups(IProtoLogGroup... protoLogGroups) {
        getSingleInstance().registerGroups(protoLogGroups);
    }

    /**
     * Returns the single instance of the ProtoLogImpl singleton class.
     */
+0 −6
Original line number Diff line number Diff line
@@ -68,10 +68,4 @@ public interface IProtoLog {
     * @return If we need to log this group and level to either ProtoLog or Logcat.
     */
    boolean isEnabled(IProtoLogGroup group, LogLevel level);

    /**
     * Registers available protolog groups. A group must be registered before it can be used.
     * @param protoLogGroups The groups to register for use in protolog.
     */
    void registerGroups(IProtoLogGroup... protoLogGroups);
}