| <!DOCTYPE html> | |
| <title>Prefetched signed exchange and certificate must not be fetched again</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/common/get-host-info.sub.js"></script> | |
| <script src="/common/utils.js"></script> | |
| <script src="./resources/sxg-util.js"></script> | |
| <body> | |
| <script> | |
| promise_test(async (t) => { | |
| const id = token(); | |
| const sxgUrl = get_host_info().HTTPS_REMOTE_ORIGIN + '/signed-exchange/resources/prefetch-test-sxg.py?id=' + id; | |
| await new Promise(resolve => { | |
| const link = document.createElement('link'); | |
| link.rel = 'prefetch'; | |
| link.href = sxgUrl; | |
| link.as = 'document'; | |
| link.addEventListener('error', t.step_func(() => { | |
| assert_unreached('Prefetch should not fail'); | |
| })); | |
| link.addEventListener('load', t.step_func(() => { | |
| resolve(); | |
| })); | |
| document.body.appendChild(link); | |
| }); | |
| const message_promise = new Promise((resolve) => { | |
| window.addEventListener('message', (event) => { | |
| resolve(event.data); | |
| }, false); | |
| }); | |
| const win = window.open(sxgUrl, "_blank"); | |
| const message = await message_promise; | |
| win.close(); | |
| assert_equals(message, 'loaded'); | |
| }, 'Prefetched signed exchange and certificate must not be fetched again.'); | |
| </script> | |
| </body> |