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

Commit 0267d7a7 authored by Peter Kalauskas's avatar Peter Kalauskas
Browse files

Use aconfig for coroutine tracing flag

Replace legacy coroutine tracing flag with new aconfig flag

Test: atest SystemUITests
Bug: 289353932
Flag: ACONFIG com.android.systemui.coroutine_tracing DISABLED
Change-Id: I073fe583757dcea0773a2149428fabf77b769b84
parent 5cfe5d02
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
@@ -622,10 +622,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
    }
}