Skip to content

Commit afe23b6

Browse files
authored
Populate DataCollectionStatus for Crashlytics and Perf in Sessions (#5205)
1 parent 824195e commit afe23b6

File tree

6 files changed

+36
-9
lines changed

6 files changed

+36
-9
lines changed

firebase-sessions/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
* [fixed] Fixed NPE when no version name is
44
set ([#5195](//github.com/firebase/firebase-android-sdk/issues/5195)).
5+
* [fixed] Populate DataCollectionStatus fields for Crashlytics and Perf.
56

67
# 1.0.0
78

firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ internal constructor(
139139
}
140140

141141
sessionCoordinator.attemptLoggingSessionEvent(
142-
SessionEvents.startSession(firebaseApp, sessionDetails, sessionSettings)
142+
SessionEvents.startSession(firebaseApp, sessionDetails, sessionSettings, subscribers)
143143
)
144144
}
145145

firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SessionEvent.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ internal data class SessionInfo(
7272

7373
/** Contains the data collection state for all dependent SDKs and sampling info */
7474
internal data class DataCollectionStatus(
75-
val performance: DataCollectionState = DataCollectionState.COLLECTION_ENABLED,
76-
val crashlytics: DataCollectionState = DataCollectionState.COLLECTION_ENABLED,
75+
val performance: DataCollectionState = DataCollectionState.COLLECTION_SDK_NOT_INSTALLED,
76+
val crashlytics: DataCollectionState = DataCollectionState.COLLECTION_SDK_NOT_INSTALLED,
7777
val sessionSamplingRate: Double = 1.0,
7878
)
7979

firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SessionEvents.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import android.os.Build
2020
import com.google.firebase.FirebaseApp
2121
import com.google.firebase.encoders.DataEncoder
2222
import com.google.firebase.encoders.json.JsonDataEncoderBuilder
23+
import com.google.firebase.sessions.api.SessionSubscriber
2324
import com.google.firebase.sessions.settings.SessionsSettings
2425

2526
/** Contains functions for [SessionEvent]s. */
@@ -40,6 +41,7 @@ internal object SessionEvents {
4041
firebaseApp: FirebaseApp,
4142
sessionDetails: SessionDetails,
4243
sessionsSettings: SessionsSettings,
44+
subscribers: Map<SessionSubscriber.Name, SessionSubscriber> = emptyMap(),
4345
) =
4446
SessionEvent(
4547
eventType = EventType.SESSION_START,
@@ -49,7 +51,11 @@ internal object SessionEvents {
4951
sessionDetails.firstSessionId,
5052
sessionDetails.sessionIndex,
5153
eventTimestampUs = sessionDetails.sessionStartTimestampUs,
52-
DataCollectionStatus(sessionSamplingRate = sessionsSettings.samplingRate),
54+
DataCollectionStatus(
55+
performance = toDataCollectionState(subscribers[SessionSubscriber.Name.PERFORMANCE]),
56+
crashlytics = toDataCollectionState(subscribers[SessionSubscriber.Name.CRASHLYTICS]),
57+
sessionSamplingRate = sessionsSettings.samplingRate,
58+
),
5359
),
5460
applicationInfo = getApplicationInfo(firebaseApp)
5561
)
@@ -81,4 +87,13 @@ internal object SessionEvents {
8187
)
8288
)
8389
}
90+
91+
private fun toDataCollectionState(subscriber: SessionSubscriber?): DataCollectionState =
92+
if (subscriber == null) {
93+
DataCollectionState.COLLECTION_SDK_NOT_INSTALLED
94+
} else if (subscriber.isDataCollectionEnabled) {
95+
DataCollectionState.COLLECTION_ENABLED
96+
} else {
97+
DataCollectionState.COLLECTION_DISABLED
98+
}
8499
}

firebase-sessions/src/test/kotlin/com/google/firebase/sessions/SessionEventEncoderTest.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
2121
import com.google.common.truth.Truth.assertThat
2222
import com.google.firebase.FirebaseApp
2323
import com.google.firebase.sessions.SessionEvents.SESSION_EVENT_ENCODER
24+
import com.google.firebase.sessions.api.SessionSubscriber
2425
import com.google.firebase.sessions.settings.SessionsSettings
2526
import com.google.firebase.sessions.testing.FakeFirebaseApp
27+
import com.google.firebase.sessions.testing.FakeSessionSubscriber
2628
import com.google.firebase.sessions.testing.FakeSettingsProvider
2729
import com.google.firebase.sessions.testing.TestSessionEventData
2830
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -51,6 +53,15 @@ class SessionEventEncoderTest {
5153
localOverrideSettings = FakeSettingsProvider(),
5254
remoteSettings = FakeSettingsProvider(),
5355
),
56+
subscribers =
57+
mapOf(
58+
SessionSubscriber.Name.CRASHLYTICS to FakeSessionSubscriber(),
59+
SessionSubscriber.Name.PERFORMANCE to
60+
FakeSessionSubscriber(
61+
isDataCollectionEnabled = false,
62+
sessionSubscriberName = SessionSubscriber.Name.PERFORMANCE,
63+
),
64+
),
5465
)
5566

5667
val json = SESSION_EVENT_ENCODER.encode(sessionEvent)
@@ -66,7 +77,7 @@ class SessionEventEncoderTest {
6677
"sessionIndex":3,
6778
"eventTimestampUs":12340000,
6879
"dataCollectionStatus":{
69-
"performance":2,
80+
"performance":3,
7081
"crashlytics":2,
7182
"sessionSamplingRate":1.0
7283
},
@@ -133,8 +144,8 @@ class SessionEventEncoderTest {
133144
"sessionIndex":0,
134145
"eventTimestampUs":0,
135146
"dataCollectionStatus":{
136-
"performance":2,
137-
"crashlytics":2,
147+
"performance":1,
148+
"crashlytics":1,
138149
"sessionSamplingRate":1.0
139150
},
140151
"firebaseInstallationId":""

firebase-sessions/src/test/kotlin/com/google/firebase/sessions/testing/TestSessionEventData.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ internal object TestSessionEventData {
4343

4444
val TEST_DATA_COLLECTION_STATUS =
4545
DataCollectionStatus(
46-
performance = DataCollectionState.COLLECTION_ENABLED,
47-
crashlytics = DataCollectionState.COLLECTION_ENABLED,
46+
performance = DataCollectionState.COLLECTION_SDK_NOT_INSTALLED,
47+
crashlytics = DataCollectionState.COLLECTION_SDK_NOT_INSTALLED,
4848
sessionSamplingRate = 1.0
4949
)
5050

0 commit comments

Comments
 (0)