Source code
Revision control
Copy as Markdown
Other Tools
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<script src="/common/utils.js"></script>
<script src="../resources/utils.js"></script>
<script src="resources/utils.sub.js"></script>
<script>
setup(() => assertSpeculationRulesIsSupported());
promise_test(async t => {
let agent = await spawnWindow(t, { protocol: 'https' });
let nextUrl = agent.getExecutorURL({protocol: 'https', page: 2 });
await agent.forceSinglePrefetch(nextUrl);
// Open new window with url to clear cache data through Clear-Site-Data header.
// Ensure that the cache is cleared before the navigation.
const gotMessage = new Promise(resolve => {
window.addEventListener('message', e => {
resolve(e.data);
}, {
once: true
});
});
let cache_helper = "cache_helper=" + token() + "&";
window.open("../../clear-site-data/support/clear-site-data-cache.py?" + cache_helper + "response=single_html&cache&clear_first=all"); await gotMessage;
await gotMessage;
await agent.navigate(nextUrl);
// Because Clear-Site-Data response header is sent, prefetches are expected
// to be evicted.
// The navigation to nextURL is not expected to use the prefetch cache.
assert_not_prefetched(await agent.getRequestHeaders());
}, "clear-site-data cache headers should prevent it from being fetched");
</script>