componentDidMount()

in src/amo/withExperiment.js [262:317]


      componentDidMount() {
        const { variant } = this;
        const { _isExperimentEnabled, cookies } = this.props;

        const addExperimentToCookie =
          variant && !this.cookieIncludesExperiment();
        const registeredExperiments = this.getExperimentsFromCookie();
        const experimentsToStore = { ...registeredExperiments };

        // Clear any disabled experiments from the cookie.
        let cleanupNeeded = false;
        for (const experimentId of Object.keys(registeredExperiments)) {
          if (!_isExperimentEnabled({ _config, id: experimentId })) {
            delete experimentsToStore[experimentId];
            cleanupNeeded = true;
          }
        }

        if (addExperimentToCookie) {
          experimentsToStore[id] = variant;

          if (variant) {
            // Send an enrollment event.
            _tracking.sendEvent({
              _config,
              action: variant,
              category: [EXPERIMENT_ENROLLMENT_CATEGORY, id].join(' '),
            });
          }
        }

        if (cleanupNeeded || addExperimentToCookie) {
          cookies.set(
            EXPERIMENT_COOKIE_NAME,
            experimentsToStore,
            cookieConfig || defaultCookieConfig,
          );
        }

        // If the user is enrolled in a branch, set the GA custom dimensions
        // and GA4 user properties.
        if (variant && variant !== NOT_IN_EXPERIMENT) {
          _tracking.setDimension({
            dimension: EXPERIMENT_ID_GA_DIMENSION,
            value: id,
          });
          _tracking.setDimension({
            dimension: EXPERIMENT_VARIATION_GA_DIMENSION,
            value: variant,
          });
          _tracking.setUserProperties({
            experimentId: id,
            experimentVariation: variant,
          });
        }
      }