1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
"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.loadURIString(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, reject) => {
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);
});
|