/
githubmirror
/
amphtml
Обзор
Документация
Войти
/
githubmirror
/
amphtml
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ads/google/a4a/experiment-utils.js
65 строк
2 KB
Jake Fried
♻️ amp lint --fix: sort/order (#37353)
12 янв 2022, 22:24
Не верифицирован
12 янв 2022, 22:24
8c34f2d
Код
Авторство
О чём код?
import { forceExperimentBranch, getExperimentBranch, randomlySelectUnsetExperiments, } from '#experiments'; import {addExperimentIdToElement} from './traffic-experiments'; /** * Attempts to select into experiment and forces branch if selected. * @param {!Window} win * @param {!Element} element * @param {!Array<string>} branches * @param {string} expName * @param {boolean=} optAddExpIdToElement * @return {*} TODO(#23582): Specify return type */ export function selectAndSetExperiments( win, element, branches, expName, optAddExpIdToElement ) { const experimentId = expUtils.maybeSelectExperiment( win, element, branches, expName ); if (!!experimentId) { addExperimentIdToElement( optAddExpIdToElement ? experimentId : undefined, element ); forceExperimentBranch(win, expName, experimentId); } return experimentId; } export class ExperimentUtils { /** * @param {!Window} win * @param {!Element} element * @param {!Array<string>} selectionBranches * @param {string} experimentName * @return {?string} */ maybeSelectExperiment(win, element, selectionBranches, experimentName) { const experimentInfoList = /** @type {!Array<!ExperimentInfoDef>} */ ([]); experimentInfoList.push({ experimentId: experimentName, isTrafficEligible: () => true, branches: selectionBranches, }); randomlySelectUnsetExperiments(win, experimentInfoList); return getExperimentBranch(win, experimentName); } } /** * ExperimentUtils singleton. * @type {!ExperimentUtils} */ const expUtils = new ExperimentUtils();