forked from mirrors/gecko-dev
		
	 5c29c7ab29
			
		
	
	
		5c29c7ab29
		
	
	
	
	
		
			
			Depends on D101327 Differential Revision: https://phabricator.services.mozilla.com/D101328
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| const DIRPATH = getRootDirectory(gTestPath).replace(
 | |
|   "chrome://mochitests/content/",
 | |
|   ""
 | |
| );
 | |
| const PATH = DIRPATH + "file_coop_coep.html";
 | |
| 
 | |
| const ORIGIN = "https://test1.example.com";
 | |
| const URL = `${ORIGIN}/${PATH}`;
 | |
| 
 | |
| add_task(async function() {
 | |
|   await BrowserTestUtils.withNewTab(URL, async function(browser) {
 | |
|     BrowserTestUtils.loadURI(browser, URL);
 | |
|     await BrowserTestUtils.browserLoaded(browser);
 | |
| 
 | |
|     await SpecialPowers.spawn(browser, [ORIGIN], async origin => {
 | |
|       is(
 | |
|         content.window.origin,
 | |
|         origin,
 | |
|         `Opened a tab and navigated to ${origin}`
 | |
|       );
 | |
| 
 | |
|       ok(
 | |
|         content.window.crossOriginIsolated,
 | |
|         `Should have been cross-origin-isolated env`
 | |
|       );
 | |
| 
 | |
|       let hostIds = [];
 | |
|       function createShadowDOMAndTriggerSlotChange(host) {
 | |
|         var shadow = host.attachShadow({ mode: "closed" });
 | |
| 
 | |
|         let promise = new Promise(resolve => {
 | |
|           shadow.addEventListener("slotchange", function() {
 | |
|             hostIds.push(host.id);
 | |
|             resolve();
 | |
|           });
 | |
|         });
 | |
| 
 | |
|         shadow.innerHTML = "<slot></slot>";
 | |
| 
 | |
|         host.appendChild(host.ownerDocument.createElement("span"));
 | |
| 
 | |
|         return promise;
 | |
|       }
 | |
| 
 | |
|       let host1 = content.document.getElementById("host1");
 | |
| 
 | |
|       let dataDoc = content.document.implementation.createHTMLDocument();
 | |
|       dataDoc.body.innerHTML = "<div id='host2'></div>";
 | |
|       let host2 = dataDoc.body.firstChild;
 | |
| 
 | |
|       let host3 = content.document.getElementById("host3");
 | |
| 
 | |
|       let promises = [];
 | |
|       promises.push(createShadowDOMAndTriggerSlotChange(host1));
 | |
|       promises.push(createShadowDOMAndTriggerSlotChange(host2));
 | |
|       promises.push(createShadowDOMAndTriggerSlotChange(host3));
 | |
| 
 | |
|       await Promise.all(promises);
 | |
| 
 | |
|       is(hostIds.length, 3, `Got 3 slot change events`);
 | |
|       is(hostIds[0], "host1", `The first one was host1`);
 | |
|       is(hostIds[1], "host2", `The second one was host2`);
 | |
|       is(hostIds[2], "host3", `The third one was host3`);
 | |
|     });
 | |
|   });
 | |
| });
 |