diff options
Diffstat (limited to 'browser/base/content/test/general/browser_mcb_redirect.js')
-rw-r--r-- | browser/base/content/test/general/browser_mcb_redirect.js | 314 |
1 files changed, 0 insertions, 314 deletions
diff --git a/browser/base/content/test/general/browser_mcb_redirect.js b/browser/base/content/test/general/browser_mcb_redirect.js deleted file mode 100644 index 41b4e9468..000000000 --- a/browser/base/content/test/general/browser_mcb_redirect.js +++ /dev/null @@ -1,314 +0,0 @@ -/* - * Description of the Tests for - * - Bug 418354 - Call Mixed content blocking on redirects - * - * Single redirect script tests - * 1. Load a script over https inside an https page - * - the server responds with a 302 redirect to a >> HTTP << script - * - the doorhanger should appear! - * - * 2. Load a script over https inside an http page - * - the server responds with a 302 redirect to a >> HTTP << script - * - the doorhanger should not appear! - * - * Single redirect image tests - * 3. Load an image over https inside an https page - * - the server responds with a 302 redirect to a >> HTTP << image - * - the image should not load - * - * 4. Load an image over https inside an http page - * - the server responds with a 302 redirect to a >> HTTP << image - * - the image should load and get cached - * - * Single redirect cached image tests - * 5. Using offline mode to ensure we hit the cache, load a cached image over - * https inside an http page - * - the server would have responded with a 302 redirect to a >> HTTP << - * image, but instead we try to use the cached image. - * - the image should load - * - * 6. Using offline mode to ensure we hit the cache, load a cached image over - * https inside an https page - * - the server would have responded with a 302 redirect to a >> HTTP << - * image, but instead we try to use the cached image. - * - the image should not load - * - * Double redirect image test - * 7. Load an image over https inside an http page - * - the server responds with a 302 redirect to a >> HTTP << server - * - the HTTP server responds with a 302 redirect to a >> HTTPS << image - * - the image should load and get cached - * - * Double redirect cached image tests - * 8. Using offline mode to ensure we hit the cache, load a cached image over - * https inside an http page - * - the image would have gone through two redirects: HTTPS->HTTP->HTTPS, - * but instead we try to use the cached image. - * - the image should load - * - * 9. Using offline mode to ensure we hit the cache, load a cached image over - * https inside an https page - * - the image would have gone through two redirects: HTTPS->HTTP->HTTPS, - * but instead we try to use the cached image. - * - the image should not load - */ - -const PREF_ACTIVE = "security.mixed_content.block_active_content"; -const PREF_DISPLAY = "security.mixed_content.block_display_content"; -const gHttpsTestRoot = "https://example.com/browser/browser/base/content/test/general/"; -const gHttpTestRoot = "http://example.com/browser/browser/base/content/test/general/"; - -var origBlockActive; -var origBlockDisplay; -var gTestBrowser = null; - -// ------------------------ Helper Functions --------------------- - -registerCleanupFunction(function() { - // Set preferences back to their original values - Services.prefs.setBoolPref(PREF_ACTIVE, origBlockActive); - Services.prefs.setBoolPref(PREF_DISPLAY, origBlockDisplay); - - // Make sure we are online again - Services.io.offline = false; -}); - -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++; - }, 500); - var moveOn = function() { - clearInterval(interval); nextTest(); - }; -} - -// ------------------------ Test 1 ------------------------------ - -function test1() { - gTestBrowser.addEventListener("load", checkUIForTest1, true); - var url = gHttpsTestRoot + "test_mcb_redirect.html" - gTestBrowser.contentWindow.location = url; -} - -function checkUIForTest1() { - gTestBrowser.removeEventListener("load", checkUIForTest1, true); - - assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false}); - - var expected = "script blocked"; - waitForCondition( - () => content.document.getElementById('mctestdiv').innerHTML == expected, - test2, "Error: Waited too long for status in Test 1!", - "OK: Expected result in innerHTML for Test1!"); -} - -// ------------------------ Test 2 ------------------------------ - -function test2() { - gTestBrowser.addEventListener("load", checkUIForTest2, true); - var url = gHttpTestRoot + "test_mcb_redirect.html" - gTestBrowser.contentWindow.location = url; -} - -function checkUIForTest2() { - gTestBrowser.removeEventListener("load", checkUIForTest2, true); - - assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: false, passiveLoaded: false}); - - var expected = "script executed"; - waitForCondition( - () => content.document.getElementById('mctestdiv').innerHTML == expected, - test3, "Error: Waited too long for status in Test 2!", - "OK: Expected result in innerHTML for Test2!"); -} - -// ------------------------ Test 3 ------------------------------ -// HTTPS page loading insecure image -function test3() { - gTestBrowser.addEventListener("load", checkLoadEventForTest3, true); - var url = gHttpsTestRoot + "test_mcb_redirect_image.html" - gTestBrowser.contentWindow.location = url; -} - -function checkLoadEventForTest3() { - gTestBrowser.removeEventListener("load", checkLoadEventForTest3, true); - - var expected = "image blocked" - waitForCondition( - () => content.document.getElementById('mctestdiv').innerHTML == expected, - test4, "Error: Waited too long for status in Test 3!", - "OK: Expected result in innerHTML for Test3!"); -} - -// ------------------------ Test 4 ------------------------------ -// HTTP page loading insecure image -function test4() { - gTestBrowser.addEventListener("load", checkLoadEventForTest4, true); - var url = gHttpTestRoot + "test_mcb_redirect_image.html" - gTestBrowser.contentWindow.location = url; -} - -function checkLoadEventForTest4() { - gTestBrowser.removeEventListener("load", checkLoadEventForTest4, true); - - var expected = "image loaded" - waitForCondition( - () => content.document.getElementById('mctestdiv').innerHTML == expected, - test5, "Error: Waited too long for status in Test 4!", - "OK: Expected result in innerHTML for Test4!"); -} - -// ------------------------ Test 5 ------------------------------ -// HTTP page laoding insecure cached image -// Assuming test 4 succeeded, the image has already been loaded once -// and hence should be cached per the sjs cache-control header -// Going into offline mode to ensure we are loading from the cache. -function test5() { - gTestBrowser.addEventListener("load", checkLoadEventForTest5, true); - // Go into offline mode - Services.io.offline = true; - var url = gHttpTestRoot + "test_mcb_redirect_image.html" - gTestBrowser.contentWindow.location = url; -} - -function checkLoadEventForTest5() { - gTestBrowser.removeEventListener("load", checkLoadEventForTest5, true); - - var expected = "image loaded" - waitForCondition( - () => content.document.getElementById('mctestdiv').innerHTML == expected, - test6, "Error: Waited too long for status in Test 5!", - "OK: Expected result in innerHTML for Test5!"); - // Go back online - Services.io.offline = false; -} - -// ------------------------ Test 6 ------------------------------ -// HTTPS page loading insecure cached image -// Assuming test 4 succeeded, the image has already been loaded once -// and hence should be cached per the sjs cache-control header -// Going into offline mode to ensure we are loading from the cache. -function test6() { - gTestBrowser.addEventListener("load", checkLoadEventForTest6, true); - // Go into offline mode - Services.io.offline = true; - var url = gHttpsTestRoot + "test_mcb_redirect_image.html" - gTestBrowser.contentWindow.location = url; -} - -function checkLoadEventForTest6() { - gTestBrowser.removeEventListener("load", checkLoadEventForTest6, true); - - var expected = "image blocked" - waitForCondition( - () => content.document.getElementById('mctestdiv').innerHTML == expected, - test7, "Error: Waited too long for status in Test 6!", - "OK: Expected result in innerHTML for Test6!"); - // Go back online - Services.io.offline = false; -} - -// ------------------------ Test 7 ------------------------------ -// HTTP page loading insecure image that went through a double redirect -function test7() { - gTestBrowser.addEventListener("load", checkLoadEventForTest7, true); - var url = gHttpTestRoot + "test_mcb_double_redirect_image.html" - gTestBrowser.contentWindow.location = url; -} - -function checkLoadEventForTest7() { - gTestBrowser.removeEventListener("load", checkLoadEventForTest7, true); - - var expected = "image loaded" - waitForCondition( - () => content.document.getElementById('mctestdiv').innerHTML == expected, - test8, "Error: Waited too long for status in Test 7!", - "OK: Expected result in innerHTML for Test7!"); -} - -// ------------------------ Test 8 ------------------------------ -// HTTP page loading insecure cached image that went through a double redirect -// Assuming test 7 succeeded, the image has already been loaded once -// and hence should be cached per the sjs cache-control header -// Going into offline mode to ensure we are loading from the cache. -function test8() { - gTestBrowser.addEventListener("load", checkLoadEventForTest8, true); - // Go into offline mode - Services.io.offline = true; - var url = gHttpTestRoot + "test_mcb_double_redirect_image.html" - gTestBrowser.contentWindow.location = url; -} - -function checkLoadEventForTest8() { - gTestBrowser.removeEventListener("load", checkLoadEventForTest8, true); - - var expected = "image loaded" - waitForCondition( - () => content.document.getElementById('mctestdiv').innerHTML == expected, - test9, "Error: Waited too long for status in Test 8!", - "OK: Expected result in innerHTML for Test8!"); - // Go back online - Services.io.offline = false; -} - -// ------------------------ Test 9 ------------------------------ -// HTTPS page loading insecure cached image that went through a double redirect -// Assuming test 7 succeeded, the image has already been loaded once -// and hence should be cached per the sjs cache-control header -// Going into offline mode to ensure we are loading from the cache. -function test9() { - gTestBrowser.addEventListener("load", checkLoadEventForTest9, true); - // Go into offline mode - Services.io.offline = true; - var url = gHttpsTestRoot + "test_mcb_double_redirect_image.html" - gTestBrowser.contentWindow.location = url; -} - -function checkLoadEventForTest9() { - gTestBrowser.removeEventListener("load", checkLoadEventForTest9, true); - - var expected = "image blocked" - waitForCondition( - () => content.document.getElementById('mctestdiv').innerHTML == expected, - cleanUpAfterTests, "Error: Waited too long for status in Test 9!", - "OK: Expected result in innerHTML for Test9!"); - // Go back online - Services.io.offline = false; -} - -// ------------------------ SETUP ------------------------------ - -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); - - pushPrefs(["dom.ipc.processCount", 1]).then(() => { - var newTab = gBrowser.addTab(); - gBrowser.selectedTab = newTab; - gTestBrowser = gBrowser.selectedBrowser; - newTab.linkedBrowser.stop(); - - executeSoon(test1); - }); -} |