forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| async function addFrame(url) {
 | |
|   let iframe = content.document.createElement("iframe");
 | |
|   await new Promise(resolve => {
 | |
|     iframe.addEventListener("load", resolve, { once: true });
 | |
|     iframe.src = url;
 | |
|     content.document.body.appendChild(iframe);
 | |
|   });
 | |
|   return iframe.browsingContext;
 | |
| }
 | |
| 
 | |
| add_task(async function () {
 | |
|   await BrowserTestUtils.withNewTab(
 | |
|     { gBrowser, url: "about:blank" },
 | |
|     async browser => {
 | |
|       // Add 15 example.com frames to the toplevel document.
 | |
|       let frames = await Promise.all(
 | |
|         Array.from({ length: 15 }).map(_ =>
 | |
|           // eslint-disable-next-line @microsoft/sdl/no-insecure-url
 | |
|           SpecialPowers.spawn(browser, ["http://example.com/"], addFrame)
 | |
|         )
 | |
|       );
 | |
| 
 | |
|       // Add an example.org subframe to each example.com frame.
 | |
|       let subframes = await Promise.all(
 | |
|         Array.from({ length: 15 }).map((_, i) =>
 | |
|           // eslint-disable-next-line @microsoft/sdl/no-insecure-url
 | |
|           SpecialPowers.spawn(frames[i], ["http://example.org/"], addFrame)
 | |
|         )
 | |
|       );
 | |
| 
 | |
|       Assert.deepEqual(
 | |
|         subframes[0].getAllBrowsingContextsInSubtree(),
 | |
|         [subframes[0]],
 | |
|         "Childless context only has self in subtree"
 | |
|       );
 | |
|       Assert.deepEqual(
 | |
|         frames[0].getAllBrowsingContextsInSubtree(),
 | |
|         [frames[0], subframes[0]],
 | |
|         "Single-child context has 2 contexts in subtree"
 | |
|       );
 | |
|       Assert.deepEqual(
 | |
|         browser.browsingContext.getAllBrowsingContextsInSubtree(),
 | |
|         [browser.browsingContext, ...frames, ...subframes],
 | |
|         "Toplevel context has all subtree contexts"
 | |
|       );
 | |
|     }
 | |
|   );
 | |
| });
 | 
