зеркало из https://github.com/mozilla/gecko-dev.git
39 строки
1.3 KiB
JavaScript
39 строки
1.3 KiB
JavaScript
"use strict";
|
|
|
|
const CONTENT_CREATED = "ipc:content-created";
|
|
|
|
// Make sure that BTU.withNewTab({ ..., forceNewProcess: true }) loads
|
|
// new tabs in their own process.
|
|
async function spawnNewAndTest(recur, pids) {
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "about:blank", forceNewProcess: true },
|
|
async function(browser) {
|
|
// Make sure our new browser is in its own process.
|
|
let newPid = browser.frameLoader.remoteTab.osPid;
|
|
ok(!pids.has(newPid), "new tab is in its own process: " + recur);
|
|
pids.add(newPid);
|
|
|
|
if (recur) {
|
|
await spawnNewAndTest(recur - 1, pids);
|
|
} else {
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: "about:blank" },
|
|
function(lastBrowser) {
|
|
let lastPid = lastBrowser.frameLoader.remoteTab.osPid;
|
|
ok(pids.has(lastPid), "final tab cannot be in its own process");
|
|
}
|
|
);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
add_task(async function test() {
|
|
let curPid = gBrowser.selectedBrowser.frameLoader.remoteTab.osPid;
|
|
let maxCount = Services.prefs.getIntPref("dom.ipc.processCount");
|
|
|
|
// Use at least one more tab than max processes or at least 5 to make this
|
|
// test interesting.
|
|
await spawnNewAndTest(Math.max(maxCount + 1, 5), new Set([curPid]));
|
|
});
|