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

Commit 5413f36e authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Enable all PerfettoTrace methods

Fix: 438577983
Fix: 438575837
Flag: TEST_ONLY
Test: $ANDROID_BUILD_TOP/frameworks/base/ravenwood/scripts/run-ravenwood-tests.sh -s
Change-Id: I134221e53d3cecdbf78f6ea127063a5599098623
parent 91f3a2db
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