blob: de6a58d3e2219be89db0d0ca810108ae062fdaf5 [file] [log] [blame]
<script src="/js-test-resources/js-test-pre.js"></script>
<script>
description("Validates HTTP headers of speculative validation requests.");
jsTestIsAsync = true;
state = "warmup";
var headersToCheck = ["Accept", "Accept-Encoding", "Accept-Language", "Connection", "Referer", "User-Agent"];
var headerToCheck;
function validationRequestHeader(headerName)
{
return frames[0].allRequestHeaders[headerName];
}
function frameLoaded()
{
if (state == "warmup") {
initialHeaderValues = [];
for (var i = 0; i < headersToCheck.length; i++) {
headerToCheck = headersToCheck[i];
initialHeaderValues[headerToCheck] = validationRequestHeader(headerToCheck);
}
// Navigate frame to 'about:blank' to flush to subresource loads metadata to disk.
state = "flushingMetadata";
document.getElementById("testFrame").src = "about:blank";
return;
}
if (state == "flushingMetadata") {
// Navigate frame to its original location again. This time it should speculatively
// validate subresources as we have subresource loads metadata in the disk cache.
state = "speculativeRevalidation";
document.getElementById("testFrame").src = "resources/validation-request-frame.php";
return;
}
if (state == "speculativeRevalidation") {
// Validate the HTTP headers of the speculative validation request.
shouldBeEqualToString("validationRequestHeader('If-None-Match')", "123456789");
for (var i = 0; i < headersToCheck.length; i++) {
headerToCheck = headersToCheck[i];
shouldBe("validationRequestHeader('" + headerToCheck + "')", "initialHeaderValues['" + headerToCheck + "']");
}
finishJSTest();
return;
}
}
</script>
<iframe id="testFrame" src="resources/validation-request-frame.php" onload="frameLoaded()"></iframe>
<script src="/js-test-resources/js-test-post.js"></script>