browser_visual_viewport_iframe.js (1595B)
1 "use strict"; 2 3 add_task(async () => { 4 function httpURL(filename, host = "https://example.com/") { 5 let root = getRootDirectory(gTestPath).replace( 6 "chrome://mochitests/content/", 7 host 8 ); 9 return root + filename; 10 } 11 12 await SpecialPowers.pushPrefEnv({ 13 set: [["dom.meta-viewport.enabled", true]], 14 }); 15 16 const fissionWindow = await BrowserTestUtils.openNewBrowserWindow({ 17 fission: true, 18 }); 19 const url = httpURL( 20 "test_visual_viewport_in_oopif.html", 21 "http://mochi.test:8888/" 22 ); 23 const crossOriginIframeUrl = httpURL("visual_viewport_in_child.html"); 24 25 try { 26 await BrowserTestUtils.withNewTab( 27 { gBrowser: fissionWindow.gBrowser, url }, 28 async browser => { 29 await SpecialPowers.spawn( 30 browser, 31 [crossOriginIframeUrl], 32 async iframeUrl => { 33 const iframe = content.document.getElementById("iframe"); 34 iframe.setAttribute("src", iframeUrl); 35 36 let { width, height } = await new Promise(resolve => { 37 content.window.addEventListener("message", msg => { 38 resolve(msg.data); 39 }); 40 }); 41 42 is( 43 width, 44 300, 45 "visualViewport.width shouldn't be affected in out-of-process iframes" 46 ); 47 is( 48 height, 49 300, 50 "visualViewport.height shouldn't be affected in out-of-process iframes" 51 ); 52 } 53 ); 54 } 55 ); 56 } finally { 57 await BrowserTestUtils.closeWindow(fissionWindow); 58 } 59 });