From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../update/tests/unit_background_update/head.js | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 toolkit/mozapps/update/tests/unit_background_update/head.js (limited to 'toolkit/mozapps/update/tests/unit_background_update/head.js') 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; +} -- cgit v1.2.3