Skip to content

Commit d1de5f3

Browse files
Changed tracked action to accept ClocksState (#4177)
1 parent a7154bb commit d1de5f3

4 files changed

Lines changed: 22 additions & 12 deletions

File tree

packages/rum-core/src/domain/action/trackAction.spec.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { RelativeTime, TimeStamp } from '@datadog/browser-core'
1+
import type { Duration, RelativeTime, TimeStamp } from '@datadog/browser-core'
22
import { registerCleanupTask } from '@datadog/browser-core/test'
33
import { LifeCycle, LifeCycleEventType } from '../lifeCycle'
44
import { RumEventType } from '../../rawRumEvent.types'
@@ -34,6 +34,16 @@ describe('trackAction', () => {
3434

3535
expect(action1.id).not.toBe(action2.id)
3636
})
37+
38+
it('should compute duration from timestamps, not relative times', () => {
39+
const startClocks = { relative: 100 as RelativeTime, timeStamp: 1000 as TimeStamp }
40+
const trackedAction = actionTracker.createTrackedAction(startClocks)
41+
42+
const endClocks = { relative: 300 as RelativeTime, timeStamp: 1050 as TimeStamp }
43+
trackedAction.stop(endClocks)
44+
45+
expect(trackedAction.duration).toBe(50 as Duration)
46+
})
3747
})
3848

3949
describe('event counting', () => {
@@ -65,7 +75,7 @@ describe('trackAction', () => {
6575
})
6676

6777
it('should stop counting events after action is stopped', () => {
68-
trackedAction.stop(200 as RelativeTime)
78+
trackedAction.stop({ relative: 200 as RelativeTime, timeStamp: 1100 as TimeStamp })
6979

7080
lifeCycle.notify(LifeCycleEventType.RUM_EVENT_COLLECTED, {
7181
type: RumEventType.ERROR,
@@ -93,7 +103,7 @@ describe('trackAction', () => {
93103
const startClocks = { relative: 100 as RelativeTime, timeStamp: 1000 as TimeStamp }
94104
const trackedAction = actionTracker.createTrackedAction(startClocks)
95105

96-
trackedAction.stop(200 as RelativeTime)
106+
trackedAction.stop({ relative: 200 as RelativeTime, timeStamp: 1100 as TimeStamp })
97107

98108
expect(actionTracker.findActionId()).toBeUndefined()
99109
})
@@ -102,7 +112,7 @@ describe('trackAction', () => {
102112
const startClocks = { relative: 100 as RelativeTime, timeStamp: 1000 as TimeStamp }
103113
const trackedAction = actionTracker.createTrackedAction(startClocks)
104114

105-
trackedAction.stop(200 as RelativeTime)
115+
trackedAction.stop({ relative: 200 as RelativeTime, timeStamp: 1100 as TimeStamp })
106116

107117
expect(actionTracker.findActionId(150 as RelativeTime)).toEqual([trackedAction.id])
108118
})
@@ -111,7 +121,7 @@ describe('trackAction', () => {
111121
const startClocks = { relative: 100 as RelativeTime, timeStamp: 1000 as TimeStamp }
112122
const trackedAction = actionTracker.createTrackedAction(startClocks)
113123

114-
trackedAction.stop(200 as RelativeTime)
124+
trackedAction.stop({ relative: 200 as RelativeTime, timeStamp: 1100 as TimeStamp })
115125

116126
expect(actionTracker.findActionId(250 as RelativeTime)).toBeUndefined()
117127
})

packages/rum-core/src/domain/action/trackAction.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export interface TrackedAction {
1414
startClocks: ClocksState
1515
duration: Duration | undefined
1616
counts: ActionCounts
17-
stop: (endTime: RelativeTime) => void
17+
stop: (endClocks: ClocksState) => void
1818
discard: () => void
1919
}
2020

@@ -65,9 +65,9 @@ export function startActionTracker(lifeCycle: LifeCycle): ActionTracker {
6565
get counts() {
6666
return eventCountsSubscription.eventCounts
6767
},
68-
stop(endTime: RelativeTime) {
69-
historyEntry.close(endTime)
70-
duration = elapsed(startClocks.relative, endTime)
68+
stop(endClocks: ClocksState) {
69+
historyEntry.close(endClocks.relative)
70+
duration = elapsed(startClocks.timeStamp, endClocks.timeStamp)
7171
cleanup()
7272
},
7373
discard() {

packages/rum-core/src/domain/action/trackClickActions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Duration, ClocksState, TimeStamp } from '@datadog/browser-core'
2-
import { timeStampNow, Observable, getRelativeTime, relativeToClocks } from '@datadog/browser-core'
2+
import { timeStampNow, Observable, timeStampToClocks, relativeToClocks } from '@datadog/browser-core'
33
import { isNodeShadowHost } from '../../browser/htmlDomUtils'
44
import type { FrustrationType } from '../../rawRumEvent.types'
55
import { ActionType } from '../../rawRumEvent.types'
@@ -297,7 +297,7 @@ function newClick(
297297
activityEndTime = newActivityEndTime
298298
status = ClickStatus.STOPPED
299299
if (activityEndTime) {
300-
trackedAction.stop(getRelativeTime(activityEndTime))
300+
trackedAction.stop(timeStampToClocks(activityEndTime))
301301
} else {
302302
trackedAction.discard()
303303
}

packages/rum-core/src/domain/action/trackManualActions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export function trackManualActions(
8080
return
8181
}
8282

83-
activeAction.trackedAction.stop(stopClocks.relative)
83+
activeAction.trackedAction.stop(stopClocks)
8484

8585
const frustrationTypes: FrustrationType[] = []
8686
if (activeAction.trackedAction.counts.errorCount > 0) {

0 commit comments

Comments
 (0)