summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/update/tests/unit_background_update/head.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/update/tests/unit_background_update/head.js')
-rw-r--r--toolkit/mozapps/update/tests/unit_background_update/head.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/toolkit/mozapps/update/tests/unit_background_update/head.js b/toolkit/mozapps/update/tests/unit_background_update/head.js
new file mode 100644
index 0000000000..c7ed24a0a7
--- /dev/null
+++ b/toolkit/mozapps/update/tests/unit_background_update/head.js
@@ -0,0 +1,58 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+/* import-globals-from ../data/xpcshellUtilsAUS.js */
+load("xpcshellUtilsAUS.js");
+gIsServiceTest = false;
+
+const { BackgroundTasksTestUtils } = ChromeUtils.importESModule(
+ "resource://testing-common/BackgroundTasksTestUtils.sys.mjs"
+);
+BackgroundTasksTestUtils.init(this);
+const do_backgroundtask = BackgroundTasksTestUtils.do_backgroundtask.bind(
+ BackgroundTasksTestUtils
+);
+const setupProfileService = BackgroundTasksTestUtils.setupProfileService.bind(
+ BackgroundTasksTestUtils
+);
+
+// Helper function to register a callback to catch a Glean ping before its
+// submission. The function returns all string_list items, but not as they
+// appear in the ping itself, but as full text representation, which is the
+// value of the corresponding field. This makes the test more unique, because
+// the values often contain chars, which are not allowed in glean metric labels
+//
+// @returns: an array which contains all glean metrics, but as full text
+// representation from the BackgroundUpdate.REASON object => its
+// values, see description for further details.
+//
+async function checkGleanPing() {
+ let retval = ["EMPTY"];
+ let ping_submitted = false;
+
+ const { maybeSubmitBackgroundUpdatePing } = ChromeUtils.importESModule(
+ "resource://gre/modules/backgroundtasks/BackgroundTask_backgroundupdate.sys.mjs"
+ );
+ const { BackgroundUpdate } = ChromeUtils.importESModule(
+ "resource://gre/modules/BackgroundUpdate.sys.mjs"
+ );
+
+ GleanPings.backgroundUpdate.testBeforeNextSubmit(_ => {
+ ping_submitted = true;
+ retval = Glean.backgroundUpdate.reasonsToNotUpdate.testGetValue().map(v => {
+ return BackgroundUpdate.REASON[v];
+ });
+ Assert.ok(Array.isArray(retval));
+ return retval;
+ });
+ await maybeSubmitBackgroundUpdatePing();
+ Assert.ok(ping_submitted, "Glean ping successfully submitted");
+
+ // The metric has `lifetime: application` set, but when testing we do not
+ // want to keep the results around and avoid, that one test can influence
+ // another. That is why we clear this string_list.
+ Glean.backgroundUpdate.reasonsToNotUpdate.set([]);
+
+ return retval;
+}