| <!DOCTYPE html> |
| <title>Ensures that prefetch respects HTTP cache semantics</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/utils.js"></script> |
| <script src="resources/prefetch-helper.js"></script> |
| <body> |
| <script> |
| |
| async function prefetch_and_count(cacheControl, t) { |
| const {href} = await prefetch({ |
| "cache-control": cacheControl, |
| "type": "application/javascript", |
| content: "/**/"}, t); |
| const script = document.createElement("script"); |
| script.src = href; |
| t.add_cleanup(() => script.remove()); |
| const loaded = new Promise(resolve => script.addEventListener("load", resolve)); |
| document.body.appendChild(script); |
| await loaded; |
| const info = await get_prefetch_info(href); |
| return info.length; |
| } |
| |
| promise_test(async t => { |
| const result = await prefetch_and_count("max-age=604800", t); |
| assert_equals(result, 1); |
| }, "Prefetch should populate the HTTP cache"); |
| |
| for (const cacheControl of ["no-cache", "no-store", "max-age=0"]) { |
| promise_test(async t => { |
| const result = await prefetch_and_count(cacheControl, t); |
| assert_equals(result, 2); |
| }, `Prefetch should respect cache-control: ${cacheControl}`); |
| } |
| </script> |
| </body> |