1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
/* 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/>. */
/**
* Tests that a chrome debugger can be created in a new process.
*/
"use strict";
// There are shutdown issues for which multiple rejections are left uncaught.
// See bug 1018184 for resolving these issues.
PromiseTestUtils.allowMatchingRejectionsGlobally(/File closed/);
PromiseTestUtils.allowMatchingRejectionsGlobally(/NS_ERROR_FAILURE/);
// This test can be slow to run
requestLongerTimeout(5);
const { BrowserToolboxLauncher } = ChromeUtils.importESModule(
"resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs"
);
add_task(async function () {
await pushPref("devtools.chrome.enabled", true);
await pushPref("devtools.debugger.remote-enabled", true);
info("Call BrowserToolboxLauncher.init");
const [browserToolboxLauncher, process, profilePath] = await new Promise(
resolve => {
BrowserToolboxLauncher.init({
onRun: (btl, dbgProcess, dbgProfilePath) => {
info("Browser toolbox process started successfully.");
resolve([btl, dbgProcess, dbgProfilePath]);
},
});
}
);
ok(process, "The remote debugger process was created");
ok(process.exitCode == null, "The remote debugger process is running");
is(
typeof process.pid,
"number",
`The remote debugger process has a proper pid (${process.pid})`
);
is(
profilePath,
PathUtils.join(PathUtils.profileDir, "chrome_debugger_profile"),
`The remote debugger profile has the expected path`
);
info("Close the browser toolbox");
await browserToolboxLauncher.close();
is(
process.exitCode,
Services.appinfo.OS == "WINNT" ? -9 : -15,
"The remote debugger process died cleanly"
);
});
|