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

Function toggleExperiment

src/experiments/index.js:77–106  ·  view source on GitHub ↗
(
  win,
  experimentId,
  opt_on,
  opt_transientExperiment
)

Source from the content-addressed store, hash-verified

75 * @return {boolean} New state for experimentId.
76 */
77export function toggleExperiment(
78 win,
79 experimentId,
80 opt_on,
81 opt_transientExperiment
82) {
83 const currentlyOn = isExperimentOn(win, /*OK*/ experimentId);
84 const on = opt_on ?? !currentlyOn;
85 if (on != currentlyOn) {
86 const toggles = experimentToggles(win);
87 toggles[experimentId] = on;
88
89 if (!opt_transientExperiment) {
90 const storedToggles = getExperimentToggles(win);
91 storedToggles[experimentId] = on;
92 saveExperimentToggles(win, storedToggles);
93 // Avoid affecting tests that spy/stub warn().
94 if (!getMode().test) {
95 user().warn(
96 TAG,
97 '"%s" experiment %s for the domain "%s". See: https://amp.dev/documentation/guides-and-tutorials/learn/experimental',
98 experimentId,
99 on ? 'enabled' : 'disabled',
100 win.location.hostname
101 );
102 }
103 }
104 }
105 return on;
106}
107
108/**
109 * Calculate whether the experiment is on or off based off of its default value,

Callers 15

toggleExperiment_Function · 0.85
getVideoPlayerFunction · 0.85
cleanUpFunction · 0.85
expectToggleFunction · 0.85
test-impression.jsFile · 0.85
test-xhr.jsFile · 0.85

Calls 7

getModeFunction · 0.90
userFunction · 0.90
experimentTogglesFunction · 0.85
getExperimentTogglesFunction · 0.85
saveExperimentTogglesFunction · 0.85
warnMethod · 0.80
isExperimentOnFunction · 0.70

Tested by

no test coverage detected