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"
 | 
						|
      );
 | 
						|
    }
 | 
						|
  );
 | 
						|
});
 |