function getNavigationTimingMarks()

in packages/rum-core/src/performance-monitoring/navigation/marks.js [86:121]


function getNavigationTimingMarks(timing) {
  const {
    redirectStart,
    fetchStart,
    navigationStart,
    responseStart,
    responseEnd
  } = timing
  /**
   * Detect if NavigationTiming data is buggy and discard
   * capturing navigation marks for the transaction
   *
   * https://bugs.webkit.org/show_bug.cgi?id=168057
   * https://bugs.webkit.org/show_bug.cgi?id=186919
   */
  if (
    fetchStart >= navigationStart &&
    responseStart >= fetchStart &&
    responseEnd >= responseStart
  ) {
    const marks = {}
    NAVIGATION_TIMING_MARKS.forEach(function (timingKey) {
      const m = timing[timingKey]
      if (m && m >= fetchStart) {
        if (isRedirectInfoAvailable(timing)) {
          // make sure navigation marks will show up after the Redirect span
          marks[timingKey] = parseInt(m - redirectStart)
        } else {
          marks[timingKey] = parseInt(m - fetchStart)
        }
      }
    })
    return marks
  }
  return null
}