mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-12 14:20:14 +02:00
MozReview-Commit-ID: 5BKZXFPn7PW --HG-- rename : browser/base/content/test/general/browser_bug1045809.js => browser/base/content/test/siteIdentity/browser_bug1045809.js rename : browser/base/content/test/general/browser_bug435035.js => browser/base/content/test/siteIdentity/browser_bug435035.js rename : browser/base/content/test/general/browser_bug822367.js => browser/base/content/test/siteIdentity/browser_bug822367.js rename : browser/base/content/test/general/browser_bug902156.js => browser/base/content/test/siteIdentity/browser_bug902156.js rename : browser/base/content/test/general/browser_bug906190.js => browser/base/content/test/siteIdentity/browser_bug906190.js rename : browser/base/content/test/general/browser_csp_block_all_mixedcontent.js => browser/base/content/test/siteIdentity/browser_csp_block_all_mixedcontent.js rename : browser/base/content/test/general/browser_identity_UI.js => browser/base/content/test/siteIdentity/browser_identity_UI.js rename : browser/base/content/test/general/browser_insecureLoginForms.js => browser/base/content/test/siteIdentity/browser_insecureLoginForms.js rename : browser/base/content/test/general/browser_mcb_redirect.js => browser/base/content/test/siteIdentity/browser_mcb_redirect.js rename : browser/base/content/test/general/browser_mixedContentFramesOnHttp.js => browser/base/content/test/siteIdentity/browser_mixedContentFramesOnHttp.js rename : browser/base/content/test/general/browser_mixedContentFromOnunload.js => browser/base/content/test/siteIdentity/browser_mixedContentFromOnunload.js rename : browser/base/content/test/general/browser_mixed_content_cert_override.js => browser/base/content/test/siteIdentity/browser_mixed_content_cert_override.js rename : browser/base/content/test/general/browser_mixedcontent_securityflags.js => browser/base/content/test/siteIdentity/browser_mixedcontent_securityflags.js rename : browser/base/content/test/general/browser_no_mcb_on_http_site.js => browser/base/content/test/siteIdentity/browser_no_mcb_on_http_site.js rename : browser/base/content/test/general/file_bug1045809_1.html => browser/base/content/test/siteIdentity/file_bug1045809_1.html rename : browser/base/content/test/general/file_bug1045809_2.html => browser/base/content/test/siteIdentity/file_bug1045809_2.html rename : browser/base/content/test/general/file_bug822367_1.html => browser/base/content/test/siteIdentity/file_bug822367_1.html rename : browser/base/content/test/general/file_bug822367_1.js => browser/base/content/test/siteIdentity/file_bug822367_1.js rename : browser/base/content/test/general/file_bug822367_2.html => browser/base/content/test/siteIdentity/file_bug822367_2.html rename : browser/base/content/test/general/file_bug822367_3.html => browser/base/content/test/siteIdentity/file_bug822367_3.html rename : browser/base/content/test/general/file_bug822367_4.html => browser/base/content/test/siteIdentity/file_bug822367_4.html rename : browser/base/content/test/general/file_bug822367_4.js => browser/base/content/test/siteIdentity/file_bug822367_4.js rename : browser/base/content/test/general/file_bug822367_4B.html => browser/base/content/test/siteIdentity/file_bug822367_4B.html rename : browser/base/content/test/general/file_bug822367_5.html => browser/base/content/test/siteIdentity/file_bug822367_5.html rename : browser/base/content/test/general/file_bug822367_6.html => browser/base/content/test/siteIdentity/file_bug822367_6.html rename : browser/base/content/test/general/file_bug902156.js => browser/base/content/test/siteIdentity/file_bug902156.js rename : browser/base/content/test/general/file_bug902156_1.html => browser/base/content/test/siteIdentity/file_bug902156_1.html rename : browser/base/content/test/general/file_bug902156_2.html => browser/base/content/test/siteIdentity/file_bug902156_2.html rename : browser/base/content/test/general/file_bug902156_3.html => browser/base/content/test/siteIdentity/file_bug902156_3.html rename : browser/base/content/test/general/file_bug906190.js => browser/base/content/test/siteIdentity/file_bug906190.js rename : browser/base/content/test/general/file_bug906190.sjs => browser/base/content/test/siteIdentity/file_bug906190.sjs rename : browser/base/content/test/general/file_bug906190_1.html => browser/base/content/test/siteIdentity/file_bug906190_1.html rename : browser/base/content/test/general/file_bug906190_2.html => browser/base/content/test/siteIdentity/file_bug906190_2.html rename : browser/base/content/test/general/file_bug906190_3_4.html => browser/base/content/test/siteIdentity/file_bug906190_3_4.html rename : browser/base/content/test/general/file_bug906190_redirected.html => browser/base/content/test/siteIdentity/file_bug906190_redirected.html rename : browser/base/content/test/general/file_csp_block_all_mixedcontent.html => browser/base/content/test/siteIdentity/file_csp_block_all_mixedcontent.html rename : browser/base/content/test/general/file_csp_block_all_mixedcontent.js => browser/base/content/test/siteIdentity/file_csp_block_all_mixedcontent.js rename : browser/base/content/test/general/file_mixedContentFramesOnHttp.html => browser/base/content/test/siteIdentity/file_mixedContentFramesOnHttp.html rename : browser/base/content/test/general/file_mixedContentFromOnunload.html => browser/base/content/test/siteIdentity/file_mixedContentFromOnunload.html rename : browser/base/content/test/general/file_mixedContentFromOnunload_test1.html => browser/base/content/test/siteIdentity/file_mixedContentFromOnunload_test1.html rename : browser/base/content/test/general/file_mixedContentFromOnunload_test2.html => browser/base/content/test/siteIdentity/file_mixedContentFromOnunload_test2.html rename : browser/base/content/test/general/file_mixedPassiveContent.html => browser/base/content/test/siteIdentity/file_mixedPassiveContent.html rename : browser/base/content/test/general/insecure_opener.html => browser/base/content/test/siteIdentity/insecure_opener.html rename : browser/base/content/test/general/test-mixedcontent-securityerrors.html => browser/base/content/test/siteIdentity/test-mixedcontent-securityerrors.html rename : browser/base/content/test/general/test_bug435035.html => browser/base/content/test/siteIdentity/test_bug435035.html rename : browser/base/content/test/general/test_mcb_double_redirect_image.html => browser/base/content/test/siteIdentity/test_mcb_double_redirect_image.html rename : browser/base/content/test/general/test_mcb_redirect.html => browser/base/content/test/siteIdentity/test_mcb_redirect.html rename : browser/base/content/test/general/test_mcb_redirect.js => browser/base/content/test/siteIdentity/test_mcb_redirect.js rename : browser/base/content/test/general/test_mcb_redirect.sjs => browser/base/content/test/siteIdentity/test_mcb_redirect.sjs rename : browser/base/content/test/general/test_mcb_redirect_image.html => browser/base/content/test/siteIdentity/test_mcb_redirect_image.html rename : browser/base/content/test/general/test_no_mcb_on_http_site_font.css => browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_font.css rename : browser/base/content/test/general/test_no_mcb_on_http_site_font.html => browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_font.html rename : browser/base/content/test/general/test_no_mcb_on_http_site_font2.css => browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_font2.css rename : browser/base/content/test/general/test_no_mcb_on_http_site_font2.html => browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_font2.html rename : browser/base/content/test/general/test_no_mcb_on_http_site_img.css => browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_img.css rename : browser/base/content/test/general/test_no_mcb_on_http_site_img.html => browser/base/content/test/siteIdentity/test_no_mcb_on_http_site_img.html extra : rebase_source : 82a59bdb1b32194292711f92bb8a819a82b2516c
174 lines
6.4 KiB
JavaScript
174 lines
6.4 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");
|
|
|
|
var origBlockActive;
|
|
var gTestBrowser = null;
|
|
|
|
registerCleanupFunction(function() {
|
|
// Set preferences back to their original values
|
|
Services.prefs.setBoolPref(PREF_ACTIVE, origBlockActive);
|
|
});
|
|
|
|
function cleanUpAfterTests() {
|
|
gBrowser.removeCurrentTab();
|
|
window.focus();
|
|
finish();
|
|
}
|
|
|
|
// ------------------------ Test 1 ------------------------------
|
|
|
|
function test1A() {
|
|
BrowserTestUtils.browserLoaded(gTestBrowser).then(test1B);
|
|
|
|
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
|
|
|
// Disable Mixed Content Protection for the page (and reload)
|
|
let {gIdentityHandler} = gTestBrowser.ownerGlobal;
|
|
gIdentityHandler.disableMixedContentProtection();
|
|
}
|
|
|
|
function test1B() {
|
|
var expected = "Mixed Content Blocker disabled";
|
|
BrowserTestUtils.waitForCondition(
|
|
() => content.document.getElementById("mctestdiv").innerHTML == expected,
|
|
"Error: Waited too long for mixed script to run in Test 1B").then(test1C);
|
|
}
|
|
|
|
function test1C() {
|
|
var actual = content.document.getElementById("mctestdiv").innerHTML;
|
|
is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 1C");
|
|
|
|
// The Script loaded after we disabled the page, now we are going to reload the
|
|
// page and see if our decision is persistent
|
|
BrowserTestUtils.browserLoaded(gTestBrowser).then(test1D);
|
|
|
|
var url = HTTPS_TEST_ROOT_1 + "file_bug902156_2.html";
|
|
gTestBrowser.loadURI(url);
|
|
}
|
|
|
|
function test1D() {
|
|
// The Control Center button should appear but isMixedContentBlocked should be NOT true,
|
|
// because our decision of disabling the mixed content blocker is persistent.
|
|
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: true, activeBlocked: false, passiveLoaded: false});
|
|
|
|
var actual = content.document.getElementById("mctestdiv").innerHTML;
|
|
is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 1D");
|
|
|
|
// move on to Test 2
|
|
test2();
|
|
}
|
|
|
|
// ------------------------ Test 2 ------------------------------
|
|
|
|
function test2() {
|
|
BrowserTestUtils.browserLoaded(gTestBrowser).then(test2A);
|
|
var url = HTTPS_TEST_ROOT_2 + "file_bug902156_2.html";
|
|
gTestBrowser.loadURI(url);
|
|
}
|
|
|
|
function test2A() {
|
|
BrowserTestUtils.browserLoaded(gTestBrowser).then(test2B);
|
|
|
|
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
|
|
|
// Disable Mixed Content Protection for the page (and reload)
|
|
let {gIdentityHandler} = gTestBrowser.ownerGlobal;
|
|
gIdentityHandler.disableMixedContentProtection();
|
|
}
|
|
|
|
function test2B() {
|
|
var expected = "Mixed Content Blocker disabled";
|
|
BrowserTestUtils.waitForCondition(
|
|
() => content.document.getElementById("mctestdiv").innerHTML == expected,
|
|
"Error: Waited too long for mixed script to run in Test 2B").then(test2C);
|
|
}
|
|
|
|
function test2C() {
|
|
var actual = content.document.getElementById("mctestdiv").innerHTML;
|
|
is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 2C");
|
|
|
|
// The Script loaded after we disabled the page, now we are going to reload the
|
|
// page and see if our decision is persistent
|
|
BrowserTestUtils.browserLoaded(gTestBrowser).then(test2D);
|
|
|
|
// reload the page using the provided link in the html file
|
|
var mctestlink = content.document.getElementById("mctestlink");
|
|
mctestlink.click();
|
|
}
|
|
|
|
function test2D() {
|
|
// The Control Center button should appear but isMixedContentBlocked should be NOT true,
|
|
// because our decision of disabling the mixed content blocker is persistent.
|
|
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: true, activeBlocked: false, passiveLoaded: false});
|
|
|
|
var actual = content.document.getElementById("mctestdiv").innerHTML;
|
|
is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 2D");
|
|
|
|
// move on to Test 3
|
|
test3();
|
|
}
|
|
|
|
// ------------------------ Test 3 ------------------------------
|
|
|
|
function test3() {
|
|
BrowserTestUtils.browserLoaded(gTestBrowser).then(test3A);
|
|
var url = HTTPS_TEST_ROOT_1 + "file_bug902156_3.html";
|
|
gTestBrowser.loadURI(url);
|
|
}
|
|
|
|
function test3A() {
|
|
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
|
|
|
// We are done with tests, clean up
|
|
cleanUpAfterTests();
|
|
}
|
|
|
|
// ------------------------------------------------------
|
|
|
|
function test() {
|
|
// Performing async calls, e.g. 'onload', we have to wait till all of them finished
|
|
waitForExplicitFinish();
|
|
|
|
// Store original preferences so we can restore settings after testing
|
|
origBlockActive = Services.prefs.getBoolPref(PREF_ACTIVE);
|
|
|
|
Services.prefs.setBoolPref(PREF_ACTIVE, true);
|
|
|
|
// Not really sure what this is doing
|
|
var newTab = gBrowser.addTab();
|
|
gBrowser.selectedTab = newTab;
|
|
gTestBrowser = gBrowser.selectedBrowser;
|
|
newTab.linkedBrowser.stop()
|
|
|
|
// Starting Test Number 1:
|
|
BrowserTestUtils.browserLoaded(gTestBrowser).then(test1A);
|
|
var url = HTTPS_TEST_ROOT_1 + "file_bug902156_1.html";
|
|
gTestBrowser.loadURI(url);
|
|
}
|