summaryrefslogtreecommitdiffstats
path: root/application/basilisk/experiments/test/addons/experiment-racybranch/bootstrap.js
diff options
context:
space:
mode:
Diffstat (limited to 'application/basilisk/experiments/test/addons/experiment-racybranch/bootstrap.js')
-rw-r--r--application/basilisk/experiments/test/addons/experiment-racybranch/bootstrap.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/application/basilisk/experiments/test/addons/experiment-racybranch/bootstrap.js b/application/basilisk/experiments/test/addons/experiment-racybranch/bootstrap.js
new file mode 100644
index 000000000..d77fd4345
--- /dev/null
+++ b/application/basilisk/experiments/test/addons/experiment-racybranch/bootstrap.js
@@ -0,0 +1,35 @@
+/* exported startup, shutdown, install, uninstall */
+
+var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+
+Cu.import("resource:///modules/experiments/Experiments.jsm");
+
+var gStarted = false;
+
+function startup(data, reasonCode) {
+ if (gStarted) {
+ return;
+ }
+ gStarted = true;
+
+ // delay realstartup to trigger the race condition
+ Cc["@mozilla.org/thread-manager;1"].getService(Ci.nsIThreadManager)
+ .mainThread.dispatch(realstartup, 0);
+}
+
+function realstartup() {
+ let experiments = Experiments.instance();
+ let experiment = experiments._getActiveExperiment();
+ if (experiment.branch) {
+ Cu.reportError("Found pre-existing branch: " + experiment.branch);
+ return;
+ }
+
+ let branch = "racy-set";
+ experiments.setExperimentBranch(experiment.id, branch)
+ .then(null, Cu.reportError);
+}
+
+function shutdown() { }
+function install() { }
+function uninstall() { }