| <!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> |