diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/embedded-content/the-img-element/adoption.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/embedded-content/the-img-element/adoption.html | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/adoption.html b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/adoption.html new file mode 100644 index 0000000000..15e02bcf51 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/adoption.html @@ -0,0 +1,91 @@ +<!doctype html> +<meta charset=utf-8> +<title>Adopting an image updates the image data</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<div id=log></div> + +<!-- tests --> + +<div id="adoptTest1"></div> +<picture id="adoptTest2"> +<source srcset="/images/green-2x2.png"> +</picture> + +<script> +function resolve(url) { + if (url === "") { + return url; + } + var a = document.createElement('a'); + a.href = url; + return a.href; +} + +function t(desc, data, expect) { + async_test(function(t) { + var d = (new DOMParser()).parseFromString(data, 'text/html'); + var i = d.querySelector('img'); + i.onerror = this.unreached_func('got unexpected error event'); + i.onload = this.step_func_done(function() { + assert_equals(i.currentSrc, resolve(expect)); + }); + var n = d.querySelector('[adopt-node]'); + document.adoptNode(n); + }, desc); +} + +onload = function() { + + t('img (src only)', + '<img src="/images/green-1x1.png" adopt-node>', + '/images/green-1x1.png'); + + t('img (src only), parent is picture', + '<picture adopt-node><img src="/images/green-1x1.png"></picture>', + '/images/green-1x1.png'); + + t('img (src only), previous sibling is source', + '<picture adopt-node><source srcset="/images/green-1x1.png"><img src="/images/green-2x2.png"></picture>', + '/images/green-1x1.png'); + + t('img (srcset 1 cand)', + '<img srcset="/images/green-1x1.png" adopt-node>', + '/images/green-1x1.png'); + + t('img (srcset 1 cand), parent is picture', + '<picture adopt-node><img srcset="/images/green-1x1.png"></picture>', + '/images/green-1x1.png'); + + t('img (srcset 1 cand), previous sibling is source', + '<picture adopt-node><source srcset="/images/green-1x1.png"><img srcset="/images/green-2x2.png"></picture>', + '/images/green-1x1.png'); + + async_test(function(t) { + var d = (new DOMParser()).parseFromString('<template><img src="/images/green-1x1.png"></template>', 'text/html'); + var i = d.querySelector('template').content.querySelector('img').cloneNode(1); + i.onerror = this.unreached_func('got unexpected error event'); + i.onload = this.step_func_done(function() { + assert_equals(i.currentSrc, resolve('/images/green-1x1.png')); + }); + + document.getElementById('adoptTest1').appendChild(i); + }, 'adopt a cloned img in template'); + + async_test(function(t) { + var preload = new Image(); + preload.src = '/images/green-1x1.png?' + Math.random(); + preload.onload = t.step_func(function() { + var d = (new DOMParser()).parseFromString('<img src="' + preload.src + '">', 'text/html'); + var i = d.querySelector('img'); + i.onerror = this.unreached_func('got unexpected error event'); + i.onload = this.step_func_done(function() { + assert_equals(i.currentSrc, resolve("/images/green-2x2.png")); + }); + + var p = document.getElementById('adoptTest2'); + p.appendChild(i); + }); + }, 'adoption is from appendChild'); +}; +</script> |