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