| <!doctype html> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/common/utils.js"></script> | |
| <script src="/preload/resources/preload_helper.js"></script> | |
| <body> | |
| <script> | |
| const invalidImages = { | |
| 'invalid data': '/preload/resources/echo-with-cors.py?type=image/svg+xml&content=junk', | |
| missing: '/nothing.png' | |
| } | |
| Object.entries(invalidImages).forEach(([name, url]) => { | |
| promise_test(async t => { | |
| const invalidImageURL = getAbsoluteURL(url) | |
| const link = document.createElement('link'); | |
| link.rel = 'preload'; | |
| link.as = 'image'; | |
| link.href = url; | |
| document.head.appendChild(link); | |
| t.add_cleanup(() => link.remove()); | |
| await new Promise(resolve => { | |
| const img = document.createElement('img'); | |
| img.src = url; | |
| img.onerror = resolve; | |
| document.body.appendChild(img); | |
| t.add_cleanup(() => img.remove()); | |
| }); | |
| verifyNumberOfResourceTimingEntries(url, 1); | |
| }, `Preloading an invalid image (${name}) should preload and not re-fetch`) | |
| }) | |
| </script> | |
| </body> |