mediawiki-extensions-Popups/resources/ext.popups/experiment.js
Sam Smith 722bfe12a5 Add gateway
Supporting changes:
* Automatically register JavaScript files in the
  tests/qunit/ext.popups/ directory.

Additional changes:
* Fix a grammatical error in the docblock for
  mw.popups.createExperiment.

Change-Id: Ieb00709e353f0b960375fdaa0ca0dcdf950f2eb9
2016-11-11 18:59:44 +00:00

51 lines
1.6 KiB
JavaScript

( function ( mw ) {
/**
* Given the global state of the application, creates a function that gets
* whether or not the user should have Link Previews enabled, i.e. whether
* they are in the experiment condition.
*
* The user is in the experiment condition if:
* * They've enabled by Link Previews by clicking "Enable previews" in the
* footer menu.
* * They've enabled Link Previews as a beta feature.
* * They aren't in the control bucket of the experiment.
*
* @param {mw.Map} config
* @param {mw.user} user The `mw.user` singleton instance
* @param {Object} userSettings An object returned by
* `ext.popups.createUserSettings`, from which the user's token will be
* retrieved
*
* @return {Function}
*/
mw.popups.createExperiment = function ( config, user, userSettings ) {
return function () {
var experimentConfig = config.get( 'wgPopupsExperimentConfig' );
if ( userSettings.hasIsEnabled() ) {
return userSettings.getIsEnabled();
}
if ( config.get( 'wgPopupsExperiment', false ) === false ) {
return false;
}
if ( user.isAnon() ) {
if ( !experimentConfig ) {
return false;
}
// FIXME: mw.experiments should expose the CONTROL_BUCKET constant, e.g.
// `mw.experiments.CONTROL_BUCKET`.
return mw.experiments.getBucket( experimentConfig, userSettings.getToken() ) !== 'control';
} else {
// Logged in users are in condition depending on the beta feature flag
// instead of bucketing
return config.get( 'wgPopupsExperimentIsBetaFeatureEnabled', false );
}
};
};
}( mediaWiki ) );