From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../test/https-only/browser_upgrade_exemption.js | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 dom/security/test/https-only/browser_upgrade_exemption.js (limited to 'dom/security/test/https-only/browser_upgrade_exemption.js') diff --git a/dom/security/test/https-only/browser_upgrade_exemption.js b/dom/security/test/https-only/browser_upgrade_exemption.js new file mode 100644 index 0000000000..23d857b511 --- /dev/null +++ b/dom/security/test/https-only/browser_upgrade_exemption.js @@ -0,0 +1,80 @@ +"use strict"; + +const PAGE_WITHOUT_SCHEME = "://example.com"; + +add_task(async function () { + // Load a insecure page with HTTPS-Only and HTTPS-First disabled + await runTest({ + loadScheme: "http", + expectScheme: "http", + }); + + // Load a secure page with HTTPS-Only and HTTPS-First disabled + await runTest({ + loadScheme: "https", + expectScheme: "https", + }); + + // Load a exempted insecure page with HTTPS-Only and HTTPS-First disabled + await runTest({ + exempt: true, + loadScheme: "http", + expectScheme: "http", + }); + + await SpecialPowers.pushPrefEnv({ + set: [["dom.security.https_only_mode", true]], + }); + + // Load a insecure page with HTTPS-Only enabled + await runTest({ + loadScheme: "http", + expectScheme: "https", + }); + + // Load a exempted insecure page with HTTPS-Only enabled + await runTest({ + exempt: true, + loadScheme: "http", + expectScheme: "http", + }); + + await SpecialPowers.flushPrefEnv(); + await SpecialPowers.pushPrefEnv({ + set: [["dom.security.https_first", true]], + }); + + // Load a insecure page with HTTPS-First enabled + await runTest({ + loadScheme: "http", + expectScheme: "https", + }); + + // Load a exempted insecure page with HTTPS-First enabled + await runTest({ + exempt: true, + loadScheme: "http", + expectScheme: "http", + }); +}); + +async function runTest(options) { + const { exempt = false, loadScheme, expectScheme } = options; + const page = loadScheme + PAGE_WITHOUT_SCHEME; + + if (exempt) { + await SpecialPowers.pushPermissions([ + { + type: "https-only-load-insecure", + allow: true, + context: page, + }, + ]); + } + + await BrowserTestUtils.withNewTab(page, async function (browser) { + is(browser.currentURI.scheme, expectScheme, "Unexpected scheme"); + await SpecialPowers.popPermissions(); + await SpecialPowers.popPrefEnv(); + }); +} -- cgit v1.2.3