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
74
75
76
77
78
|
/*
* Description of the Test:
* We load an https page which uses a CSP including block-all-mixed-content.
* The page embedded an audio, img and video. ML2 should upgrade them and
* CSP should not be triggered.
*/
const PRE_PATH = getRootDirectory(gTestPath).replace(
"chrome://mochitests/content",
"https://example.com"
);
var gTestBrowser = null;
let expectedMessages = 3;
function on_new_message(msgObj) {
const message = msgObj.message;
// Check if csp warns about block-all-mixed content being obsolete
if (message.includes("Content-Security-Policy")) {
ok(
message.includes("block-all-mixed-content obsolete"),
"CSP warns about block-all-mixed content being obsolete"
);
}
if (message.includes("Mixed Content:")) {
ok(
message.includes("Upgrading insecure display request"),
"msg included a mixed content upgrade"
);
expectedMessages--;
}
}
add_task(async function () {
await SpecialPowers.pushPrefEnv({
set: [["security.mixed_content.upgrade_display_content", true]],
});
Services.console.registerListener(on_new_message);
// Starting the test
var url =
PRE_PATH +
"file_csp_block_all_mixedcontent_and_mixed_content_display_upgrade.html";
await BrowserTestUtils.withNewTab(
{
gBrowser,
url,
waitForLoad: true,
},
async function (browser) {
let loadedElements = await ContentTask.spawn(
browser,
[],
async function () {
// Check image loaded
let image = content.document.getElementById("some-img");
let imageLoaded =
image && image.complete && image.naturalHeight !== 0;
// Check audio loaded
let audio = content.document.getElementById("some-audio");
let audioLoaded = audio && audio.readyState >= 2;
// Check video loaded
let video = content.document.getElementById("some-video");
//let videoPlayable = await once(video, "loadeddata").then(_ => true);
let videoLoaded = video && video.readyState === 4;
return { audio: audioLoaded, img: imageLoaded, video: videoLoaded };
}
);
is(true, loadedElements.img, "Image loaded and was upgraded " + url);
is(true, loadedElements.video, "Video loaded and was upgraded " + url);
is(true, loadedElements.audio, "Audio loaded and was upgraded " + url);
}
);
await BrowserTestUtils.waitForCondition(() => expectedMessages === 0);
// Clean up
Services.console.unregisterListener(on_new_message);
});
|