blob: 178004bce7156cd59000dbc73dd15a0e1a1c99eb [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="/js-test-resources/js-test.js"></script>
<script src="resources/util.js"></script>
<title>Tests for Capped Cache Max-Age</title>
</head>
<body>
<script>
description("Tests that cache max-age is capped for prevalent resources.");
jsTestIsAsync = true;
var loadedUrl;
function firstFetch() {
// This should create a capped cache entry.
fetch("http://localhost:8000/resourceLoadStatistics/resources/cached-permanent-redirect.php",
{
cache: "reload",
headers: {
"X-WebKit": "1234",
}
}
).then(function(response) {
loadedUrl = response.url;
shouldBeEqualToString("loadedUrl", "http://localhost:8000/resourceLoadStatistics/resources/echo-query.php?value=1234");
secondFetch();
}).catch(function(error) {
testFailed(error.message);
setEnableFeature(false, finishJSTest);
});
}
function secondFetch() {
// This should not trigger a successful cache hit and instead create another capped cache entry.
fetch("http://localhost:8000/resourceLoadStatistics/resources/cached-permanent-redirect.php",
{
cache: "force-cache",
headers: {
"X-WebKit": "4321",
}
}
).then(function(response) {
loadedUrl = response.url;
shouldBeEqualToString("loadedUrl", "http://localhost:8000/resourceLoadStatistics/resources/echo-query.php?value=4321");
thirdFetch();
}).catch(function(error) {
testFailed(error.message);
setEnableFeature(false, finishJSTest);
});
}
function thirdFetch() {
// This should not trigger a successful cache hit and instead create another capped cache entry.
fetch("http://localhost:8000/resourceLoadStatistics/resources/cached-permanent-redirect.php",
{
cache: "force-cache",
}
).then(function(response) {
loadedUrl = response.url;
shouldBeEqualToString("loadedUrl", "http://localhost:8000/resourceLoadStatistics/resources/echo-query.php?value=");
fourthFetch();
}).catch(function(error) {
testFailed(error.message);
setEnableFeature(false, finishJSTest);
});
}
function fourthFetch() {
// This should not trigger a successful cache hit but clear capping.
fetch("http://localhost:8000/resourceLoadStatistics/resources/cached-permanent-redirect.php",
{
cache: "force-cache",
}
).then(function(response) {
loadedUrl = response.url;
shouldBeEqualToString("loadedUrl", "http://localhost:8000/resourceLoadStatistics/resources/echo-query.php?value=");
fifthFetch();
}).catch(function(error) {
testFailed(error.message);
setEnableFeature(false, finishJSTest);
});
}
function fifthFetch() {
// This should trigger a regular, successful cache hit.
fetch("http://localhost:8000/resourceLoadStatistics/resources/cached-permanent-redirect.php",
{
headers: {
"X-WebKit": "1234",
}
}
).then(function(response) {
loadedUrl = response.url;
shouldBeEqualToString("loadedUrl", "http://localhost:8000/resourceLoadStatistics/resources/echo-query.php?value=");
setEnableFeature(false, finishJSTest);
}).catch(function(error) {
testFailed(error.message);
setEnableFeature(false, finishJSTest);
});
}
setEnableFeature(true, function() {
if (testRunner.isStatisticsPrevalentResource("http://localhost"))
testFailed("Localhost was classified as prevalent resource before the test started.");
testRunner.setStatisticsCacheMaxAgeCap(0);
testRunner.setStatisticsPrevalentResource("http://localhost", true, function() {
testRunner.statisticsUpdateCookieBlocking(firstFetch);
});
});
</script>
</body>
</html>