Skip to content

Commit 9e30455

Browse files
authored
Merge branch '8.x.x' into feat/extend-backend-e2e-tests
2 parents c038019 + 57b2da5 commit 9e30455

File tree

4 files changed

+54
-8
lines changed

4 files changed

+54
-8
lines changed

sentry-android-core/src/main/java/io/sentry/android/core/ActivityLifecycleIntegration.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -661,16 +661,17 @@ private void setColdStart(final @Nullable Bundle savedInstanceState) {
661661
lastPausedTime = AndroidDateUtils.getCurrentSentryDateTime();
662662
}
663663
if (!firstActivityCreated) {
664+
final @NotNull AppStartMetrics appStartMetrics = AppStartMetrics.getInstance();
664665
// if Activity has savedInstanceState then its a warm start
665666
// https://developer.android.com/topic/performance/vitals/launch-time#warm
666667
// SentryPerformanceProvider sets this already
667668
// pre-performance-v2: back-fill with best guess
668-
if (options != null && !options.isEnablePerformanceV2()) {
669-
AppStartMetrics.getInstance()
670-
.setAppStartType(
671-
savedInstanceState == null
672-
? AppStartMetrics.AppStartType.COLD
673-
: AppStartMetrics.AppStartType.WARM);
669+
if ((options != null && !options.isEnablePerformanceV2())
670+
|| appStartMetrics.getAppStartType() == AppStartMetrics.AppStartType.UNKNOWN) {
671+
appStartMetrics.setAppStartType(
672+
savedInstanceState == null
673+
? AppStartMetrics.AppStartType.COLD
674+
: AppStartMetrics.AppStartType.WARM);
674675
}
675676
}
676677
}

sentry-android-core/src/test/java/io/sentry/android/core/ActivityFramesTrackerTest.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ class ActivityFramesTrackerTest {
3030
val handler = mock<MainLooperHandler>()
3131
val options = SentryAndroidOptions()
3232

33+
init {
34+
// ActivityFramesTracker is used only if performanceV2 is disabled
35+
options.isEnablePerformanceV2 = false
36+
}
37+
3338
fun getSut(mockAggregator: Boolean = true): ActivityFramesTracker {
3439
return if (mockAggregator) {
3540
ActivityFramesTracker(loadClass, options, handler, aggregator)

sentry-android-core/src/test/java/io/sentry/android/core/ActivityLifecycleIntegrationTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,7 @@ class ActivityLifecycleIntegrationTest {
817817
val appStartMetrics = AppStartMetrics.getInstance()
818818
appStartMetrics.appStartType = AppStartType.WARM
819819
appStartMetrics.sdkInitTimeSpan.setStoppedAt(2)
820+
appStartMetrics.appStartTimeSpan.setStoppedAt(2)
820821

821822
val endDate = appStartMetrics.sdkInitTimeSpan.projectedStopTimestamp
822823

sentry-android-core/src/test/java/io/sentry/android/core/AndroidOptionsInitializerTest.kt

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ class AndroidOptionsInitializerTest {
524524
}
525525

526526
@Test
527-
fun `When Activity Frames Tracking is enabled, the Activity Frames Tracker should be available`() {
527+
fun `When Activity Frames Tracking is enabled, the Activity Frames Tracker should be unavailable`() {
528528
fixture.initSut(
529529
hasAppContext = true,
530530
useRealContext = true,
@@ -533,6 +533,25 @@ class AndroidOptionsInitializerTest {
533533
}
534534
)
535535

536+
val activityLifeCycleIntegration = fixture.sentryOptions.integrations
537+
.first { it is ActivityLifecycleIntegration }
538+
539+
assertFalse(
540+
(activityLifeCycleIntegration as ActivityLifecycleIntegration).activityFramesTracker.isFrameMetricsAggregatorAvailable
541+
)
542+
}
543+
544+
@Test
545+
fun `When Activity Frames Tracking is enabled, the Activity Frames Tracker should be available if perfv2 is false`() {
546+
fixture.initSut(
547+
hasAppContext = true,
548+
useRealContext = true,
549+
configureOptions = {
550+
isEnablePerformanceV2 = false
551+
isEnableFramesTracking = true
552+
}
553+
)
554+
536555
val activityLifeCycleIntegration = fixture.sentryOptions.integrations
537556
.first { it is ActivityLifecycleIntegration }
538557

@@ -556,12 +575,32 @@ class AndroidOptionsInitializerTest {
556575
}
557576

558577
@Test
559-
fun `When Frames Tracking is initially disabled, but enabled via configureOptions it should be available`() {
578+
fun `When Frames Tracking is initially disabled, but enabled via configureOptions it should be unavailable`() {
579+
fixture.sentryOptions.isEnableFramesTracking = false
580+
fixture.initSut(
581+
hasAppContext = true,
582+
useRealContext = true,
583+
configureOptions = {
584+
isEnableFramesTracking = true
585+
}
586+
)
587+
588+
val activityLifeCycleIntegration = fixture.sentryOptions.integrations
589+
.first { it is ActivityLifecycleIntegration }
590+
591+
assertFalse(
592+
(activityLifeCycleIntegration as ActivityLifecycleIntegration).activityFramesTracker.isFrameMetricsAggregatorAvailable
593+
)
594+
}
595+
596+
@Test
597+
fun `When Frames Tracking is initially disabled, but enabled via configureOptions it should be available if perfv2 is false`() {
560598
fixture.sentryOptions.isEnableFramesTracking = false
561599
fixture.initSut(
562600
hasAppContext = true,
563601
useRealContext = true,
564602
configureOptions = {
603+
isEnablePerformanceV2 = false
565604
isEnableFramesTracking = true
566605
}
567606
)

0 commit comments

Comments
 (0)