diff options
author | anandc <anandc@chromium.org> | 2015-08-21 19:48:05 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-22 02:48:48 +0000 |
commit | 2b8072b2a5bbbbb6063464b1183b83416f9e2275 (patch) | |
tree | 835c9a38c08329a370cad05162528266487d6fc3 /remoting/webapp/base | |
parent | 0b56a692d5c342a7093c361ff6ccb464c9d54947 (diff) | |
download | chromium_src-2b8072b2a5bbbbb6063464b1183b83416f9e2275.zip chromium_src-2b8072b2a5bbbbb6063464b1183b83416f9e2275.tar.gz chromium_src-2b8072b2a5bbbbb6063464b1183b83416f9e2275.tar.bz2 |
Get Field-Trial for a web-app session and, depending on group returned, enable QUIC & vp9 experiments in web-app.
BUG=448838
Review URL: https://codereview.chromium.org/1300213005
Cr-Commit-Position: refs/heads/master@{#344958}
Diffstat (limited to 'remoting/webapp/base')
-rw-r--r-- | remoting/webapp/base/js/experiments.js | 49 |
1 files changed, 45 insertions, 4 deletions
diff --git a/remoting/webapp/base/js/experiments.js b/remoting/webapp/base/js/experiments.js index b6228c4..ab6edc1 100644 --- a/remoting/webapp/base/js/experiments.js +++ b/remoting/webapp/base/js/experiments.js @@ -12,9 +12,10 @@ /** @suppress {duplicate} */ var remoting = remoting || {}; -(function () { +(function() { var kExperimentsStorageName = 'remoting-experiments'; +var ACTIVE_FIELD_TRIALS = {'ChromotingQUIC': 'quic', 'ChromotingVP9': 'vp9'}; /** * @param {Array.<string>} list @@ -55,18 +56,58 @@ remoting.experiments.disable = function(experiment) { }; /** + * Determines if the field-trial is enabled for this session. + * + * @param {string} trialName The FieldTrial to check for enabling. + * @return {Promise} + */ +function getTrialState(trialName) { + var deferred = new base.Deferred(); + chrome.metricsPrivate.getFieldTrial(trialName, + function(/** string */ group) { + if (group == 'Enabled') { + deferred.resolve(true); + } else { + deferred.resolve(false); + } + }); + return deferred.promise(); +}; + +/** * Returns list of all enabled experiments. * @return {Promise} */ remoting.experiments.get = function() { - return new Promise(function(resolve, reject) { + + var localStorageList = new Promise(function(resolve, reject) { chrome.storage.local.get(kExperimentsStorageName, function(items) { + /** @type {Array<string>} */ + var experiments = new Array(); if (items.hasOwnProperty(kExperimentsStorageName)) { - resolve(items[kExperimentsStorageName]); + experiments = /** @type {Array<string>} */ + (items[kExperimentsStorageName]); } - resolve([]); + resolve(experiments); }); }); + + var trialNames = Object.keys(ACTIVE_FIELD_TRIALS); + + return Promise.all([localStorageList].concat( + trialNames.map(function(/** string */ trialName) { + return getTrialState(trialName); + }))) + .then(function(results) { + /** @type {Array<string>} */ + var list = results[0]; + for (var i = 0; i < trialNames.length; ++i) { + if (results[i + 1]) { + list.push(ACTIVE_FIELD_TRIALS[trialNames[i]]); + } + } + return list; + }); }; })(); |