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

Commit a9666fcc authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Log UI events to traces"

parents e908851a 2f72aa0b
Loading
Loading
Loading
Loading
+40 −0
Original line number Original line Diff line number Diff line
@@ -131,6 +131,10 @@ public final class Trace {
    private static native void nativeAsyncTraceBegin(long tag, String name, int cookie);
    private static native void nativeAsyncTraceBegin(long tag, String name, int cookie);
    @FastNative
    @FastNative
    private static native void nativeAsyncTraceEnd(long tag, String name, int cookie);
    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() {
    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
     * 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
     * string creation for trace sections that require formatting. It is not necessary
+22 −0
Original line number Original line Diff line number Diff line
@@ -90,6 +90,22 @@ static void android_os_Trace_nativeSetTracingEnabled(JNIEnv*, jclass, jboolean e
    atrace_set_tracing_enabled(enabled);
    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[] = {
static const JNINativeMethod gTraceMethods[] = {
    /* name, signature, funcPtr */
    /* name, signature, funcPtr */
    { "nativeSetAppTracingAllowed",
    { "nativeSetAppTracingAllowed",
@@ -116,6 +132,12 @@ static const JNINativeMethod gTraceMethods[] = {
    { "nativeAsyncTraceEnd",
    { "nativeAsyncTraceEnd",
            "(JLjava/lang/String;I)V",
            "(JLjava/lang/String;I)V",
            (void*)android_os_Trace_nativeAsyncTraceEnd },
            (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  ----------------
    // ----------- @CriticalNative  ----------------
    { "nativeGetEnabledTags",
    { "nativeGetEnabledTags",
+4 −2
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.systemui.log
package com.android.systemui.log


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


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


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