Merge "Trace fold/unfold animation with atrace"
This commit is contained in:
committed by
Android (Google) Code Review
commit
da94cf3658
@@ -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 =
|
||||
|
||||
@@ -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
|
||||
) :
|
||||
|
||||
@@ -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"
|
||||
@@ -58,7 +58,8 @@ class UnfoldTransitionModule {
|
||||
deviceStateManager,
|
||||
sensorManager,
|
||||
handler,
|
||||
executor
|
||||
executor,
|
||||
tracingTagPrefix = "systemui"
|
||||
)
|
||||
)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user