MCPcopy
hub / github.com/ampproject/amphtml / addCsiSignalsToAmpAnalyticsConfig

Function addCsiSignalsToAmpAnalyticsConfig

ads/google/a4a/utils.js:794–849  ·  view source on GitHub ↗
(
  win,
  element,
  config,
  qqid,
  isVerifiedAmpCreative
)

Source from the content-addressed store, hash-verified

792 * @return {?JsonObject} config or null if invalid/missing.
793 */
794export function addCsiSignalsToAmpAnalyticsConfig(
795 win,
796 element,
797 config,
798 qqid,
799 isVerifiedAmpCreative
800) {
801 // Add CSI pingbacks.
802 const correlator = getCorrelator(win, element);
803 const slotId = Number(element.getAttribute('data-amp-slot-index'));
804 const eids = encodeURIComponent(element.getAttribute(EXPERIMENT_ATTRIBUTE));
805 let aexp = element.getAttribute(AMP_EXPERIMENT_ATTRIBUTE);
806 if (aexp) {
807 // aexp URL param is separated by `!`, not `,`.
808 aexp = aexp.replace(/,/g, '!');
809 }
810 const adType = element.getAttribute('type');
811 const initTime = Number(
812 getTimingDataSync(win, 'navigationStart') || Date.now()
813 );
814 const deltaTime = Math.round(
815 win.performance && win.performance.now
816 ? win.performance.now()
817 : Date.now() - initTime
818 );
819 const baseCsiUrl =
820 'https://csi.gstatic.com/csi?s=a4a' +
821 `&c=${correlator}&slotId=${slotId}&qqid.${slotId}=${qqid}` +
822 `&dt=${initTime}` +
823 (eids != 'null' ? `&e.${slotId}=${eids}` : '') +
824 (aexp ? `&aexp=${aexp}` : '') +
825 `&rls=${mode.version()}&adt.${slotId}=${adType}`;
826 const isAmpSuffix = isVerifiedAmpCreative ? 'Friendly' : 'CrossDomain';
827 config['triggers']['continuousVisibleIniLoad'] = {
828 'on': 'ini-load',
829 'selector': 'amp-ad',
830 'selectionMethod': 'closest',
831 'request': 'iniLoadCsi',
832 };
833 config['triggers']['continuousVisibleRenderStart'] = {
834 'on': 'render-start',
835 'selector': 'amp-ad',
836 'selectionMethod': 'closest',
837 'request': 'renderStartCsi',
838 };
839 config['requests']['iniLoadCsi'] =
840 baseCsiUrl + `&met.a4a.${slotId}=iniLoadCsi${isAmpSuffix}.${deltaTime}`;
841 config['requests']['renderStartCsi'] =
842 baseCsiUrl + `&met.a4a.${slotId}=renderStartCsi${isAmpSuffix}.${deltaTime}`;
843
844 // Add CSI ping for visibility.
845 config['requests']['visibilityCsi'] =
846 baseCsiUrl + `&met.a4a.${slotId}=visibilityCsi.${deltaTime}`;
847 config['triggers']['continuousVisible']['request'].push('visibilityCsi');
848 return config;
849}
850
851/**

Callers 3

test-utils.jsFile · 0.90
onCreativeRenderMethod · 0.90
onCreativeRenderMethod · 0.90

Calls 6

getTimingDataSyncFunction · 0.90
getAttributeMethod · 0.80
nowMethod · 0.80
getCorrelatorFunction · 0.70
replaceMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected