blob: 9a4b5b6224c43bb503a880cb8951ca125ac7794e [file] [log] [blame]
<html>
<head>
<title>Testing cache reloading strategy according redirections with different cache state</title>
<script src="/js-test-resources/testharness.js"></script>
<script src="/js-test-resources/testharnessreport.js"></script>
</head>
<body>
<iframe id="iframe1"></iframe>
<iframe id="iframe2"></iframe>
<div id="log"></div>
<script>
var test = async_test();
test.step(function() {
var counter = 0;
var resource = "No";
var baseURL = "resources/cache-control-redirect?code=302&url=cacheable-random-text.php&random_id=1";
var testCases = [
{name : "Should reuse resource (cacheable redirection)", expected : true, url : baseURL + "&cache_control=public, max-age=1000", reloadDelay : 0},
{name : "Should reload resource (no-store redirection)", expected : false, url: baseURL + "&cache_control=no-store&max_age=1000", reloadDelay : 0},
{name : "Should reload resource (no-cache redirection)", expected : false, url: baseURL + "&cache_control=no-cache&max_age=1000", reloadDelay : 0},
{name : "Should reload resource (must-revalidate redirection)", expected : false, url: baseURL + "&cache_control=must-revalidate&max_age=1000", reloadDelay : 0},
{name : "Should reload resource (expired redirection)", expected : false, url: baseURL + "&cache_control=public, max-age=1", reloadDelay : 1000},
{name : "Should reload resource (implicit expiration)", expected : false, url: baseURL + "", reloadDelay : 100},
{name : "Should reuse resource (301 cacheable redirection)", expected : true, url : baseURL + "&code=301&cache_control=public, max-age=1000", reloadDelay : 0},
{name : "Should reuse resource (301 no-store redirection)", expected : false, url : baseURL + "&code=301&cache_control=no-store", reloadDelay : 0},
{name : "Should reuse resource (301 implicit expiration)", expected : true, url: baseURL + "&code=301", reloadDelay : 100},
];
function loadResource()
{
setFrame1Loader();
document.getElementById('iframe1').src = testCases[counter].url;
}
function reloadResource()
{
setFrame2Loader();
document.getElementById('iframe2').src = testCases[counter].url;
}
function setFrame1Loader()
{
document.getElementById('iframe2').onload = null;
document.getElementById('iframe1').onload = test.step_func(function()
{
resource = document.getElementById('iframe1').contentDocument.body.innerHTML;
setTimeout(test.step_func(reloadResource), testCases[counter].reloadDelay);
});
}
function setFrame2Loader()
{
document.getElementById('iframe1').onload = null;
document.getElementById('iframe2').onload = test.step_func(function ()
{
var testResult = resource == document.getElementById('iframe2').contentDocument.body.innerHTML;
assert_true(testResult == testCases[counter].expected, testCases[counter].name);
document.getElementById('iframe1').contentDocument.body.innerHTML = "frame 1";
document.getElementById('iframe2').contentDocument.body.innerHTML = "frame 2";
if (++counter < testCases.length)
loadResource();
else
test.done();
});
}
document.onload = setTimeout(loadResource, 1);
});
</script>
</body>
</html>