diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /browser/base/content/test/siteIdentity/browser_mixed_content_with_navigation.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | browser/base/content/test/siteIdentity/browser_mixed_content_with_navigation.js | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/browser/base/content/test/siteIdentity/browser_mixed_content_with_navigation.js b/browser/base/content/test/siteIdentity/browser_mixed_content_with_navigation.js new file mode 100644 index 0000000000..dd8280b204 --- /dev/null +++ b/browser/base/content/test/siteIdentity/browser_mixed_content_with_navigation.js @@ -0,0 +1,131 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Tests that the site identity indicator is properly updated when loading from +// the BF cache. This is achieved by loading a page, navigating to another page, +// and then going "back" to the first page, as well as the reverse (loading to +// the other page, navigating to the page we're interested in, going back, and +// then going forward again). + +const kBaseURI = getRootDirectory(gTestPath).replace( + "chrome://mochitests/content", + "https://example.com" +); +const kSecureURI = kBaseURI + "dummy_page.html"; + +const kTestcases = [ + { + uri: kBaseURI + "file_mixedPassiveContent.html", + expectErrorPage: false, + expectedIdentityMode: "mixedDisplayContent", + }, + { + uri: kBaseURI + "file_bug1045809_1.html", + expectErrorPage: false, + expectedIdentityMode: "mixedActiveBlocked", + }, + { + uri: "https://expired.example.com", + expectErrorPage: true, + expectedIdentityMode: "certErrorPage", + }, +]; + +add_task(async function () { + for (let testcase of kTestcases) { + await run_testcase(testcase); + } +}); + +async function run_testcase(testcase) { + await SpecialPowers.pushPrefEnv({ + set: [["security.mixed_content.upgrade_display_content", false]], + }); + // Test the forward and back case. + // Start by loading an unrelated URI so that this generalizes well when the + // testcase would otherwise first navigate to an error page, which doesn't + // seem to work with withNewTab. + await BrowserTestUtils.withNewTab("about:blank", async browser => { + // Navigate to the test URI. + BrowserTestUtils.startLoadingURIString(browser, testcase.uri); + if (!testcase.expectErrorPage) { + await BrowserTestUtils.browserLoaded(browser, false, testcase.uri); + } else { + await BrowserTestUtils.waitForErrorPage(browser); + } + let identityMode = window.document.getElementById("identity-box").classList; + ok( + identityMode.contains(testcase.expectedIdentityMode), + `identity should be ${testcase.expectedIdentityMode}` + ); + + // Navigate to a URI that should be secure. + BrowserTestUtils.startLoadingURIString(browser, kSecureURI); + await BrowserTestUtils.browserLoaded(browser, false, kSecureURI); + let secureIdentityMode = + window.document.getElementById("identity-box").className; + is(secureIdentityMode, "verifiedDomain", "identity should be secure now"); + + // Go back to the test page. + browser.webNavigation.goBack(); + if (!testcase.expectErrorPage) { + await BrowserTestUtils.browserStopped(browser, testcase.uri); + } else { + await BrowserTestUtils.waitForErrorPage(browser); + } + let identityModeAgain = + window.document.getElementById("identity-box").classList; + ok( + identityModeAgain.contains(testcase.expectedIdentityMode), + `identity should again be ${testcase.expectedIdentityMode}` + ); + }); + + // Test the back and forward case. + // Start on a secure page. + await BrowserTestUtils.withNewTab(kSecureURI, async browser => { + let secureIdentityMode = + window.document.getElementById("identity-box").className; + is(secureIdentityMode, "verifiedDomain", "identity should start as secure"); + + // Navigate to the test URI. + BrowserTestUtils.startLoadingURIString(browser, testcase.uri); + if (!testcase.expectErrorPage) { + await BrowserTestUtils.browserLoaded(browser, false, testcase.uri); + } else { + await BrowserTestUtils.waitForErrorPage(browser); + } + let identityMode = window.document.getElementById("identity-box").classList; + ok( + identityMode.contains(testcase.expectedIdentityMode), + `identity should be ${testcase.expectedIdentityMode}` + ); + + // Go back to the secure page. + browser.webNavigation.goBack(); + await BrowserTestUtils.browserStopped(browser, kSecureURI); + let secureIdentityModeAgain = + window.document.getElementById("identity-box").className; + is( + secureIdentityModeAgain, + "verifiedDomain", + "identity should be secure again" + ); + + // Go forward again to the test URI. + browser.webNavigation.goForward(); + if (!testcase.expectErrorPage) { + await BrowserTestUtils.browserStopped(browser, testcase.uri); + } else { + await BrowserTestUtils.waitForErrorPage(browser); + } + let identityModeAgain = + window.document.getElementById("identity-box").classList; + ok( + identityModeAgain.contains(testcase.expectedIdentityMode), + `identity should again be ${testcase.expectedIdentityMode}` + ); + }); +} |