Files
sousa-gecko/devtools/shared/webconsole/test/chrome/test_network_security-hsts.html
T
Hubert Boma Manilla fc5a8ad266 Bug 1557795 - [devtools] Start triggering multiple network events updates r=devtools-reviewers,jdescottes
Lets start triggering updates at certain keypoint in the cycle instead
batching into one update at the end.
This should depend on mechanisim for throttling resources so as not to spam the
frontend with lots of updates

Differential Revision: https://phabricator.services.mozilla.com/D247424
2025-07-01 23:01:47 +00:00

90 lines
2.5 KiB
HTML

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Test for the network actor (HSTS detection)</title>
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Test for the network actor (HSTS detection)</p>
<iframe src="https://example.com/chrome/devtools/shared/webconsole/test/chrome/network_requests_iframe.html"></iframe>
<script class="testbody" type="text/javascript">
"use strict";
SimpleTest.waitForExplicitFinish();
const TEST_CASES = [
{
desc: "no HSTS",
url: "https://example.com",
usesHSTS: false,
},
{
desc: "HSTS from this response",
url: "https://example.com/"+
"browser/browser/base/content/test/general/browser_star_hsts.sjs",
usesHSTS: true,
},
{
desc: "stored HSTS from previous response",
url: "https://example.com/",
usesHSTS: true,
}
];
async function startTest()
{
info("Test detection of HTTP Strict Transport Security.");
for (const testCase of TEST_CASES) {
await checkHSTS(testCase)
}
// Reset HSTS state.
const gSSService = Cc["@mozilla.org/ssservice;1"].getService(Ci.nsISiteSecurityService);
const uri = Services.io.newURI(TEST_CASES[0].url);
gSSService.resetState(uri);
SimpleTest.finish();
}
async function checkHSTS({ url, usesHSTS}) {
info("Testing HSTS for " + url);
const commands = await createCommandsForTab();
const resourceCommand = commands.resourceCommand;
const resource = await new Promise(resolve => {
resourceCommand
.watchResources([resourceCommand.TYPES.NETWORK_EVENT], {
onAvailable: () => {},
onUpdated: resourceUpdate => {
if (resourceUpdate[0].update.resourceUpdates.responseEndAvailable) {
resolve(resourceUpdate[0].resource);
}
},
})
.then(() => {
// Spawn the network requests after we started watching
const iframe = document.querySelector("iframe").contentWindow;
iframe.wrappedJSObject.makeXhrCallback("GET", url);
});
});
const packet = await commands.client.request({ to: resource.actor, type: "getSecurityInfo" });
is(
packet.securityInfo.hsts,
usesHSTS,
"Strict Transport Security detected correctly for " + url
);
await commands.destroy();
}
addEventListener("load", startTest, { once: true });
</script>
</body>
</html>