6
6
7
7
package com.datadog.android.rum.internal.domain.scope
8
8
9
- import android.util.Log
10
9
import androidx.annotation.WorkerThread
11
10
import com.datadog.android.api.InternalLogger
12
11
import com.datadog.android.api.feature.Feature
@@ -81,20 +80,9 @@ internal open class RumViewScope(
81
80
private var globalAttributes: Map <String , Any ?> = resolveGlobalAttributes(sdkCore)
82
81
private val internalAttributes: MutableMap <String , Any ?> = mutableMapOf ()
83
82
84
- private var sessionId: String = parentScope.getRumContext().sessionId
85
- internal var viewId: String = UUID .randomUUID().toString()
86
- set(value) {
87
- oldViewIds + = field
88
- field = value
89
- val rumContext = getRumContext()
90
- if (rumContext.syntheticsTestId != null ) {
91
- Log .i(RumScope .SYNTHETICS_LOGCAT_TAG , " _dd.application.id=${rumContext.applicationId} " )
92
- Log .i(RumScope .SYNTHETICS_LOGCAT_TAG , " _dd.session.id=${rumContext.sessionId} " )
93
- Log .i(RumScope .SYNTHETICS_LOGCAT_TAG , " _dd.view.id=$viewId " )
94
- }
95
- }
83
+ private val sessionId: String = parentScope.getRumContext().sessionId
84
+ internal val viewId: String = UUID .randomUUID().toString()
96
85
97
- private val oldViewIds = mutableSetOf<String >()
98
86
private val startedNanos: Long = eventTime.nanoTime
99
87
internal var stoppedNanos: Long = eventTime.nanoTime
100
88
internal var viewLoadingTime: Long? = null
@@ -171,9 +159,9 @@ internal open class RumViewScope(
171
159
172
160
val rumContext = parentScope.getRumContext()
173
161
if (rumContext.syntheticsTestId != null ) {
174
- Log .i( RumScope . SYNTHETICS_LOGCAT_TAG , " _dd.application.id= ${ rumContext.applicationId} " )
175
- Log .i( RumScope . SYNTHETICS_LOGCAT_TAG , " _dd.session.id= ${ rumContext.sessionId} " )
176
- Log .i( RumScope . SYNTHETICS_LOGCAT_TAG , " _dd.view.id= $viewId " )
162
+ logSynthetics( " _dd.application.id" , rumContext.applicationId)
163
+ logSynthetics( " _dd.session.id" , rumContext.sessionId)
164
+ logSynthetics( " _dd.view.id" , viewId )
177
165
}
178
166
networkSettledMetricResolver.viewWasCreated(eventTime.nanoTime)
179
167
interactionToNextViewMetricResolver.onViewCreated(viewId, eventTime.nanoTime)
@@ -233,29 +221,46 @@ internal open class RumViewScope(
233
221
}
234
222
235
223
override fun getRumContext (): RumContext {
236
- val parentContext = parentScope.getRumContext()
237
- if (parentContext.sessionId != sessionId) {
238
- sessionId = parentContext.sessionId
239
- viewId = UUID .randomUUID().toString()
240
- }
241
-
242
- return parentContext
243
- .copy(
244
- viewId = viewId,
245
- viewName = key.name,
246
- viewUrl = url,
247
- actionId = (activeActionScope as ? RumActionScope )?.actionId,
248
- viewType = type,
249
- viewTimestamp = eventTimestamp,
250
- viewTimestampOffset = serverTimeOffsetInMs,
251
- hasReplay = false
252
- )
224
+ return parentScope.getRumContext().copy(
225
+ viewId = viewId,
226
+ viewName = key.name,
227
+ viewUrl = url,
228
+ actionId = (activeActionScope as ? RumActionScope )?.actionId,
229
+ viewType = type,
230
+ viewTimestamp = eventTimestamp,
231
+ viewTimestampOffset = serverTimeOffsetInMs,
232
+ hasReplay = false
233
+ )
253
234
}
254
235
255
236
override fun isActive (): Boolean {
256
237
return ! stopped
257
238
}
258
239
240
+ internal fun renew (newEventTime : Time ): RumViewScope {
241
+ return RumViewScope (
242
+ parentScope = this ,
243
+ sdkCore = sdkCore,
244
+ sessionEndedMetricDispatcher = sessionEndedMetricDispatcher,
245
+ key = key,
246
+ eventTime = newEventTime,
247
+ initialAttributes = eventAttributes,
248
+ viewChangedListener = viewChangedListener,
249
+ firstPartyHostHeaderTypeResolver = firstPartyHostHeaderTypeResolver,
250
+ cpuVitalMonitor = cpuVitalMonitor,
251
+ memoryVitalMonitor = memoryVitalMonitor,
252
+ frameRateVitalMonitor = frameRateVitalMonitor,
253
+ featuresContextResolver = featuresContextResolver,
254
+ type = type,
255
+ trackFrustrations = trackFrustrations,
256
+ sampleRate = sampleRate,
257
+ interactionToNextViewMetricResolver = interactionToNextViewMetricResolver,
258
+ networkSettledMetricResolver = networkSettledMetricResolver,
259
+ viewEndedMetricDispatcher = viewEndedMetricDispatcher,
260
+ slowFramesListener = slowFramesListener
261
+ )
262
+ }
263
+
259
264
// endregion
260
265
261
266
// region Internal
@@ -729,7 +734,7 @@ internal open class RumViewScope(
729
734
event : RumRawEvent .ResourceSent ,
730
735
writer : DataWriter <Any >
731
736
) {
732
- if (event.viewId == viewId || event.viewId in oldViewIds ) {
737
+ if (event.viewId == viewId) {
733
738
pendingResourceCount--
734
739
resourceCount++
735
740
networkSettledMetricResolver.resourceWasStopped(
@@ -747,7 +752,7 @@ internal open class RumViewScope(
747
752
event : RumRawEvent .ActionSent ,
748
753
writer : DataWriter <Any >
749
754
) {
750
- if (event.viewId == viewId || event.viewId in oldViewIds ) {
755
+ if (event.viewId == viewId) {
751
756
pendingActionCount--
752
757
actionCount++
753
758
frustrationCount + = event.frustrationCount
@@ -767,7 +772,7 @@ internal open class RumViewScope(
767
772
event : RumRawEvent .LongTaskSent ,
768
773
writer : DataWriter <Any >
769
774
) {
770
- if (event.viewId == viewId || event.viewId in oldViewIds ) {
775
+ if (event.viewId == viewId) {
771
776
pendingLongTaskCount--
772
777
longTaskCount++
773
778
if (event.isFrozenFrame) {
@@ -783,7 +788,7 @@ internal open class RumViewScope(
783
788
event : RumRawEvent .ErrorSent ,
784
789
writer : DataWriter <Any >
785
790
) {
786
- if (event.viewId == viewId || event.viewId in oldViewIds ) {
791
+ if (event.viewId == viewId) {
787
792
pendingErrorCount--
788
793
errorCount++
789
794
if (event.resourceId != null && event.resourceEndTimestampInNanos != null ) {
@@ -799,20 +804,20 @@ internal open class RumViewScope(
799
804
}
800
805
801
806
private fun onResourceDropped (event : RumRawEvent .ResourceDropped ) {
802
- if (event.viewId == viewId || event.viewId in oldViewIds ) {
807
+ if (event.viewId == viewId) {
803
808
networkSettledMetricResolver.resourceWasDropped(event.resourceId)
804
809
pendingResourceCount--
805
810
}
806
811
}
807
812
808
813
private fun onActionDropped (event : RumRawEvent .ActionDropped ) {
809
- if (event.viewId == viewId || event.viewId in oldViewIds ) {
814
+ if (event.viewId == viewId) {
810
815
pendingActionCount--
811
816
}
812
817
}
813
818
814
819
private fun onErrorDropped (event : RumRawEvent .ErrorDropped ) {
815
- if (event.viewId == viewId || event.viewId in oldViewIds ) {
820
+ if (event.viewId == viewId) {
816
821
pendingErrorCount--
817
822
if (event.resourceId != null ) {
818
823
networkSettledMetricResolver.resourceWasDropped(event.resourceId)
@@ -821,7 +826,7 @@ internal open class RumViewScope(
821
826
}
822
827
823
828
private fun onLongTaskDropped (event : RumRawEvent .LongTaskDropped ) {
824
- if (event.viewId == viewId || event.viewId in oldViewIds ) {
829
+ if (event.viewId == viewId) {
825
830
pendingLongTaskCount--
826
831
if (event.isFrozenFrame) {
827
832
pendingFrozenFrameCount--
@@ -1423,6 +1428,14 @@ internal open class RumViewScope(
1423
1428
}
1424
1429
}
1425
1430
1431
+ private fun logSynthetics (key : String , value : String ) {
1432
+ sdkCore.internalLogger.log(
1433
+ level = InternalLogger .Level .INFO ,
1434
+ target = InternalLogger .Target .USER ,
1435
+ messageBuilder = { " $key =$value " }
1436
+ )
1437
+ }
1438
+
1426
1439
// endregion
1427
1440
1428
1441
companion object {
0 commit comments