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