diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /toolkit/components/backgroundtasks/tests/BackgroundTask_crash.sys.mjs | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
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.mjs | 51 |
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; +} |