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

Commit f43532ad authored by Peter Kalauskas's avatar Peter Kalauskas Committed by Android (Google) Code Review
Browse files

Merge "Use aconfig for coroutine tracing flag" into main

parents debaa1ed 0267d7a7
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -17,9 +17,9 @@
package com.android.systemui.flags

import android.util.Log
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.flags.ConditionalRestarter.Condition
import com.android.systemui.util.kotlin.UnflaggedApplication
import com.android.systemui.util.kotlin.UnflaggedBackground
import java.util.concurrent.TimeUnit
import javax.inject.Inject
import javax.inject.Named
@@ -39,8 +39,8 @@ constructor(
    private val systemExitRestarter: SystemExitRestarter,
    private val conditions: Set<@JvmSuppressWildcards Condition>,
    @Named(RESTART_DELAY) private val restartDelaySec: Long,
    @UnflaggedApplication private val applicationScope: CoroutineScope,
    @UnflaggedBackground private val backgroundDispatcher: CoroutineContext,
    @Application private val applicationScope: CoroutineScope,
    @Background private val backgroundDispatcher: CoroutineContext,
) : Restarter {

    private var pendingReason = ""
+0 −4
Original line number Diff line number Diff line
@@ -604,10 +604,6 @@ object Flags {
    val WARN_ON_BLOCKING_BINDER_TRANSACTIONS =
        unreleasedFlag("warn_on_blocking_binder_transactions")

    @JvmField
    val COROUTINE_TRACING =
        unreleasedFlag("coroutine_tracing")

    // TODO(b/283071711): Tracking bug
    @JvmField
    val TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK =
+6 −49
Original line number Diff line number Diff line
@@ -5,8 +5,7 @@ import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dagger.qualifiers.Tracing
import com.android.systemui.flags.FeatureFlagsClassic
import com.android.systemui.flags.Flags
import com.android.systemui.Flags.coroutineTracing
import com.android.app.tracing.TraceUtils.Companion.coroutineTracingIsEnabled
import com.android.app.tracing.TraceContextElement
import dagger.Module
@@ -15,32 +14,9 @@ import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import javax.inject.Qualifier
import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.EmptyCoroutineContext

/** Key associated with a [Boolean] flag that enables or disables the coroutine tracing feature. */
@Qualifier
annotation class CoroutineTracingEnabledKey

/**
 * Same as [@Application], but does not make use of flags. This should only be used when early usage
 * of [@Application] would introduce a circular dependency on [FeatureFlagsClassic].
 */
@Qualifier
@MustBeDocumented
@Retention(AnnotationRetention.RUNTIME)
annotation class UnflaggedApplication

/**
 * Same as [@Background], but does not make use of flags. This should only be used when early usage
 * of [@Application] would introduce a circular dependency on [FeatureFlagsClassic].
 */
@Qualifier
@MustBeDocumented
@Retention(AnnotationRetention.RUNTIME)
annotation class UnflaggedBackground

/** Providers for various coroutines-related constructs. */
@Module
class CoroutinesModule {
@@ -51,11 +27,6 @@ class CoroutinesModule {
            @Main dispatcherContext: CoroutineContext,
    ): CoroutineScope = CoroutineScope(dispatcherContext)

    @Provides
    @SysUISingleton
    @UnflaggedApplication
    fun unflaggedApplicationScope(): CoroutineScope = CoroutineScope(Dispatchers.Main.immediate)

    @Provides
    @SysUISingleton
    @Main
@@ -98,28 +69,14 @@ class CoroutinesModule {
        return Dispatchers.IO + tracingCoroutineContext
    }

    @Provides
    @UnflaggedBackground
    @SysUISingleton
    fun unflaggedBackgroundCoroutineContext(): CoroutineContext {
        return Dispatchers.IO
    }

    @OptIn(ExperimentalCoroutinesApi::class)
    @Provides
    @Tracing
    @SysUISingleton
    fun tracingCoroutineContext(
        @CoroutineTracingEnabledKey enableTracing: Boolean
    ): CoroutineContext = if (enableTracing) TraceContextElement() else EmptyCoroutineContext

    companion object {
        @[Provides CoroutineTracingEnabledKey]
        fun provideIsCoroutineTracingEnabledKey(featureFlags: FeatureFlagsClassic): Boolean {
            return if (featureFlags.isEnabled(Flags.COROUTINE_TRACING)) {
    fun tracingCoroutineContext(): CoroutineContext {
        return if (coroutineTracing()) {
            coroutineTracingIsEnabled = true
                true
            } else false
        }
            TraceContextElement()
        } else EmptyCoroutineContext
    }
}