forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			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]));
 | |
| });
 | 
