blob: 949946ca9e3d321276bd2dfcaaff81abf1f093bf [file] [log] [blame]
<script src="/js-test-resources/js-test-pre.js"></script>
<script src="resources/cache-test.js"></script>
<body>
<script>
window.jsTestIsAsync = true;
description("Tests that resources are removed from the cache if they become uncacheable");
var uniqueTestId = Math.floor((Math.random() * 1000000000000));
function loadResource(cacheable, onload)
{
internals.clearMemoryCache();
xhr = new XMLHttpRequest();
xhr.onload = onload;
xhr.open("GET", "resources/generate-response-optionally-cacheable.cgi?uniqueId=" + uniqueTestId, true);
xhr.setRequestHeader("X-Cacheable", cacheable ? "true" : "false");
xhr.send(null);
}
loadResource(true, function() {
// Wait a bit so things settle down in the disk cache.
setTimeout(function () {
debug("Resource should be in the cache now.");
debug("Load resource again using default cache policy.")
loadResource(true, function() {
shouldBeEqualToString("internals.xhrResponseSource(xhr)", "Disk cache");
debug("");
debug("Now load again the same resource, ignoring the cached data.");
internals.setOverrideCachePolicy("ReloadIgnoringCacheData");
debug("This time the resource will not be cacheable");
loadResource(false, function() {
shouldBeEqualToString("internals.xhrResponseSource(xhr)", "Network");
setTimeout(function() {
debug("");
debug("Stale resource should have been removed from the cache.");
debug("");
debug("Now try to load the resource from the cache.");
internals.setOverrideCachePolicy("UseProtocolCachePolicy");
loadResource(false, function() {
shouldBeEqualToString("internals.xhrResponseSource(xhr)", "Network");
finishJSTest();
});
}, 100);
});
});
}, 100);
});
</script>
<script src="/js-test-resources/js-test-post.js"></script>