/* Any copyright is dedicated to the Public Domain. https://creativecommons.org/publicdomain/zero/1.0/ */ /* eslint-disable @microsoft/sdl/no-insecure-url */ "use strict"; // Here we test that HTTPS-First only tries to upgrade known TLDs. In detail: // httpsfirst.com -> Should try to upgrade, as .com isn a known TLD // httpsfirst.local -> Should not try to ipgrade, as .local isn't a known TLD // We do that by visiting URLs that are only available via HTTP and detect if a // up- and downgrade happened through the existing Glean temetry. // Also see Bug 1896083 for reference. async function runTest(aURL, aExpectUpDowngrade) { const initialDowngradeCount = Glean.httpsfirst.downgraded.testGetValue(); BrowserTestUtils.startLoadingURIString(gBrowser, aURL); await BrowserTestUtils.browserLoaded(gBrowser, false, null, true); is( Glean.httpsfirst.downgraded.testGetValue(), aExpectUpDowngrade ? initialDowngradeCount + 1 : initialDowngradeCount, `${ aExpectUpDowngrade ? "A" : "No" } up- and downgrade should have happened on ${aURL}` ); } add_task(async function test_tlds() { await SpecialPowers.pushPrefEnv({ set: [["dom.security.https_first", true]], }); await runTest("http://httpsfirst.com", true); await runTest("http://httpsfirst.local", false); await runTest("http://httpsfirst", false); });