38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
const { Subprocess } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/Subprocess.sys.mjs"
|
|
);
|
|
|
|
// Re-launches the current instance which will send arguments to the current
|
|
// instance via the remote system/
|
|
async function execRemote(args) {
|
|
let process = await Subprocess.call({
|
|
command: Services.dirsvc.get("XREExeF", Ci.nsIFile).path,
|
|
arguments: ["--profile", PathUtils.profileDir, ...args],
|
|
});
|
|
let { exitCode } = await process.wait();
|
|
|
|
Assert.equal(exitCode, 0, "Should have exited normally");
|
|
}
|
|
|
|
add_task(async function test() {
|
|
// A URL should open a new tab in the current window.
|
|
let newTabOpened = BrowserTestUtils.waitForNewTab(
|
|
gBrowser,
|
|
"https://example.org/",
|
|
true
|
|
);
|
|
await execRemote(["https://example.org/"]);
|
|
Assert.ok(true, "Successfully sent remote message");
|
|
let newTab = await newTabOpened;
|
|
BrowserTestUtils.removeTab(newTab);
|
|
|
|
// A blank command line should open a new window.
|
|
let newWinOpened = BrowserTestUtils.waitForNewWindow();
|
|
await execRemote([]);
|
|
Assert.ok(true, "Successfully sent remote message");
|
|
let newWindow = await newWinOpened;
|
|
await BrowserTestUtils.closeWindow(newWindow);
|
|
});
|