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

Commit fe39dfe3 authored by Makoto Onuki's avatar Makoto Onuki Committed by Android (Google) Code Review
Browse files

Merge "Enable all PerfettoTrace methods" into main

parents 359bc2b4 5413f36e
Loading
Loading
Loading
Loading
+40 −38
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package android.os;

import android.ravenwood.annotation.RavenwoodIgnore;
import android.ravenwood.annotation.RavenwoodReplace;

import com.android.internal.ravenwood.RavenwoodHelperBridge;

import dalvik.annotation.optimization.CriticalNative;
@@ -35,7 +38,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 *
 * @hide
 */
@android.ravenwood.annotation.RavenwoodKeepPartialClass
@android.ravenwood.annotation.RavenwoodKeepWholeClass(
        comment = "Most features are no-op on Ravenwood")
public final class PerfettoTrace {
    private static final String TAG = "PerfettoTrace";

@@ -63,13 +67,20 @@ public final class PerfettoTrace {

    // The same as a previous MQ_CATEGORY, but to be used with a V3 API.
    public static final com.android.internal.dev.perfetto.sdk.PerfettoTrace.Category
            MQ_CATEGORY_V3 = new com.android.internal.dev.perfetto.sdk.PerfettoTrace.Category("mq");
            MQ_CATEGORY_V3 = getMqCategoryV3();

    @RavenwoodIgnore // Just use null on Ravenwood.
    private static com.android.internal.dev.perfetto.sdk.PerfettoTrace.Category
            getMqCategoryV3() {
        return new com.android.internal.dev.perfetto.sdk.PerfettoTrace.Category("mq");
    }

    /**
     * This is temporary wrapper to check if either new or old APIs "mq" category is enabled, should
     * be called only from the MessageQueue.java and Looper.java.
     */
    @android.ravenwood.annotation.RavenwoodReplace
    // Tracing currently completely disabled under Ravenwood, just return false.
    @RavenwoodIgnore
    public static boolean isMQCategoryEnabled() {
        if (PerfettoTrace.IS_USE_SDK_TRACING_API_V3) {
            return PerfettoTrace.MQ_CATEGORY_V3.isEnabled();
@@ -77,11 +88,6 @@ public final class PerfettoTrace {
        return PerfettoTrace.MQ_CATEGORY.isEnabled();
    }

    public static boolean isMQCategoryEnabled$ravenwood() {
        // Tracing currently completely disabled under Ravenwood
        return false;
    }

    /**
     * Perfetto category a trace event belongs to.
     * Registering a category is not sufficient to capture events within the category, it must
@@ -138,36 +144,29 @@ public final class PerfettoTrace {
        }

        @FastNative
        @android.ravenwood.annotation.RavenwoodReplace
        @RavenwoodIgnore
        private static native long native_init(String name, String tag, String severity);

        @CriticalNative
        @android.ravenwood.annotation.RavenwoodReplace
        @RavenwoodIgnore
        private static native long native_delete();

        @CriticalNative
        @RavenwoodIgnore
        private static native void native_register(long ptr);

        @CriticalNative
        @RavenwoodIgnore
        private static native void native_unregister(long ptr);

        @CriticalNative
        @RavenwoodIgnore
        private static native boolean native_is_enabled(long ptr);

        @CriticalNative
        @android.ravenwood.annotation.RavenwoodReplace
        @RavenwoodIgnore
        private static native long native_get_extra_ptr(long ptr);

        private static long native_init$ravenwood(String name, String tag, String severity) {
            // Tracing currently completely disabled under Ravenwood
            return 0;
        }

        private static long native_delete$ravenwood() {
            // Tracing currently completely disabled under Ravenwood
            return 0;
        }

        private static long native_get_extra_ptr$ravenwood(long ptr) {
            // Tracing currently completely disabled under Ravenwood
            return 0;
        }

        /**
         * Register the category.
         */
@@ -242,18 +241,31 @@ public final class PerfettoTrace {
    }

    @CriticalNative
    @RavenwoodIgnore
    private static native long native_get_process_track_uuid();

    @CriticalNative
    @RavenwoodIgnore
    private static native long native_get_thread_track_uuid(long tid);

    @FastNative
    @RavenwoodIgnore
    private static native void native_activate_trigger(String name, int ttlMs);

    @FastNative
    @RavenwoodIgnore
    private static native void native_register(boolean isBackendInProcess);

    @RavenwoodIgnore
    private static native long native_start_session(boolean isBackendInProcess, byte[] config);

    @RavenwoodReplace
    private static native byte[] native_stop_session(long ptr);

    private static byte[] native_stop_session$ravenwood(long ptr) {
        return new byte[1]; // Just return something to avoid confusing callers.
    }

    /**
     * Writes a trace message to indicate a given section of code was invoked.
     *
@@ -381,7 +393,7 @@ public final class PerfettoTrace {
    }

    /** Registers the process with Perfetto. */
    @android.ravenwood.annotation.RavenwoodReplace
    @RavenwoodIgnore
    public static void register(boolean isBackendInProcess) {
        if (!isBackendInProcess) {
            sAttemptedSystemRegistration.set(true);
@@ -393,13 +405,8 @@ public final class PerfettoTrace {
        }
    }

    /** Ravenwood replacement for {@link #register(boolean)}. */
    public static void register$ravenwood(boolean isBackendInProcess) {
        // Tracing currently completely disabled under Ravenwood
    }

    /** Registers categories with Perfetto. */
    @android.ravenwood.annotation.RavenwoodReplace
    @RavenwoodIgnore
    public static void registerCategories() {
        if (IS_USE_SDK_TRACING_API_V3) {
            MQ_CATEGORY_V3.register();
@@ -408,11 +415,6 @@ public final class PerfettoTrace {
        }
    }

    /** Ravenwood replacement for {@link #registerCategories()}. */
    public static void registerCategories$ravenwood() {
        // Tracing currently completely disabled under Ravenwood
    }

    /**
     * Returns whether the calling process attempted to register with the system backend of perfetto
     * by calling {@code register(false)}. A true return does not mean that the registration is