1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 * Class for enabling experimental features.
12 /** @suppress {duplicate} */
13 var remoting
= remoting
|| {};
17 var kExperimentsStorageName
= 'remoting-experiments';
20 * @param {Array.<string>} list
24 storageMap
[kExperimentsStorageName
] = list
;
25 chrome
.storage
.local
.set(storageMap
);
29 remoting
.experiments
= {};
32 * Enables an experiment.
34 * @param {string} experiment to enable.
36 remoting
.experiments
.enable = function(experiment
) {
37 remoting
.experiments
.get().then(function(/** Array.<string> */list
) {
38 if (list
.indexOf(experiment
) == -1) {
39 list
.push(experiment
);
46 * Disables an experiment.
48 * @param {string} experiment to disable.
50 remoting
.experiments
.disable = function(experiment
) {
51 remoting
.experiments
.get().then(function(/** Array.<string> */list
) {
52 list
= list
.filter(function(e
) { return e
!== experiment
; });
58 * Returns list of all enabled experiments.
61 remoting
.experiments
.get = function() {
62 return new Promise(function(resolve
, reject
) {
63 chrome
.storage
.local
.get(kExperimentsStorageName
, function(items
) {
64 if (items
.hasOwnProperty(kExperimentsStorageName
)) {
65 resolve(items
[kExperimentsStorageName
]);