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

Commit 6e713ddc authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Log UI events to traces" am: a9666fcc

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1920746

Change-Id: Icc37e41afa525b154d9df8670d22b9b727888f55
parents 0c024d11 a9666fcc
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -131,6 +131,10 @@ public final class Trace {
    private static native void nativeAsyncTraceBegin(long tag, String name, int cookie);
    @FastNative
    private static native void nativeAsyncTraceEnd(long tag, String name, int cookie);
    @FastNative
    private static native void nativeInstant(long tag, String name);
    @FastNative
    private static native void nativeInstantForTrack(long tag, String trackName, String name);

    private Trace() {
    }
@@ -257,6 +261,42 @@ public final class Trace {
        }
    }

    /**
     * Writes a trace message to indicate that a given section of code was invoked.
     *
     * @param traceTag The trace tag.
     * @param methodName The method name to appear in the trace.
     * @hide
     */
    public static void instant(long traceTag, String methodName) {
        if (methodName == null) {
            throw new IllegalArgumentException("methodName cannot be null");
        }
        if (isTagEnabled(traceTag)) {
            nativeInstant(traceTag, methodName);
        }
    }

    /**
     * Writes a trace message to indicate that a given section of code was invoked.
     *
     * @param traceTag The trace tag.
     * @param trackName The track where the event should appear in the trace.
     * @param methodName The method name to appear in the trace.
     * @hide
     */
    public static void instantForTrack(long traceTag, String trackName, String methodName) {
        if (trackName == null) {
            throw new IllegalArgumentException("trackName cannot be null");
        }
        if (methodName == null) {
            throw new IllegalArgumentException("methodName cannot be null");
        }
        if (isTagEnabled(traceTag)) {
            nativeInstantForTrack(traceTag, trackName, methodName);
        }
    }

    /**
     * Checks whether or not tracing is currently enabled. This is useful to avoid intermediate
     * string creation for trace sections that require formatting. It is not necessary
+22 −0
Original line number Diff line number Diff line
@@ -90,6 +90,22 @@ static void android_os_Trace_nativeSetTracingEnabled(JNIEnv*, jclass, jboolean e
    atrace_set_tracing_enabled(enabled);
}

static void android_os_Trace_nativeInstant(JNIEnv* env, jclass,
        jlong tag, jstring nameStr) {
    withString(env, nameStr, [tag](char* str) {
        atrace_instant(tag, str);
    });
}

static void android_os_Trace_nativeInstantForTrack(JNIEnv* env, jclass,
        jlong tag, jstring trackStr, jstring nameStr) {
    withString(env, trackStr, [env, tag, nameStr](char* track) {
        withString(env, nameStr, [tag, track](char* name) {
            atrace_instant_for_track(tag, track, name);
        });
    });
}

static const JNINativeMethod gTraceMethods[] = {
    /* name, signature, funcPtr */
    { "nativeSetAppTracingAllowed",
@@ -116,6 +132,12 @@ static const JNINativeMethod gTraceMethods[] = {
    { "nativeAsyncTraceEnd",
            "(JLjava/lang/String;I)V",
            (void*)android_os_Trace_nativeAsyncTraceEnd },
    { "nativeInstant",
            "(JLjava/lang/String;)V",
            (void*)android_os_Trace_nativeInstant },
    { "nativeInstantForTrack",
            "(JLjava/lang/String;Ljava/lang/String;)V",
            (void*)android_os_Trace_nativeInstantForTrack },

    // ----------- @CriticalNative  ----------------
    { "nativeGetEnabledTags",
+4 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.log

import android.os.Trace
import android.util.Log
import com.android.systemui.log.dagger.LogModule
import java.io.PrintWriter
@@ -169,7 +170,7 @@ class LogBuffer(
        buffer.add(message as LogMessageImpl)
        if (logcatEchoTracker.isBufferLoggable(name, message.level) ||
                logcatEchoTracker.isTagLoggable(message.tag, message.level)) {
            echoToLogcat(message)
            echo(message)
        }
    }

@@ -219,7 +220,7 @@ class LogBuffer(
        pw.println(message.printer(message))
    }

    private fun echoToLogcat(message: LogMessage) {
    private fun echo(message: LogMessage) {
        val strMessage = message.printer(message)
        when (message.level) {
            LogLevel.VERBOSE -> Log.v(message.tag, strMessage)
@@ -229,6 +230,7 @@ class LogBuffer(
            LogLevel.ERROR -> Log.e(message.tag, strMessage)
            LogLevel.WTF -> Log.wtf(message.tag, strMessage)
        }
        Trace.instantForTrack(Trace.TRACE_TAG_APP, "UI Events", strMessage)
    }
}