test_view_image_revoked_cached_blob.html (1041B)
1 <!doctype html> 2 <html class="wait"> 3 <meta charset="utf-8"> 4 <title>currentSrc is right even if underlying image is a shared blob</title> 5 <img id="first"> 6 <img id="second"> 7 <script> 8 (async function() { 9 let canvas = document.createElement("canvas"); 10 canvas.width = 100; 11 canvas.height = 100; 12 let ctx = canvas.getContext("2d"); 13 ctx.fillStyle = "green"; 14 ctx.rect(0, 0, 100, 100); 15 ctx.fill(); 16 17 let blob = await new Promise(resolve => canvas.toBlob(resolve)); 18 19 let first = document.querySelector("#first"); 20 let second = document.querySelector("#second"); 21 22 let firstLoad = new Promise(resolve => { 23 first.addEventListener("load", resolve, { once: true }); 24 }); 25 26 let secondLoad = new Promise(resolve => { 27 second.addEventListener("load", resolve, { once: true }); 28 }); 29 30 let uri1 = URL.createObjectURL(blob); 31 let uri2 = URL.createObjectURL(blob); 32 first.src = uri1; 33 second.src = uri2; 34 35 await firstLoad; 36 await secondLoad; 37 URL.revokeObjectURL(uri1); 38 document.documentElement.className = ""; 39 }()); 40 </script>