From 42faeabc575f137f2fc1e6a35ef7fa4814648952 Mon Sep 17 00:00:00 2001 From: Matt Pietal Date: Mon, 24 Oct 2022 15:10:32 +0000 Subject: [PATCH] Transitions - add tracing Add sync tracing that includes the name of the 'to' and 'from' states Bug: 195430376 Test: Take trace and view in perfetto Change-Id: I3bc15180edf64ff57bb59d382875a4bc35764689 --- .../KeyguardTransitionRepository.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt index e8532ecfdc375..ab25597b077cb 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt @@ -20,6 +20,7 @@ import android.animation.AnimatorListenerAdapter import android.animation.ValueAnimator import android.animation.ValueAnimator.AnimatorUpdateListener import android.annotation.FloatRange +import android.os.Trace import android.util.Log import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.shared.model.KeyguardState @@ -157,12 +158,36 @@ class KeyguardTransitionRepository @Inject constructor() { value: Float, transitionState: TransitionState ) { + trace(info, transitionState) + if (transitionState == TransitionState.FINISHED) { currentTransitionInfo = null } _transitions.value = TransitionStep(info.from, info.to, value, transitionState) } + private fun trace(info: TransitionInfo, transitionState: TransitionState) { + if ( + transitionState != TransitionState.STARTED && + transitionState != TransitionState.FINISHED + ) { + return + } + val traceName = + "Transition: ${info.from} -> ${info.to} " + + if (info.animator == null) { + "(manual)" + } else { + "" + } + val traceCookie = traceName.hashCode() + if (transitionState == TransitionState.STARTED) { + Trace.beginAsyncSection(traceName, traceCookie) + } else if (transitionState == TransitionState.FINISHED) { + Trace.endAsyncSection(traceName, traceCookie) + } + } + companion object { private const val TAG = "KeyguardTransitionRepository" }