image-decode.html (4975B)
1 <!DOCTYPE html> 2 <meta charset=utf-8> 3 <meta name="timeout" content="long"> 4 <title>HTMLImageElement.prototype.decode(), basic tests.</title> 5 <link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> 6 <link rel=help href="https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode"> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 10 <script> 11 "use strict"; 12 13 // src tests 14 // ------------------- 15 promise_test(function() { 16 var img = new Image(); 17 img.src = "/images/green.png"; 18 return img.decode().then(function(arg) { 19 assert_equals(arg, undefined); 20 }); 21 }, document.title + " Image with PNG src decodes with undefined."); 22 23 promise_test(function() { 24 var img = new Image(); 25 img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAA" + 26 "D91JpzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QUSEioKsyAgyw" + 27 "AAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAWSURBVA" + 28 "jXY9y3bx8DAwPL58+fGRgYACktBRltLfebAAAAAElFTkSuQmCC"; 29 return img.decode().then(function(arg) { 30 assert_equals(arg, undefined); 31 }); 32 }, document.title + " Image with PNG data URL src decodes with undefined."); 33 34 promise_test(function() { 35 var img = new Image(); 36 img.src = "/images/green.svg"; 37 return img.decode().then(function(arg) { 38 assert_equals(arg, undefined); 39 }); 40 }, document.title + " Image with SVG src decodes with undefined."); 41 42 promise_test(function(t) { 43 var img = new Image(); 44 img.src = "/non/existent/path.png"; 45 var promise = img.decode(); 46 return promise_rejects_dom(t, "EncodingError", promise); 47 }, document.title + " Non-existent src fails decode."); 48 49 promise_test(function(t) { 50 var inactive_doc = document.implementation.createHTMLDocument(); 51 var img = inactive_doc.createElement("img"); 52 img.src = "/images/green.png"; 53 var promise = img.decode(); 54 return promise_rejects_dom(t, "EncodingError", promise); 55 }, document.title + " Inactive document fails decode."); 56 57 promise_test(function(t) { 58 var inactive_doc = document.implementation.createHTMLDocument(); 59 var img = document.createElement("img"); 60 img.src = "/images/green.png"; 61 var promise = img.decode(); 62 inactive_doc.body.appendChild(img); 63 return promise_rejects_dom(t, "EncodingError", promise); 64 }, document.title + " Adopted active image into inactive document fails decode."); 65 66 promise_test(function() { 67 var inactive_doc = document.implementation.createHTMLDocument(); 68 var img = inactive_doc.createElement("img"); 69 img.src = "/images/green.png"; 70 document.body.appendChild(img); 71 return img.decode().then(function(arg) { 72 assert_equals(arg, undefined); 73 }); 74 }, document.title + " Adopted inactive image into active document succeeds."); 75 76 promise_test(function(t) { 77 var img = new Image(); 78 img.src = "data:image/png;base64,iVBO00PDR0BADBEEF00KGg"; 79 var promise = img.decode(); 80 return promise_rejects_dom(t, "EncodingError", promise); 81 }, document.title + " Corrupt image in src fails decode."); 82 83 promise_test(function(t) { 84 var img = new Image(); 85 var promise = img.decode(); 86 return promise_rejects_dom(t, "EncodingError", promise); 87 }, document.title + " Image (legacy) without src/srcset fails decode."); 88 89 promise_test(function(t) { 90 var img = document.createElement("img"); 91 var promise = img.decode(); 92 return promise_rejects_dom(t, "EncodingError", promise); 93 }, document.title + " Image without src/srcset fails decode."); 94 95 promise_test(function() { 96 var img = new Image(); 97 img.src = "/images/green.png"; 98 var first_promise = img.decode(); 99 var second_promise = img.decode(); 100 assert_not_equals(first_promise, second_promise); 101 return Promise.all([ 102 first_promise, 103 second_promise 104 ]); 105 }, document.title + " Multiple decodes for images with src succeed."); 106 107 // srcset tests 108 // ------------------- 109 promise_test(function() { 110 var img = new Image(); 111 img.srcset = "/images/green.png 100w"; 112 return img.decode().then(function(arg) { 113 assert_equals(arg, undefined); 114 }); 115 }, document.title + " Image with PNG srcset decodes with undefined."); 116 117 promise_test(function() { 118 var img = new Image(); 119 img.srcset = "/images/green.svg 100w"; 120 return img.decode().then(function(arg) { 121 assert_equals(arg, undefined); 122 }); 123 }, document.title + " Image with SVG srcset decodes with undefined."); 124 125 promise_test(function(t) { 126 var img = new Image(); 127 img.srcset = "/non/existent/path.png 100w"; 128 var promise = img.decode(); 129 return promise_rejects_dom(t, "EncodingError", promise); 130 }, document.title + " Non-existent srcset fails decode."); 131 132 promise_test(function() { 133 var img = new Image(); 134 img.srcset = "/images/green.png 100w"; 135 var first_promise = img.decode(); 136 var second_promise = img.decode(); 137 assert_not_equals(first_promise, second_promise); 138 return Promise.all([ 139 first_promise, 140 second_promise 141 ]); 142 }, document.title + " Multiple decodes for images with srcset succeed."); 143 144 </script>