/* * Description of the Tests for * - Bug 909920 - Mixed content warning should not show on a HTTP site * * Description of the tests: * Test 1: * 1) Load an http page * 2) The page includes a css file using https * 3) The css file loads an |IMAGE| << over http * * Test 2: * 1) Load an http page * 2) The page includes a css file using https * 3) The css file loads a |FONT| over http * * Test 3: * 1) Load an http page * 2) The page includes a css file using https * 3) The css file imports (@import) another css file using http * 3) The imported css file loads a |FONT| over http * * Since the top-domain is >> NOT << served using https, the MCB * should >> NOT << trigger a warning. */ const PREF_ACTIVE = "security.mixed_content.block_active_content"; const PREF_DISPLAY = "security.mixed_content.block_display_content"; const HTTP_TEST_ROOT = getRootDirectory(gTestPath).replace( "chrome://mochitests/content", // eslint-disable-next-line @microsoft/sdl/no-insecure-url "http://example.com" ); var gTestBrowser = null; function cleanUpAfterTests() { gBrowser.removeCurrentTab(); window.focus(); } add_setup(async function () { await SpecialPowers.pushPrefEnv({ set: [ [PREF_ACTIVE, true], [PREF_DISPLAY, true], ], }); let url = HTTP_TEST_ROOT + "test_no_mcb_on_http_site_img.html"; let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url); gTestBrowser = tab.linkedBrowser; }); // ------------- TEST 1 ----------------------------------------- add_task(async function test1() { let expected = "Verifying MCB does not trigger warning/error for an http page "; expected += "with https css that includes http image"; await SpecialPowers.spawn( gTestBrowser, [expected], async function (condition) { await ContentTaskUtils.waitForCondition( () => content.document.getElementById("testDiv").innerHTML == condition, "Waited too long for status in Test 1!" ); } ); // Explicit OKs needed because the harness requires at least one call to ok. ok(true, "test 1 passed"); // set up test 2 let url = HTTP_TEST_ROOT + "test_no_mcb_on_http_site_font.html"; BrowserTestUtils.loadURIString(gTestBrowser, url); await BrowserTestUtils.browserLoaded(gTestBrowser); }); // ------------- TEST 2 ----------------------------------------- add_task(async function test2() { let expected = "Verifying MCB does not trigger warning/error for an http page "; expected += "with https css that includes http font"; await SpecialPowers.spawn( gTestBrowser, [expected], async function (condition) { await ContentTaskUtils.waitForCondition( () => content.document.getElementById("testDiv").innerHTML == condition, "Waited too long for status in Test 2!" ); } ); ok(true, "test 2 passed"); // set up test 3 let url = HTTP_TEST_ROOT + "test_no_mcb_on_http_site_font2.html"; BrowserTestUtils.loadURIString(gTestBrowser, url); await BrowserTestUtils.browserLoaded(gTestBrowser); }); // ------------- TEST 3 ----------------------------------------- add_task(async function test3() { let expected = "Verifying MCB does not trigger warning/error for an http page "; expected += "with https css that imports another http css which includes http font"; await SpecialPowers.spawn( gTestBrowser, [expected], async function (condition) { await ContentTaskUtils.waitForCondition( () => content.document.getElementById("testDiv").innerHTML == condition, "Waited too long for status in Test 3!" ); } ); ok(true, "test3 passed"); }); // ------------------------------------------------------ add_task(async function cleanup() { BrowserTestUtils.removeTab(gBrowser.selectedTab); });