diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-iframe.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-iframe.html | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-iframe.html b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-iframe.html new file mode 100644 index 0000000000..ed14a007a6 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-iframe.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<meta name="timeout" content="long"> +<title>HTMLImageElement.prototype.decode(), iframe tests.</title> +<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<iframe id="frame_loaded" srcdoc="iframe"></iframe> +<iframe id="frame_notloaded" srcdoc="iframe"></iframe> +<iframe id="frame_notloaded2" srcdoc="iframe"></iframe> + +<script> +"use strict"; + +promise_test(function() { + return new Promise(function(resolve, reject) { + var frame = document.getElementById("frame_loaded"); + var img = frame.contentDocument.createElement("img"); + img.src = "/images/green.png"; + img.onload = function() { + // At this point the frame which created the img is removed, so decode() should fail. + frame.parentNode.removeChild(frame); + img.decode().then(function() { + assert_unreached("Unexpected success"); + }, function() { + resolve(); + }); + }; + }); +}, document.title + " Decode from removed iframe fails (loaded img)"); + +promise_test(function(t) { + var frame = document.getElementById("frame_notloaded"); + var img = frame.contentDocument.createElement("img"); + img.src = "/images/green.png"; + frame.parentNode.removeChild(frame); + var promise = img.decode(); + return promise_rejects_dom(t, "EncodingError", promise); +}, document.title + " Decode from removed iframe fails (img not loaded)"); + +promise_test(function(t) { + var frame = document.getElementById("frame_notloaded2"); + var img = frame.contentDocument.createElement("img"); + img.src = "/images/green.png"; + // First request a promise, then remove the iframe. + var promise = img.decode(); + frame.parentNode.removeChild(frame); + return promise_rejects_dom(t, "EncodingError", promise); +}, document.title + " Decode from iframe, later removed, fails (img not loaded)"); + +</script> + |