@@ -10,6 +10,7 @@ import io.embrace.android.embracesdk.fakes.FakeEmbLogger
1010import io.embrace.android.embracesdk.fakes.injection.FakeInitModule
1111import io.embrace.android.embracesdk.internal.arch.schema.PrivateSpan
1212import io.embrace.android.embracesdk.internal.capture.activity.hasPrePostEvents
13+ import io.embrace.android.embracesdk.internal.capture.startup.AppStartupTraceEmitter.Companion.ACTIVITY_FIRST_DRAW_SPAN
1314import io.embrace.android.embracesdk.internal.capture.startup.AppStartupTraceEmitter.Companion.ACTIVITY_INIT_DELAY_SPAN
1415import io.embrace.android.embracesdk.internal.capture.startup.AppStartupTraceEmitter.Companion.ACTIVITY_INIT_SPAN
1516import io.embrace.android.embracesdk.internal.capture.startup.AppStartupTraceEmitter.Companion.ACTIVITY_LOAD_SPAN
@@ -27,6 +28,7 @@ import io.embrace.android.embracesdk.internal.spans.SpanService
2728import io.embrace.android.embracesdk.internal.spans.SpanSink
2829import io.embrace.android.embracesdk.internal.spans.findAttributeValue
2930import io.embrace.android.embracesdk.internal.ui.hasRenderEvent
31+ import io.embrace.android.embracesdk.internal.ui.supportFrameCommitCallback
3032import io.embrace.android.embracesdk.internal.utils.BuildVersionChecker
3133import io.embrace.android.embracesdk.spans.ErrorCode
3234import io.opentelemetry.sdk.common.Clock
@@ -55,6 +57,7 @@ internal class AppStartupTraceEmitterTest {
5557 private var firePreAndPostCreate: Boolean = true
5658 private var trackProcessStart: Boolean = true
5759 private var hasRenderEvent = true
60+ private var hasFrameCommitEvent = true
5861
5962 private lateinit var clock: FakeClock
6063 private lateinit var otelClock: Clock
@@ -79,6 +82,7 @@ internal class AppStartupTraceEmitterTest {
7982 firePreAndPostCreate = hasPrePostEvents(BuildVersionChecker )
8083 trackProcessStart = BuildVersionChecker .isAtLeast(VERSION_CODES .N )
8184 hasRenderEvent = hasRenderEvent(BuildVersionChecker )
85+ hasFrameCommitEvent = supportFrameCommitCallback(BuildVersionChecker )
8286 }
8387
8488 @Config(sdk = [VERSION_CODES .TIRAMISU ])
@@ -191,7 +195,7 @@ internal class AppStartupTraceEmitterTest {
191195 assertNotNull(embraceInitSpan())
192196 assertNotNull(initGapSpan())
193197 assertNotNull(activityInitSpan())
194- assertNull(firstFrameRenderSpan ())
198+ assertNull(firstFrameRenderedSpan ())
195199 }
196200 }
197201
@@ -219,7 +223,7 @@ internal class AppStartupTraceEmitterTest {
219223 assertNotNull(embraceInitSpan())
220224 assertNotNull(initGapSpan())
221225 assertNotNull(activityInitSpan())
222- assertNotNull(firstFrameRenderSpan ())
226+ assertNotNull(firstFrameRenderedSpan ())
223227 assertNull(appReadySpan())
224228 }
225229 }
@@ -264,7 +268,7 @@ internal class AppStartupTraceEmitterTest {
264268 assertEquals(abandonTime, endTimeNanos.nanosToMillis())
265269 }
266270 assertNotNull(activityInitSpan())
267- assertNotNull(firstFrameRenderSpan ())
271+ assertNotNull(firstFrameRenderedSpan ())
268272 assertNull(appReadySpan())
269273 }
270274 }
@@ -654,11 +658,16 @@ internal class AppStartupTraceEmitterTest {
654658 with (activityInitTimestamps) {
655659 assertChildSpan(spanMap.activityInitSpan(), startupActivityStart, startupActivityEnd)
656660 if (hasRenderEvent) {
657- assertChildSpan(spanMap.firstFrameRenderSpan(), startupActivityEnd, uiLoadEnd)
661+ val renderSpan = if (hasFrameCommitEvent) {
662+ spanMap.firstFrameRenderedSpan()
663+ } else {
664+ spanMap.firstFrameDrawSpan()
665+ }
666+ assertChildSpan(renderSpan, startupActivityEnd, uiLoadEnd)
658667 assertNull(spanMap.activityResumeSpan())
659668 } else {
660669 assertChildSpan(spanMap.activityResumeSpan(), startupActivityEnd, uiLoadEnd)
661- assertNull(spanMap.firstFrameRenderSpan ())
670+ assertNull(spanMap.firstFrameRenderedSpan ())
662671 }
663672
664673 if (manualEnd) {
@@ -810,7 +819,8 @@ internal class AppStartupTraceEmitterTest {
810819 private fun Map <String , EmbraceSpanData ?>.embraceInitSpan () = this [" emb-${EMBRACE_INIT_SPAN } " ]
811820 private fun Map <String , EmbraceSpanData ?>.initGapSpan () = this [" emb-${ACTIVITY_INIT_DELAY_SPAN } " ]
812821 private fun Map <String , EmbraceSpanData ?>.activityInitSpan () = this [" emb-${ACTIVITY_INIT_SPAN } " ]
813- private fun Map <String , EmbraceSpanData ?>.firstFrameRenderSpan () = this [" emb-${ACTIVITY_RENDER_SPAN } " ]
822+ private fun Map <String , EmbraceSpanData ?>.firstFrameRenderedSpan () = this [" emb-${ACTIVITY_RENDER_SPAN } " ]
823+ private fun Map <String , EmbraceSpanData ?>.firstFrameDrawSpan () = this [" emb-${ACTIVITY_FIRST_DRAW_SPAN } " ]
814824 private fun Map <String , EmbraceSpanData ?>.activityResumeSpan () = this [" emb-${ACTIVITY_LOAD_SPAN } " ]
815825 private fun Map <String , EmbraceSpanData ?>.appReadySpan () = this [" emb-${APP_READY_SPAN } " ]
816826 private fun Map <String , EmbraceSpanData ?>.customSpan () = this [" custom-span" ]
0 commit comments