| <!DOCTYPE html> |
| <body> |
| Image object may not be captured by the promise of Image.decode.</br> |
| If GC kicks in before promise is resolved/rejected, Image object should be kept alive.</br> |
| </body> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| let decode_promises = []; |
| |
| for (var i = 0; i < 5; i++) { |
| let image = new Image(); |
| image.src = '../../images/resources/apng00.png'; |
| decode_promises.push(image.decode()); |
| } |
| |
| Promise.all(decode_promises).then(() => { |
| document.body.innerHTML += 'PASS; no crash.'; |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| }); |
| |
| // Aggressive GC to trigger "GC when decode callback is pending". |
| if (window.GCController) { |
| setInterval(() => { |
| GCController.collectAll(); |
| }, 1); |
| } |
| </script> |