73 lines
2 KiB
JavaScript
73 lines
2 KiB
JavaScript
"use strict";
|
|
|
|
add_task(async () => {
|
|
const TEST_PATH = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content",
|
|
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
|
|
"http://example.com"
|
|
);
|
|
|
|
const HTML_URI = TEST_PATH + "file_bug1691153.html";
|
|
|
|
// Opening the page that contains the iframe
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
|
|
let browser = tab.linkedBrowser;
|
|
let browserLoaded = BrowserTestUtils.browserLoaded(
|
|
browser,
|
|
true,
|
|
HTML_URI,
|
|
true
|
|
);
|
|
info("new tab loaded");
|
|
|
|
BrowserTestUtils.startLoadingURIString(browser, HTML_URI);
|
|
await browserLoaded;
|
|
info("The test page has loaded!");
|
|
|
|
let first_message_promise = SpecialPowers.spawn(
|
|
browser,
|
|
[],
|
|
async function () {
|
|
let blobPromise = new Promise(resolve => {
|
|
content.addEventListener("message", event => {
|
|
if (event.data.bloburl) {
|
|
info("Sanity check: recvd blob URL as " + event.data.bloburl);
|
|
resolve(event.data.bloburl);
|
|
}
|
|
});
|
|
});
|
|
content.postMessage("getblob", "*");
|
|
return blobPromise;
|
|
}
|
|
);
|
|
info("The test page has loaded!");
|
|
let blob_url = await first_message_promise;
|
|
|
|
Assert.ok(blob_url.startsWith("blob:"), "Sanity check: recvd blob");
|
|
info(`Received blob URL message from content: ${blob_url}`);
|
|
// try to open the blob in a new tab, manually created by the user
|
|
let tab2 = await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
blob_url,
|
|
true,
|
|
false,
|
|
true
|
|
);
|
|
|
|
let principal = gBrowser.selectedTab.linkedBrowser._contentPrincipal;
|
|
Assert.ok(
|
|
!principal.isSystemPrincipal,
|
|
"Newly opened blob shouldn't be Systemprincipal"
|
|
);
|
|
Assert.ok(
|
|
!principal.isExpandedPrincipal,
|
|
"Newly opened blob shouldn't be ExpandedPrincipal"
|
|
);
|
|
Assert.ok(
|
|
principal.isContentPrincipal,
|
|
"Newly opened blob tab should be ContentPrincipal"
|
|
);
|
|
|
|
BrowserTestUtils.removeTab(tab);
|
|
BrowserTestUtils.removeTab(tab2);
|
|
});
|