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

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

Merge "Added Java bindings to async trace functions with track argument" am:...

Merge "Added Java bindings to async trace functions with track argument" am: 004bb42f am: 83b26d26

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



Change-Id: Icae15cc72acd7fb94ce54439e18967d5533ea93f
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 8f7679ae 83b26d26
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
@@ -136,6 +136,12 @@ public final class Trace {
    @FastNative
    private static native void nativeAsyncTraceEnd(long tag, String name, int cookie);
    @FastNative
    private static native void nativeAsyncTraceForTrackBegin(long tag,
            String trackName, String name, int cookie);
    @FastNative
    private static native void nativeAsyncTraceForTrackEnd(long tag,
            String trackName, 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);
@@ -271,6 +277,47 @@ public final class Trace {
        }
    }


    /**
     * Writes a trace message to indicate that a given section of code has
     * begun. Must be followed by a call to {@link #asyncTraceForTrackEnd} using the same
     * tag. This function operates exactly like {@link #asyncTraceBegin(long, String, int)},
     * except with the inclusion of a track name argument for where this method should appear.
     *
     * @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.
     * @param cookie Unique identifier for distinguishing simultaneous events
     *
     * @hide
     */
    public static void asyncTraceForTrackBegin(long traceTag,
            @NonNull String trackName, @NonNull String methodName, int cookie) {
        if (isTagEnabled(traceTag)) {
            nativeAsyncTraceForTrackBegin(traceTag, trackName, methodName, cookie);
        }
    }

    /**
     * Writes a trace message to indicate that the current method has ended.
     * Must be called exactly once for each call to
     * {@link #asyncTraceForTrackBegin(long, String, String, int)}
     * using the same tag, track name, name and cookie.
     *
     * @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.
     * @param cookie Unique identifier for distinguishing simultaneous events
     *
     * @hide
     */
    public static void asyncTraceForTrackEnd(long traceTag,
            @NonNull String trackName, @NonNull String methodName, int cookie) {
        if (isTagEnabled(traceTag)) {
            nativeAsyncTraceForTrackEnd(traceTag, trackName, methodName, cookie);
        }
    }

    /**
     * Writes a trace message to indicate that a given section of code was invoked.
     *
+26 −0
Original line number Diff line number Diff line
@@ -82,6 +82,26 @@ static void android_os_Trace_nativeAsyncTraceEnd(JNIEnv* env, jclass,
    });
}

static void android_os_Trace_nativeAsyncTraceForTrackBegin(JNIEnv* env, jclass, jlong tag,
                                                           jstring trackStr, jstring nameStr,
                                                           jint cookie) {
    withString(env, trackStr, [env, tag, nameStr, cookie](char* track) {
        withString(env, nameStr, [tag, track, cookie](char* name) {
            atrace_async_for_track_begin(tag, track, name, cookie);
        });
    });
}

static void android_os_Trace_nativeAsyncTraceForTrackEnd(JNIEnv* env, jclass, jlong tag,
                                                         jstring trackStr, jstring nameStr,
                                                         jint cookie) {
    withString(env, trackStr, [env, tag, nameStr, cookie](char* track) {
        withString(env, nameStr, [tag, track, cookie](char* name) {
            atrace_async_for_track_end(tag, track, name, cookie);
        });
    });
}

static void android_os_Trace_nativeSetAppTracingAllowed(JNIEnv*, jclass, jboolean allowed) {
    atrace_update_tags();
}
@@ -132,6 +152,12 @@ static const JNINativeMethod gTraceMethods[] = {
    { "nativeAsyncTraceEnd",
            "(JLjava/lang/String;I)V",
            (void*)android_os_Trace_nativeAsyncTraceEnd },
    { "nativeAsyncTraceForTrackBegin",
            "(JLjava/lang/String;Ljava/lang/String;I)V",
            (void*)android_os_Trace_nativeAsyncTraceForTrackBegin },
    { "nativeAsyncTraceForTrackEnd",
            "(JLjava/lang/String;Ljava/lang/String;I)V",
            (void*)android_os_Trace_nativeAsyncTraceForTrackEnd },
    { "nativeInstant",
            "(JLjava/lang/String;)V",
            (void*)android_os_Trace_nativeInstant },