summaryrefslogtreecommitdiffstats
path: root/toolkit/components/normandy/lib/LegacyHeartbeat.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/normandy/lib/LegacyHeartbeat.sys.mjs')
-rw-r--r--toolkit/components/normandy/lib/LegacyHeartbeat.sys.mjs48
1 files changed, 48 insertions, 0 deletions
diff --git a/toolkit/components/normandy/lib/LegacyHeartbeat.sys.mjs b/toolkit/components/normandy/lib/LegacyHeartbeat.sys.mjs
new file mode 100644
index 0000000000..501c9f70af
--- /dev/null
+++ b/toolkit/components/normandy/lib/LegacyHeartbeat.sys.mjs
@@ -0,0 +1,48 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const lazy = {};
+ChromeUtils.defineESModuleGetters(lazy, {
+ ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs",
+ NimbusFeatures: "resource://nimbus/ExperimentAPI.sys.mjs",
+});
+
+const FEATURE_ID = "legacyHeartbeat";
+
+/**
+ * A bridge between Nimbus and Normandy's Heartbeat implementation.
+ */
+export const LegacyHeartbeat = {
+ getHeartbeatRecipe() {
+ const survey = lazy.NimbusFeatures.legacyHeartbeat.getVariable("survey");
+
+ if (typeof survey == "undefined") {
+ return null;
+ }
+
+ let isRollout = false;
+ let enrollmentData = lazy.ExperimentAPI.getExperimentMetaData({
+ featureId: FEATURE_ID,
+ });
+
+ if (!enrollmentData) {
+ enrollmentData = lazy.ExperimentAPI.getRolloutMetaData({
+ featureId: FEATURE_ID,
+ });
+ isRollout = true;
+ }
+
+ return {
+ id: `nimbus:${enrollmentData.slug}`,
+ name: `Nimbus legacyHeartbeat ${isRollout ? "rollout" : "experiment"} ${
+ enrollmentData.slug
+ }`,
+ action: "show-heartbeat",
+ arguments: survey,
+ capabilities: ["action.show-heartbeat"],
+ filter_expression: "true",
+ use_only_baseline_capabilities: true,
+ };
+ },
+};