forked from mirrors/gecko-dev
- Switches to add_task and async functions. - Waits for the correct url to be loaded in BTU.browserLoaded. - Gets rid of all the CPOWs because we don't like them. MozReview-Commit-ID: HysaFYIEtVq --HG-- extra : rebase_source : 8065cb8f84b50d7260f36fbc1e6186c782590899
123 lines
5.8 KiB
JavaScript
123 lines
5.8 KiB
JavaScript
/*
|
|
* Description of the Tests for
|
|
* - Bug 902156: Persist "disable protection" option for Mixed Content Blocker
|
|
*
|
|
* 1. Navigate to the same domain via document.location
|
|
* - Load a html page which has mixed content
|
|
* - Control Center button to disable protection appears - we disable it
|
|
* - Load a new page from the same origin using document.location
|
|
* - Control Center button should not appear anymore!
|
|
*
|
|
* 2. Navigate to the same domain via simulateclick for a link on the page
|
|
* - Load a html page which has mixed content
|
|
* - Control Center button to disable protection appears - we disable it
|
|
* - Load a new page from the same origin simulating a click
|
|
* - Control Center button should not appear anymore!
|
|
*
|
|
* 3. Navigate to a differnet domain and show the content is still blocked
|
|
* - Load a different html page which has mixed content
|
|
* - Control Center button to disable protection should appear again because
|
|
* we navigated away from html page where we disabled the protection.
|
|
*
|
|
* Note, for all tests we set gHttpTestRoot to use 'https'.
|
|
*/
|
|
|
|
const PREF_ACTIVE = "security.mixed_content.block_active_content";
|
|
|
|
// We alternate for even and odd test cases to simulate different hosts.
|
|
const HTTPS_TEST_ROOT_1 = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "https://test1.example.com");
|
|
const HTTPS_TEST_ROOT_2 = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "https://test2.example.com");
|
|
|
|
add_task(async function setup() {
|
|
await SpecialPowers.pushPrefEnv({set: [[PREF_ACTIVE, true]]});
|
|
});
|
|
|
|
add_task(async function test1() {
|
|
let url = HTTPS_TEST_ROOT_1 + "file_bug902156_1.html";
|
|
await BrowserTestUtils.withNewTab(url, async function(browser) {
|
|
await assertMixedContentBlockingState(browser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
|
|
|
// Disable Mixed Content Protection for the page (and reload)
|
|
let browserLoaded = BrowserTestUtils.browserLoaded(browser, false, url);
|
|
let {gIdentityHandler} = browser.ownerGlobal;
|
|
gIdentityHandler.disableMixedContentProtection();
|
|
await browserLoaded;
|
|
|
|
await ContentTask.spawn(browser, null, async function() {
|
|
let expected = "Mixed Content Blocker disabled";
|
|
await ContentTaskUtils.waitForCondition(
|
|
() => content.document.getElementById("mctestdiv").innerHTML == expected,
|
|
"Error: Waited too long for mixed script to run in Test 1");
|
|
|
|
let actual = content.document.getElementById("mctestdiv").innerHTML;
|
|
is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 1");
|
|
});
|
|
|
|
// The Script loaded after we disabled the page, now we are going to reload the
|
|
// page and see if our decision is persistent
|
|
url = HTTPS_TEST_ROOT_1 + "file_bug902156_2.html";
|
|
browserLoaded = BrowserTestUtils.browserLoaded(browser, false, url);
|
|
BrowserTestUtils.loadURI(browser, url);
|
|
await browserLoaded;
|
|
|
|
// The Control Center button should appear but isMixedContentBlocked should be NOT true,
|
|
// because our decision of disabling the mixed content blocker is persistent.
|
|
await assertMixedContentBlockingState(browser, {activeLoaded: true, activeBlocked: false, passiveLoaded: false});
|
|
await ContentTask.spawn(browser, null, function() {
|
|
let actual = content.document.getElementById("mctestdiv").innerHTML;
|
|
is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 1");
|
|
});
|
|
});
|
|
});
|
|
|
|
// ------------------------ Test 2 ------------------------------
|
|
|
|
add_task(async function test2() {
|
|
let url = HTTPS_TEST_ROOT_2 + "file_bug902156_2.html";
|
|
await BrowserTestUtils.withNewTab(url, async function(browser) {
|
|
await assertMixedContentBlockingState(browser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
|
|
|
// Disable Mixed Content Protection for the page (and reload)
|
|
let browserLoaded = BrowserTestUtils.browserLoaded(browser, false, url);
|
|
let {gIdentityHandler} = browser.ownerGlobal;
|
|
gIdentityHandler.disableMixedContentProtection();
|
|
await browserLoaded;
|
|
|
|
await ContentTask.spawn(browser, null, async function() {
|
|
let expected = "Mixed Content Blocker disabled";
|
|
await ContentTaskUtils.waitForCondition(
|
|
() => content.document.getElementById("mctestdiv").innerHTML == expected,
|
|
"Error: Waited too long for mixed script to run in Test 2");
|
|
|
|
let actual = content.document.getElementById("mctestdiv").innerHTML;
|
|
is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 2");
|
|
});
|
|
|
|
// The Script loaded after we disabled the page, now we are going to reload the
|
|
// page and see if our decision is persistent
|
|
url = HTTPS_TEST_ROOT_2 + "file_bug902156_1.html";
|
|
browserLoaded = BrowserTestUtils.browserLoaded(browser, false, url);
|
|
// reload the page using the provided link in the html file
|
|
await ContentTask.spawn(browser, null, function() {
|
|
let mctestlink = content.document.getElementById("mctestlink");
|
|
mctestlink.click();
|
|
});
|
|
await browserLoaded;
|
|
|
|
// The Control Center button should appear but isMixedContentBlocked should be NOT true,
|
|
// because our decision of disabling the mixed content blocker is persistent.
|
|
await assertMixedContentBlockingState(browser, {activeLoaded: true, activeBlocked: false, passiveLoaded: false});
|
|
|
|
await ContentTask.spawn(browser, null, function() {
|
|
let actual = content.document.getElementById("mctestdiv").innerHTML;
|
|
is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 2");
|
|
});
|
|
});
|
|
});
|
|
|
|
add_task(async function test3() {
|
|
let url = HTTPS_TEST_ROOT_1 + "file_bug902156_3.html";
|
|
await BrowserTestUtils.withNewTab(url, async function(browser) {
|
|
await assertMixedContentBlockingState(browser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
|
});
|
|
});
|