fune/dom/security/test/https-first/browser_httpsfirst.js

73 lines
1.7 KiB
JavaScript

"use strict";
const TEST_PATH_HTTP = getRootDirectory(gTestPath).replace(
"chrome://mochitests/content",
"http://example.com"
);
const TIMEOUT_PAGE_URI_HTTP =
TEST_PATH_HTTP + "file_httpsfirst_timeout_server.sjs";
async function runPrefTest(aURI, aDesc, aAssertURLStartsWith) {
await BrowserTestUtils.withNewTab("about:blank", async function(browser) {
const loaded = BrowserTestUtils.browserLoaded(browser, false, null, true);
BrowserTestUtils.loadURIString(browser, aURI);
await loaded;
await ContentTask.spawn(browser, { aDesc, aAssertURLStartsWith }, function({
aDesc,
aAssertURLStartsWith,
}) {
ok(
content.document.location.href.startsWith(aAssertURLStartsWith),
aDesc
);
});
});
}
add_task(async function() {
await SpecialPowers.pushPrefEnv({
set: [["dom.security.https_first", false]],
});
await runPrefTest(
"http://example.com",
"HTTPS-First disabled; Should not upgrade",
"http://"
);
await SpecialPowers.pushPrefEnv({
set: [["dom.security.https_first", true]],
});
await runPrefTest(
"http://example.com",
"Should upgrade upgradeable website",
"https://"
);
await runPrefTest(
"http://httpsfirst.com",
"Should downgrade after error.",
"http://"
);
await runPrefTest(
"http://httpsfirst.com/?https://httpsfirst.com",
"Should downgrade after error and leave query params untouched.",
"http://httpsfirst.com/?https://httpsfirst.com"
);
await runPrefTest(
"http://domain.does.not.exist",
"Should not downgrade on dnsNotFound error.",
"https://"
);
await runPrefTest(
TIMEOUT_PAGE_URI_HTTP,
"Should downgrade after timeout.",
"http://"
);
});