summaryrefslogtreecommitdiffstats
path: root/dom/base/test/browser_force_process_selector.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/base/test/browser_force_process_selector.js')
-rw-r--r--dom/base/test/browser_force_process_selector.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/dom/base/test/browser_force_process_selector.js b/dom/base/test/browser_force_process_selector.js
new file mode 100644
index 0000000000..15157b240d
--- /dev/null
+++ b/dom/base/test/browser_force_process_selector.js
@@ -0,0 +1,38 @@
+"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]));
+});