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

Commit 4c004e1f authored by Nicolo' Mazzucato's avatar Nicolo' Mazzucato
Browse files

Group shade related instant event under a track group

This makes shade instant event appear under an "shade" top level group in perfetto when opening a process specific workflow (see aosp/3435719)

Bug: 337016334
Test: perfetto trace
Flag: NONE logging change
Change-Id: I65abed1caf06ac64e3243aed7c9b34d17fd3d3b3
parent 532d71e8
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -24,7 +24,6 @@ import com.android.systemui.common.ui.view.ChoreographerUtils
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.scene.ui.view.WindowRootView
import com.android.systemui.scene.ui.view.WindowRootView
import com.android.systemui.shade.ShadeDisplayChangeLatencyTracker.Companion.TIMEOUT
import com.android.systemui.shade.data.repository.ShadeDisplaysRepository
import com.android.systemui.shade.data.repository.ShadeDisplaysRepository
import com.android.systemui.util.kotlin.getOrNull
import com.android.systemui.util.kotlin.getOrNull
import java.util.Optional
import java.util.Optional
@@ -33,7 +32,6 @@ import javax.inject.Inject
import kotlin.time.Duration.Companion.seconds
import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.filter
@@ -135,7 +133,7 @@ constructor(


    private companion object {
    private companion object {
        const val TAG = "ShadeDisplayLatency"
        const val TAG = "ShadeDisplayLatency"
        val t = TrackTracer(trackName = TAG)
        val t = TrackTracer(trackName = TAG, trackGroup = "shade")
        val TIMEOUT = 3.seconds
        val TIMEOUT = 3.seconds
        const val SHADE_MOVE_ACTION = LatencyTracker.ACTION_SHADE_WINDOW_DISPLAY_CHANGE
        const val SHADE_MOVE_ACTION = LatencyTracker.ACTION_SHADE_WINDOW_DISPLAY_CHANGE
    }
    }
+9 −7
Original line number Original line Diff line number Diff line
@@ -18,13 +18,16 @@ package com.android.systemui.shade


import android.annotation.IntDef
import android.annotation.IntDef
import android.os.Trace
import android.os.Trace
import android.os.Trace.TRACE_TAG_APP as TRACE_TAG
import android.util.Log
import android.util.Log
import androidx.annotation.FloatRange
import androidx.annotation.FloatRange
import com.android.app.tracing.TraceStateLogger
import com.android.app.tracing.TrackGroupUtils.trackGroup
import com.android.app.tracing.coroutines.TrackTracer
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.util.Compile
import com.android.systemui.util.Compile
import java.util.concurrent.CopyOnWriteArrayList
import java.util.concurrent.CopyOnWriteArrayList
import javax.inject.Inject
import javax.inject.Inject
import android.os.Trace.TRACE_TAG_APP as TRACE_TAG


/**
/**
 * A class responsible for managing the notification panel's current state.
 * A class responsible for managing the notification panel's current state.
@@ -38,6 +41,8 @@ class ShadeExpansionStateManager @Inject constructor() {
    private val expansionListeners = CopyOnWriteArrayList<ShadeExpansionListener>()
    private val expansionListeners = CopyOnWriteArrayList<ShadeExpansionListener>()
    private val stateListeners = CopyOnWriteArrayList<ShadeStateListener>()
    private val stateListeners = CopyOnWriteArrayList<ShadeStateListener>()


    private val stateLogger = TraceStateLogger(trackGroup("shade", TRACK_NAME))

    @PanelState private var state: Int = STATE_CLOSED
    @PanelState private var state: Int = STATE_CLOSED
    @FloatRange(from = 0.0, to = 1.0) private var fraction: Float = 0f
    @FloatRange(from = 0.0, to = 1.0) private var fraction: Float = 0f
    private var expanded: Boolean = false
    private var expanded: Boolean = false
@@ -75,7 +80,7 @@ class ShadeExpansionStateManager @Inject constructor() {
    fun onPanelExpansionChanged(
    fun onPanelExpansionChanged(
        @FloatRange(from = 0.0, to = 1.0) fraction: Float,
        @FloatRange(from = 0.0, to = 1.0) fraction: Float,
        expanded: Boolean,
        expanded: Boolean,
        tracking: Boolean
        tracking: Boolean,
    ) {
    ) {
        require(!fraction.isNaN()) { "fraction cannot be NaN" }
        require(!fraction.isNaN()) { "fraction cannot be NaN" }
        val oldState = state
        val oldState = state
@@ -113,11 +118,8 @@ class ShadeExpansionStateManager @Inject constructor() {
        )
        )


        if (Trace.isTagEnabled(TRACE_TAG)) {
        if (Trace.isTagEnabled(TRACE_TAG)) {
            Trace.traceCounter(TRACE_TAG, "panel_expansion", (fraction * 100).toInt())
            TrackTracer.instantForGroup("shade", "panel_expansion", fraction)
            if (state != oldState) {
            stateLogger.log(state.panelStateToString())
                Trace.asyncTraceForTrackEnd(TRACE_TAG, TRACK_NAME, 0)
                Trace.asyncTraceForTrackBegin(TRACE_TAG, TRACK_NAME, state.panelStateToString(), 0)
            }
        }
        }


        val expansionChangeEvent = ShadeExpansionChangeEvent(fraction, expanded, tracking)
        val expansionChangeEvent = ShadeExpansionChangeEvent(fraction, expanded, tracking)
+1 −1
Original line number Original line Diff line number Diff line
@@ -27,7 +27,7 @@ import com.android.app.tracing.coroutines.TrackTracer
 * them across various threads' logs.
 * them across various threads' logs.
 */
 */
object ShadeTraceLogger {
object ShadeTraceLogger {
    private val t = TrackTracer(trackName = "ShadeTraceLogger")
    private val t = TrackTracer(trackName = "ShadeTraceLogger", trackGroup = "shade")


    @JvmStatic
    @JvmStatic
    fun logOnMovedToDisplay(displayId: Int, config: Configuration) {
    fun logOnMovedToDisplay(displayId: Int, config: Configuration) {
+3 −3
Original line number Original line Diff line number Diff line
@@ -22,7 +22,6 @@ import android.animation.ValueAnimator
import android.content.Context
import android.content.Context
import android.content.res.Configuration
import android.content.res.Configuration
import android.os.SystemClock
import android.os.SystemClock
import android.os.Trace
import android.util.IndentingPrintWriter
import android.util.IndentingPrintWriter
import android.util.Log
import android.util.Log
import android.util.MathUtils
import android.util.MathUtils
@@ -33,6 +32,7 @@ import androidx.dynamicanimation.animation.FloatPropertyCompat
import androidx.dynamicanimation.animation.SpringAnimation
import androidx.dynamicanimation.animation.SpringAnimation
import androidx.dynamicanimation.animation.SpringForce
import androidx.dynamicanimation.animation.SpringForce
import com.android.app.animation.Interpolators
import com.android.app.animation.Interpolators
import com.android.app.tracing.coroutines.TrackTracer
import com.android.systemui.Dumpable
import com.android.systemui.Dumpable
import com.android.systemui.animation.ShadeInterpolation
import com.android.systemui.animation.ShadeInterpolation
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
@@ -263,7 +263,7 @@ constructor(
            updateScheduled = false
            updateScheduled = false
            val (blur, zoomOutFromShadeRadius) = computeBlurAndZoomOut()
            val (blur, zoomOutFromShadeRadius) = computeBlurAndZoomOut()
            val opaque = shouldBlurBeOpaque
            val opaque = shouldBlurBeOpaque
            Trace.traceCounter(Trace.TRACE_TAG_APP, "shade_blur_radius", blur)
            TrackTracer.instantForGroup("shade", "shade_blur_radius", blur)
            blurUtils.applyBlur(root.viewRootImpl, blur, opaque)
            blurUtils.applyBlur(root.viewRootImpl, blur, opaque)
            onBlurApplied(blur, zoomOutFromShadeRadius)
            onBlurApplied(blur, zoomOutFromShadeRadius)
        }
        }
@@ -384,7 +384,7 @@ constructor(
            windowRootViewBlurInteractor.onBlurAppliedEvent.collect { appliedBlurRadius ->
            windowRootViewBlurInteractor.onBlurAppliedEvent.collect { appliedBlurRadius ->
                if (updateScheduled) {
                if (updateScheduled) {
                    // Process the blur applied event only if we scheduled the update
                    // Process the blur applied event only if we scheduled the update
                    Trace.traceCounter(Trace.TRACE_TAG_APP, "shade_blur_radius", appliedBlurRadius)
                    TrackTracer.instantForGroup("shade", "shade_blur_radius", appliedBlurRadius)
                    updateScheduled = false
                    updateScheduled = false
                    onBlurApplied(appliedBlurRadius, zoomOutCalculatedFromShadeRadius)
                    onBlurApplied(appliedBlurRadius, zoomOutCalculatedFromShadeRadius)
                } else {
                } else {