Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

"use strict";
const TEST_URL =
getRootDirectory(gTestPath).replace(
) + "file_csp_before_mixed_content.sjs";
const MIXED_CONTENT_MESSAGE = "Blocked loading mixed display content";
const CSP_MESSAGE = "blocked the loading of a resource (img-src)";
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [
["security.mixed_content.block_display_content", true],
["security.mixed_content.upgrade_display_content", false],
],
});
});
async function loadAndCollectMessages(url, expected) {
let messages = [];
let listener = {
observe(msg) {
messages.push(msg.message);
},
};
Services.console.registerListener(listener);
await BrowserTestUtils.withNewTab(url, async () => {
await TestUtils.waitForCondition(
() => messages.some(m => m.includes(expected)),
`Waiting for "${expected}"`
);
});
Services.console.unregisterListener(listener);
return messages;
}
add_task(async function test_mixed_content_only() {
let messages = await loadAndCollectMessages(TEST_URL, MIXED_CONTENT_MESSAGE);
ok(
!messages.some(m => m.includes(CSP_MESSAGE)),
"No CSP violation without a CSP"
);
});
add_task(async function test_csp_and_mixed_content() {
let messages = await loadAndCollectMessages(TEST_URL + "?csp", CSP_MESSAGE);
ok(
!messages.some(m => m.includes(MIXED_CONTENT_MESSAGE)),
"Image is blocked by CSP before reaching the mixed content blocker"
);
});