summaryrefslogtreecommitdiffstats
path: root/toolkit/components/backgroundtasks/tests/BackgroundTask_crash.sys.mjs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /toolkit/components/backgroundtasks/tests/BackgroundTask_crash.sys.mjs
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/backgroundtasks/tests/BackgroundTask_crash.sys.mjs')
-rw-r--r--toolkit/components/backgroundtasks/tests/BackgroundTask_crash.sys.mjs51
1 files changed, 51 insertions, 0 deletions
diff --git a/toolkit/components/backgroundtasks/tests/BackgroundTask_crash.sys.mjs b/toolkit/components/backgroundtasks/tests/BackgroundTask_crash.sys.mjs
new file mode 100644
index 0000000000..10764bc1f7
--- /dev/null
+++ b/toolkit/components/backgroundtasks/tests/BackgroundTask_crash.sys.mjs
@@ -0,0 +1,51 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
+ * 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/. */
+
+export async function runBackgroundTask(commandLine) {
+ // This task depends on `CrashTestUtils.jsm` and requires the
+ // sibling `testcrasher` library to be in the current working
+ // directory. Fail right away if we can't find the module or the
+ // native library.
+ let cwd = Services.dirsvc.get("CurWorkD", Ci.nsIFile);
+ let protocolHandler = Services.io
+ .getProtocolHandler("resource")
+ .QueryInterface(Ci.nsIResProtocolHandler);
+ var curDirURI = Services.io.newFileURI(cwd);
+ protocolHandler.setSubstitution("test", curDirURI);
+
+ const { CrashTestUtils } = ChromeUtils.importESModule(
+ "resource://test/CrashTestUtils.sys.mjs"
+ );
+
+ // Get the temp dir.
+ var tmpd = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
+ tmpd.initWithPath(Services.env.get("XPCSHELL_TEST_TEMP_DIR"));
+
+ // We need to call this or crash events go in an undefined location.
+ Services.appinfo.UpdateCrashEventsDir();
+
+ // Setting the minidump path is not allowed in content processes,
+ // but background tasks run in the parent.
+ Services.appinfo.minidumpPath = tmpd;
+
+ // Arguments are [crashType, key1, value1, key2, value2, ...].
+ let i = 0;
+ let crashType = Number.parseInt(commandLine.getArgument(i));
+ i += 1;
+ while (i + 1 < commandLine.length) {
+ let key = commandLine.getArgument(i);
+ let value = commandLine.getArgument(i + 1);
+ i += 2;
+ Services.appinfo.annotateCrashReport(key, value);
+ }
+
+ console.log(`Crashing with crash type ${crashType}`);
+
+ // Now actually crash.
+ CrashTestUtils.crash(crashType);
+
+ // This is moot, since we crashed, but...
+ return 1;
+}