mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 05:45:37 +00:00
Bug 909920 - Mixed content warning should not show on a HTTP site - tests (r=tanvi,smaug)
This commit is contained in:
parent
b0b9d93f29
commit
563202bb42
@ -78,6 +78,12 @@ support-files =
|
||||
title_test.svg
|
||||
video.ogg
|
||||
zoom_test.html
|
||||
test_no_mcb_on_http_site_img.html
|
||||
test_no_mcb_on_http_site_img.css
|
||||
test_no_mcb_on_http_site_font.html
|
||||
test_no_mcb_on_http_site_font.css
|
||||
test_no_mcb_on_http_site_font2.html
|
||||
test_no_mcb_on_http_site_font2.css
|
||||
|
||||
[browser_CTP_data_urls.js]
|
||||
[browser_CTP_drag_drop.js]
|
||||
@ -288,3 +294,4 @@ support-files =
|
||||
[browser_zbug569342.js]
|
||||
[browser_registerProtocolHandler_notification.js]
|
||||
[browser_registerProtocolHandler_notification.html]
|
||||
[browser_no_mcb_on_http_site.js]
|
||||
|
138
browser/base/content/test/general/browser_no_mcb_on_http_site.js
Normal file
138
browser/base/content/test/general/browser_no_mcb_on_http_site.js
Normal file
@ -0,0 +1,138 @@
|
||||
/*
|
||||
* 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 gHttpTestRoot = "http://example.com/browser/browser/base/content/test/general/";
|
||||
|
||||
var origBlockActive, origBlockDisplay;
|
||||
var gTestBrowser = null;
|
||||
|
||||
registerCleanupFunction(function() {
|
||||
// Set preferences back to their original values
|
||||
Services.prefs.setBoolPref(PREF_ACTIVE, origBlockActive);
|
||||
Services.prefs.setBoolPref(PREF_DISPLAY, origBlockDisplay);
|
||||
});
|
||||
|
||||
function cleanUpAfterTests() {
|
||||
gBrowser.removeCurrentTab();
|
||||
window.focus();
|
||||
finish();
|
||||
}
|
||||
|
||||
function waitForCondition(condition, nextTest, errorMsg, okMsg) {
|
||||
var tries = 0;
|
||||
var interval = setInterval(function() {
|
||||
if (tries >= 30) {
|
||||
ok(false, errorMsg);
|
||||
moveOn();
|
||||
}
|
||||
if (condition()) {
|
||||
ok(true, okMsg)
|
||||
moveOn();
|
||||
}
|
||||
tries++;
|
||||
}, 100);
|
||||
var moveOn = function() {
|
||||
clearInterval(interval); nextTest();
|
||||
};
|
||||
}
|
||||
|
||||
//------------- TEST 1 -----------------------------------------
|
||||
|
||||
function test1A() {
|
||||
gTestBrowser.removeEventListener("load", test1A, true);
|
||||
|
||||
var expected = "Verifying MCB does not trigger warning/error for an http page ";
|
||||
expected += "with https css that includes http image";
|
||||
waitForCondition(
|
||||
function() content.document.getElementById('testDiv').innerHTML == expected,
|
||||
test1B, "Error: Waited too long for status in Test 1!",
|
||||
"OK: Expected result in innerHTML!");
|
||||
}
|
||||
|
||||
function test1B() {
|
||||
// set up test 2
|
||||
gTestBrowser.addEventListener("load", test2A, true);
|
||||
var url = gHttpTestRoot + "test_no_mcb_on_http_site_font.html";
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
|
||||
//------------- TEST 2 -----------------------------------------
|
||||
|
||||
function test2A() {
|
||||
gTestBrowser.removeEventListener("load", test2A, true);
|
||||
|
||||
var expected = "Verifying MCB does not trigger warning/error for an http page ";
|
||||
expected += "with https css that includes http font";
|
||||
waitForCondition(
|
||||
function() content.document.getElementById('testDiv').innerHTML == expected,
|
||||
test2B, "Error: Waited too long for status in Test 2!",
|
||||
"OK: Expected result in innerHTML!");
|
||||
}
|
||||
|
||||
function test2B() {
|
||||
// set up test 3
|
||||
gTestBrowser.addEventListener("load", test3, true);
|
||||
var url = gHttpTestRoot + "test_no_mcb_on_http_site_font2.html";
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
|
||||
//------------- TEST 3 -----------------------------------------
|
||||
|
||||
function test3() {
|
||||
gTestBrowser.removeEventListener("load", test3, true);
|
||||
|
||||
var 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";
|
||||
waitForCondition(
|
||||
function() content.document.getElementById('testDiv').innerHTML == expected,
|
||||
cleanUpAfterTests, "Error: Waited too long for status in Test 3!",
|
||||
"OK: Expected result in innerHTML!");
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
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);
|
||||
origBlockDisplay = Services.prefs.getBoolPref(PREF_DISPLAY);
|
||||
|
||||
Services.prefs.setBoolPref(PREF_ACTIVE, true);
|
||||
Services.prefs.setBoolPref(PREF_DISPLAY, true);
|
||||
|
||||
var newTab = gBrowser.addTab();
|
||||
gBrowser.selectedTab = newTab;
|
||||
gTestBrowser = gBrowser.selectedBrowser;
|
||||
newTab.linkedBrowser.stop();
|
||||
|
||||
gTestBrowser.addEventListener("load", test1A, true);
|
||||
var url = gHttpTestRoot + "test_no_mcb_on_http_site_img.html";
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
@font-face {
|
||||
font-family: testFont;
|
||||
src: url(http://example.com/browser/browser/devtools/fontinspector/test/browser_font.woff);
|
||||
}
|
||||
body {
|
||||
font-family: Arial;
|
||||
}
|
||||
div {
|
||||
font-family: testFont;
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
Test 2 for Bug 909920 - See file browser_no_mcb_on_http_site.js for description.
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=909920
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test 2 for Bug 909920</title>
|
||||
<link rel="stylesheet" type="text/css" href="https://example.com/browser/browser/base/content/test/general/test_no_mcb_on_http_site_font.css" />
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function checkLoadStates() {
|
||||
var ui = SpecialPowers.wrap(window)
|
||||
.QueryInterface(SpecialPowers.Ci.nsIInterfaceRequestor)
|
||||
.getInterface(SpecialPowers.Ci.nsIWebNavigation)
|
||||
.QueryInterface(SpecialPowers.Ci.nsIDocShell)
|
||||
.securityUI;
|
||||
|
||||
var loadedMixedActive = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT);
|
||||
is(loadedMixedActive, false, "OK: Should not load mixed active content!");
|
||||
|
||||
var blockedMixedActive = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_BLOCKED_MIXED_ACTIVE_CONTENT);
|
||||
is(blockedMixedActive, false, "OK: Should not block mixed active content!");
|
||||
|
||||
var loadedMixedDisplay = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_LOADED_MIXED_DISPLAY_CONTENT);
|
||||
is(loadedMixedDisplay, false, "OK: Should not load mixed display content!");
|
||||
|
||||
var blockedMixedDisplay = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_BLOCKED_MIXED_DISPLAY_CONTENT);
|
||||
is(blockedMixedDisplay, false, "OK: Should not block mixed display content!");
|
||||
|
||||
var newValue = "Verifying MCB does not trigger warning/error for an http page with https css that includes http font";
|
||||
document.getElementById("testDiv").innerHTML = newValue;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="checkLoadStates()">
|
||||
<div class="testDiv" id="testDiv">
|
||||
Testing MCB does not trigger warning/error for an http page with https css that includes http font
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1 @@
|
||||
@import url(http://example.com/browser/browser/base/content/test/general/test_no_mcb_on_http_site_font.css);
|
@ -0,0 +1,48 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
Test 3 for Bug 909920 - See file browser_no_mcb_on_http_site.js for description.
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=909920
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test 3 for Bug 909920</title>
|
||||
<link rel="stylesheet" type="text/css" href="https://example.com/browser/browser/base/content/test/general/test_no_mcb_on_http_site_font2.css" />
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function checkLoadStates() {
|
||||
var ui = SpecialPowers.wrap(window)
|
||||
.QueryInterface(SpecialPowers.Ci.nsIInterfaceRequestor)
|
||||
.getInterface(SpecialPowers.Ci.nsIWebNavigation)
|
||||
.QueryInterface(SpecialPowers.Ci.nsIDocShell)
|
||||
.securityUI;
|
||||
|
||||
var loadedMixedActive = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT);
|
||||
is(loadedMixedActive, false, "OK: Should not load mixed active content!");
|
||||
|
||||
var blockedMixedActive = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_BLOCKED_MIXED_ACTIVE_CONTENT);
|
||||
is(blockedMixedActive, false, "OK: Should not block mixed active content!");
|
||||
|
||||
var loadedMixedDisplay = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_LOADED_MIXED_DISPLAY_CONTENT);
|
||||
is(loadedMixedDisplay, false, "OK: Should not load mixed display content!");
|
||||
|
||||
var blockedMixedDisplay = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_BLOCKED_MIXED_DISPLAY_CONTENT);
|
||||
is(blockedMixedDisplay, false, "OK: Should not block mixed display content!");
|
||||
|
||||
var newValue = "Verifying MCB does not trigger warning/error for an http page ";
|
||||
newValue += "with https css that imports another http css which includes http font";
|
||||
document.getElementById("testDiv").innerHTML = newValue;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="checkLoadStates()">
|
||||
<div class="testDiv" id="testDiv">
|
||||
Testing MCB does not trigger warning/error for an http page with https css that imports another http css which includes http font
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,3 @@
|
||||
#testDiv {
|
||||
background: url(http://example.com/tests/image/test/mochitest/blue.png)
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
Test 1 for Bug 909920 - See file browser_no_mcb_on_http_site.js for description.
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=909920
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test 1 for Bug 909920</title>
|
||||
<link rel="stylesheet" type="text/css" href="https://example.com/browser/browser/base/content/test/general/test_no_mcb_on_http_site_img.css" />
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function checkLoadStates() {
|
||||
var ui = SpecialPowers.wrap(window)
|
||||
.QueryInterface(SpecialPowers.Ci.nsIInterfaceRequestor)
|
||||
.getInterface(SpecialPowers.Ci.nsIWebNavigation)
|
||||
.QueryInterface(SpecialPowers.Ci.nsIDocShell)
|
||||
.securityUI;
|
||||
|
||||
var loadedMixedActive = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT);
|
||||
is(loadedMixedActive, false, "OK: Should not load mixed active content!");
|
||||
|
||||
var blockedMixedActive = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_BLOCKED_MIXED_ACTIVE_CONTENT);
|
||||
is(blockedMixedActive, false, "OK: Should not block mixed active content!");
|
||||
|
||||
var loadedMixedDisplay = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_LOADED_MIXED_DISPLAY_CONTENT);
|
||||
is(loadedMixedDisplay, false, "OK: Should not load mixed display content!");
|
||||
|
||||
var blockedMixedDisplay = ui &&
|
||||
(ui.state & SpecialPowers.Ci.nsIWebProgressListener.STATE_BLOCKED_MIXED_DISPLAY_CONTENT);
|
||||
is(blockedMixedDisplay, false, "OK: Should not block mixed display content!");
|
||||
|
||||
var newValue = "Verifying MCB does not trigger warning/error for an http page with https css that includes http image";
|
||||
document.getElementById("testDiv").innerHTML = newValue;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="checkLoadStates()">
|
||||
<div class="testDiv" id="testDiv">
|
||||
Testing MCB does not trigger warning/error for an http page with https css that includes http image
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user