browser_bug1691153.js (2027B)
1 "use strict"; 2 3 add_task(async () => { 4 const TEST_PATH = getRootDirectory(gTestPath).replace( 5 "chrome://mochitests/content", 6 // eslint-disable-next-line @microsoft/sdl/no-insecure-url 7 "http://example.com" 8 ); 9 10 const HTML_URI = TEST_PATH + "file_bug1691153.html"; 11 12 // Opening the page that contains the iframe 13 let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); 14 let browser = tab.linkedBrowser; 15 let browserLoaded = BrowserTestUtils.browserLoaded( 16 browser, 17 true, 18 HTML_URI, 19 true 20 ); 21 info("new tab loaded"); 22 23 BrowserTestUtils.startLoadingURIString(browser, HTML_URI); 24 await browserLoaded; 25 info("The test page has loaded!"); 26 27 let first_message_promise = SpecialPowers.spawn( 28 browser, 29 [], 30 async function () { 31 let blobPromise = new Promise(resolve => { 32 content.addEventListener("message", event => { 33 if (event.data.bloburl) { 34 info("Sanity check: recvd blob URL as " + event.data.bloburl); 35 resolve(event.data.bloburl); 36 } 37 }); 38 }); 39 content.postMessage("getblob", "*"); 40 return blobPromise; 41 } 42 ); 43 info("The test page has loaded!"); 44 let blob_url = await first_message_promise; 45 46 Assert.ok(blob_url.startsWith("blob:"), "Sanity check: recvd blob"); 47 info(`Received blob URL message from content: ${blob_url}`); 48 // try to open the blob in a new tab, manually created by the user 49 let tab2 = await BrowserTestUtils.openNewForegroundTab( 50 gBrowser, 51 blob_url, 52 true, 53 false, 54 true 55 ); 56 57 let principal = gBrowser.selectedTab.linkedBrowser._contentPrincipal; 58 Assert.ok( 59 !principal.isSystemPrincipal, 60 "Newly opened blob shouldn't be Systemprincipal" 61 ); 62 Assert.ok( 63 !principal.isExpandedPrincipal, 64 "Newly opened blob shouldn't be ExpandedPrincipal" 65 ); 66 Assert.ok( 67 principal.isContentPrincipal, 68 "Newly opened blob tab should be ContentPrincipal" 69 ); 70 71 BrowserTestUtils.removeTab(tab); 72 BrowserTestUtils.removeTab(tab2); 73 });