chromium/third_party/blink/web_tests/http/tests/xmlhttprequest/sync-repeated-and-caching.html

<!DOCTYPE html>
<html>
<head>
<title>Synchronous XMLHttpRequest and caching during document load</title>
</head>
<body>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script type="text/javascript">

// Test what caching XMLHttpRequest performs when issuing sync
// requests over various verbs and with various kinds of query
// portions. Without any cache control headers.
var verbs = [ "GET", "POST" ];

var query_kinds = [
    {query: "'?random'",
     name: "constant query"},
    {query: "",
     name: "no query"},
    {query: "'?' + (Math.random() + Date.now()).toString()",
     name: "unique query string"}];

var base_url = "resources/echo-random.php";

function fetchSyncTextResponse(verb, url) {
    var xhr = new XMLHttpRequest();
    xhr.open(verb, url, false);
    xhr.send();
    return xhr.responseText;
}

function runTest() {
    for (var i = 0; i < verbs.length; i++) {
        var verb = verbs[i];
        for (var j = 0; j < query_kinds.length; j++) {
            test(function () {
                var q1 = eval(query_kinds[j].query) || "";
                var q2 = eval(query_kinds[j].query) || "";
                var result1 = fetchSyncTextResponse(verb, base_url + q1);
                var result2 = fetchSyncTextResponse(verb, base_url + q2);
                assert_false(result1 === result2);
            }, "Test repeated sync requests using verb '" + verb + "' with " + query_kinds[j].name);
        }
    }
}

test(runTest, document.title);
</script>
</body>
</html>