summaryrefslogtreecommitdiffstats
path: root/remoting/webapp/base
diff options
context:
space:
mode:
authoranandc <anandc@chromium.org>2015-08-21 19:48:05 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-22 02:48:48 +0000
commit2b8072b2a5bbbbb6063464b1183b83416f9e2275 (patch)
tree835c9a38c08329a370cad05162528266487d6fc3 /remoting/webapp/base
parent0b56a692d5c342a7093c361ff6ccb464c9d54947 (diff)
downloadchromium_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.js49
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;
+ });
};
})();