| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>Test the sequence of events when reporting image timing.</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <body> |
| <script> |
| function test_image_sequence(src, event, t) { |
| const image = document.createElement('img'); |
| const absoluteURL = new URL(src, location.href).toString(); |
| document.body.appendChild(image); |
| t.add_cleanup(() => image.remove()); |
| return new Promise(resolve => { |
| image.addEventListener(event, t.step_func(() => { |
| assert_equals(performance.getEntriesByName(absoluteURL).length, 1); |
| resolve(); |
| })); |
| image.src = src; |
| }); |
| } |
| promise_test(t => test_image_sequence('resources/blue.png', 'load', t), |
| "An image should receive its load event after the ResourceTiming entry is available"); |
| |
| promise_test(t => test_image_sequence('resources/nothing-at-all.png', 'error', t), |
| "A non-existent (404) image should receive its error event after the ResourceTiming entry is available"); |
| |
| promise_test(t => test_image_sequence('resources/invalid.png', 'error', t), |
| "An invalid image should receive its error event after the ResourceTiming entry is available"); |
| </script> |