<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>
