clear-prefetch-cache-after-clear-site-data-cache.https.html (2638B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="/common/dispatcher/dispatcher.js"></script> 5 <script src="/common/utils.js"></script> 6 <script src="../resources/utils.js"></script> 7 <script src="resources/utils.sub.js"></script> 8 <script> 9 setup(() => assertSpeculationRulesIsSupported()); 10 11 // Test that Clear-Site-Data header value "prefetchCache" clears prefetch cache 12 promise_test(async t => { 13 let agent = await spawnWindow(t, { protocol: 'https' }); 14 let nextUrl = agent.getExecutorURL({protocol: 'https', page: 2 }); 15 await agent.forceSinglePrefetch(nextUrl); 16 17 // Open new window with url to clear cache data through Clear-Site-Data header. 18 // Ensure that the cache is cleared before the navigation. 19 const gotMessage = new Promise(resolve => { 20 window.addEventListener('message', e => { 21 resolve(e.data); 22 }, { 23 once: true 24 }); 25 }); 26 window.open("/../../clear-site-data/support/clear-site-data-prefetchCache.py"); 27 await gotMessage; 28 29 await agent.navigate(nextUrl); 30 // Because Clear-Site-Data response header is sent, prefetches are expected 31 // to be evicted. 32 // The navigation to nextURL is not expected to use the prefetch cache. 33 assert_not_prefetched(await agent.getRequestHeaders()); 34 }, "clear-site-data prefetchCache headers should prevent it from being fetched"); 35 36 // Test that Clear-Site-Data header value "cache" clears prefetch cache 37 promise_test(async t => { 38 let agent = await spawnWindow(t, { protocol: 'https' }); 39 let nextUrl = agent.getExecutorURL({protocol: 'https', page: 2 }); 40 await agent.forceSinglePrefetch(nextUrl); 41 42 // Open new window with url to clear cache data through Clear-Site-Data header. 43 // Ensure that the cache is cleared before the navigation. 44 const gotMessage = new Promise(resolve => { 45 window.addEventListener('message', e => { 46 resolve(e.data); 47 }, { 48 once: true 49 }); 50 }); 51 let cache_helper = "cache_helper=" + self.crypto.randomUUID() + "&"; 52 window.open("/../../clear-site-data/support/clear-site-data-cache.py?" + cache_helper + "response=single_html&cache&clear_first=all"); 53 await gotMessage; 54 55 await agent.navigate(nextUrl); 56 // Because Clear-Site-Data response header is sent, prefetches are expected 57 // to be evicted. 58 // The navigation to nextURL is not expected to use the prefetch cache. 59 assert_not_prefetched(await agent.getRequestHeaders()); 60 }, "clear-site-data cache headers should prevent it from being fetched"); 61 </script>