adoption.html (2990B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>Adopting an image updates the image data</title> 4 <script src=/resources/testharness.js></script> 5 <script src=/resources/testharnessreport.js></script> 6 <div id=log></div> 7 8 <!-- tests --> 9 10 <div id="adoptTest1"></div> 11 <picture id="adoptTest2"> 12 <source srcset="/images/green-2x2.png"> 13 </picture> 14 15 <script> 16 function resolve(url) { 17 if (url === "") { 18 return url; 19 } 20 var a = document.createElement('a'); 21 a.href = url; 22 return a.href; 23 } 24 25 function t(desc, data, expect) { 26 async_test(function(t) { 27 var d = (new DOMParser()).parseFromString(data, 'text/html'); 28 var i = d.querySelector('img'); 29 i.onerror = this.unreached_func('got unexpected error event'); 30 i.onload = this.step_func_done(function() { 31 assert_equals(i.currentSrc, resolve(expect)); 32 }); 33 var n = d.querySelector('[adopt-node]'); 34 document.adoptNode(n); 35 }, desc); 36 } 37 38 onload = function() { 39 40 t('img (src only)', 41 '<img src="/images/green-1x1.png" adopt-node>', 42 '/images/green-1x1.png'); 43 44 t('img (src only), parent is picture', 45 '<picture adopt-node><img src="/images/green-1x1.png"></picture>', 46 '/images/green-1x1.png'); 47 48 t('img (src only), previous sibling is source', 49 '<picture adopt-node><source srcset="/images/green-1x1.png"><img src="/images/green-2x2.png"></picture>', 50 '/images/green-1x1.png'); 51 52 t('img (srcset 1 cand)', 53 '<img srcset="/images/green-1x1.png" adopt-node>', 54 '/images/green-1x1.png'); 55 56 t('img (srcset 1 cand), parent is picture', 57 '<picture adopt-node><img srcset="/images/green-1x1.png"></picture>', 58 '/images/green-1x1.png'); 59 60 t('img (srcset 1 cand), previous sibling is source', 61 '<picture adopt-node><source srcset="/images/green-1x1.png"><img srcset="/images/green-2x2.png"></picture>', 62 '/images/green-1x1.png'); 63 64 async_test(function(t) { 65 var d = (new DOMParser()).parseFromString('<template><img src="/images/green-1x1.png"></template>', 'text/html'); 66 var i = d.querySelector('template').content.querySelector('img').cloneNode(1); 67 i.onerror = this.unreached_func('got unexpected error event'); 68 i.onload = this.step_func_done(function() { 69 assert_equals(i.currentSrc, resolve('/images/green-1x1.png')); 70 }); 71 72 document.getElementById('adoptTest1').appendChild(i); 73 }, 'adopt a cloned img in template'); 74 75 async_test(function(t) { 76 var preload = new Image(); 77 preload.src = '/images/green-1x1.png?' + Math.random(); 78 preload.onload = t.step_func(function() { 79 var d = (new DOMParser()).parseFromString('<img src="' + preload.src + '">', 'text/html'); 80 var i = d.querySelector('img'); 81 i.onerror = this.unreached_func('got unexpected error event'); 82 i.onload = this.step_func_done(function() { 83 assert_equals(i.currentSrc, resolve("/images/green-2x2.png")); 84 }); 85 86 var p = document.getElementById('adoptTest2'); 87 p.appendChild(i); 88 }); 89 }, 'adoption is from appendChild'); 90 }; 91 </script>