Merge "Trace fold/unfold animation with atrace"

This commit is contained in:
TreeHugger Robot
2022-01-05 18:13:41 +00:00
committed by Android (Google) Code Review
4 changed files with 41 additions and 11 deletions

View File

@@ -30,6 +30,7 @@ import com.android.systemui.unfold.util.ScaleAwareTransitionProgressProvider
import com.android.systemui.unfold.updates.DeviceFoldStateProvider
import com.android.systemui.unfold.updates.hinge.EmptyHingeAngleProvider
import com.android.systemui.unfold.updates.hinge.HingeSensorAngleProvider
import com.android.systemui.unfold.util.ATraceLoggerTransitionProgressListener
import java.lang.IllegalStateException
import java.util.concurrent.Executor
@@ -46,7 +47,8 @@ fun createUnfoldTransitionProgressProvider(
deviceStateManager: DeviceStateManager,
sensorManager: SensorManager,
mainHandler: Handler,
mainExecutor: Executor
mainExecutor: Executor,
tracingTagPrefix: String
): UnfoldTransitionProgressProvider {
if (!config.isEnabled) {
@@ -76,9 +78,12 @@ fun createUnfoldTransitionProgressProvider(
FixedTimingTransitionProgressProvider(foldStateProvider)
}
return ScaleAwareTransitionProgressProvider(
unfoldTransitionProgressProvider,
context.contentResolver
)
unfoldTransitionProgressProvider,
context.contentResolver
).apply {
// Always present callback that logs animation beginning and end.
addCallback(ATraceLoggerTransitionProgressListener(tracingTagPrefix))
}
}
fun createConfig(context: Context): UnfoldTransitionConfig =

View File

@@ -32,12 +32,7 @@ import com.android.systemui.unfold.updates.FoldStateProvider
import com.android.systemui.unfold.updates.FoldStateProvider.FoldUpdate
import com.android.systemui.unfold.updates.FoldStateProvider.FoldUpdatesListener
/**
* Maps fold updates to unfold transition progress using DynamicAnimation.
*
* TODO(b/193793338) Current limitations:
* - doesn't handle postures
*/
/** Maps fold updates to unfold transition progress using DynamicAnimation. */
internal class PhysicsBasedUnfoldTransitionProgressProvider(
private val foldStateProvider: FoldStateProvider
) :

View File

@@ -0,0 +1,29 @@
package com.android.systemui.unfold.util
import android.os.Trace
import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener
/**
* Listener that logs start and end of the fold-unfold transition.
*
* [tracePrefix] arg helps in differentiating those. Currently, this is expected to be logged twice
* for each fold/unfold: in (1) systemui and (2) launcher process.
*/
class ATraceLoggerTransitionProgressListener(tracePrefix: String) : TransitionProgressListener {
private val traceName = "$tracePrefix#$UNFOLD_TRANSITION_TRACE_NAME"
override fun onTransitionStarted() {
Trace.beginAsyncSection(traceName, /* cookie= */ 0)
}
override fun onTransitionFinished() {
Trace.endAsyncSection(traceName, /* cookie= */ 0)
}
override fun onTransitionProgress(progress: Float) {
Trace.setCounter(traceName, (progress * 100).toLong())
}
}
private const val UNFOLD_TRANSITION_TRACE_NAME = "FoldUnfoldTransitionInProgress"

View File

@@ -58,7 +58,8 @@ class UnfoldTransitionModule {
deviceStateManager,
sensorManager,
handler,
executor
executor,
tracingTagPrefix = "systemui"
)
)
} else {