Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: third_party/WebKit/LayoutTests/external/wpt/image-decodes/image-decode.html

Issue 2769823002: Add decode() functionality to image elements. (Closed)
Patch Set: update Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <meta charset=utf-8>
3 <meta name="timeout" content="long">
4 <title>img.decode()</title>
5 <link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
6 <link rel=help href="">
7 <script src="/resources/testharness.js"></script>
8 <script src="/resources/testharnessreport.js"></script>
9 <div id="log"></div>
10
11 <iframe id="frame_loaded" srcdoc="iframe"></iframe>
12 <iframe id="frame_notloaded" srcdoc="iframe"></iframe>
13 <iframe id="frame_notloaded2" srcdoc="iframe"></iframe>
14
15 <script>
16 "use strict";
17
18 // src tests
19 // -------------------
20 promise_test(function() {
21 var img = new Image();
22 img.src = "/images/green.png";
23 return img.decode().then(function(arg) {
24 assert_equals(arg, undefined);
25 });
26 }, "(src) PNG image decodes with undefined.");
27
28 promise_test(function() {
29 var img = new Image();
30 img.src = "/images/green.svg";
31 return img.decode().then(function(arg) {
32 assert_equals(arg, undefined);
33 });
34 }, "(src) SVG image decodes with undefined.");
35
36 promise_test(function(t) {
37 var img = new Image();
38 img.src = "/non/existent/path.png";
39 var promise = img.decode();
40 return promise_rejects(t, "EncodingError", promise);
41 }, "(src) Non-existent path fails decode.");
42
43 promise_test(function(t) {
44 var img = new Image();
45 var promise = img.decode();
46 return promise_rejects(t, "EncodingError", promise);
47 }, "(src) Path-less image fails decode.");
48
49 promise_test(function(t) {
50 var img = new Image();
51 img.src = "/images/green.png";
52 var promise = img.decode();
53 img.src = "/images/green.svg";
54 return promise_rejects(t, "EncodingError", promise);
55 }, "(src) Path changes fail decode.");
56
57 promise_test(function(t) {
58 var img = new Image();
59 img.src = "/images/green.png";
60 var first_promise = img.decode();
61 img.src = "/images/green.svg";
62 var second_promise = img.decode();
63 assert_true(first_promise !== second_promise);
64 return Promise.all([
65 promise_rejects(t, "EncodingError", first_promise),
66 second_promise
67 ]);
68 }, "(src) Path changes fail decode; following good decode succeeds.");
69
70 promise_test(function(t) {
71 var img = new Image();
72 img.src = "/images/green.png";
73 var first_promise = img.decode();
74 img.src = "/non/existent/path.png";
75 var second_promise = img.decode();
76 assert_true(first_promise !== second_promise);
77 return Promise.all([
78 promise_rejects(t, "EncodingError", first_promise),
79 promise_rejects(t, "EncodingError", second_promise)
80 ]);
81 }, "(src) Path changes fail decode; following bad decode fails.");
82
83 promise_test(function() {
84 var img = new Image();
85 img.src = "/images/green.png";
86 var first_promise = img.decode();
87 img.src = "/images/green.png";
88 var second_promise = img.decode();
89 assert_true(first_promise !== second_promise);
90 return Promise.all([
91 first_promise,
92 second_promise
93 ]);
94 }, "(src) Path changes to the same path succeed.");
95
96 promise_test(function() {
97 var img = new Image();
98 img.src = "/images/green.png";
99 var first_promise = img.decode();
100 var second_promise = img.decode();
101 assert_true(first_promise !== second_promise);
102 return Promise.all([
103 first_promise,
104 second_promise
105 ]);
106 }, "(src) Multiple decodes succeed.");
107
108 // srcset tests
109 // -------------------
110 promise_test(function() {
111 var img = new Image();
112 img.srcset = "/images/green.png 100w";
113 return img.decode().then(function(arg) {
114 assert_equals(arg, undefined);
115 });
116 }, "(srcset) PNG image decodes with undefined.");
117
118 promise_test(function() {
119 var img = new Image();
120 img.srcset = "/images/green.svg 100w";
121 return img.decode().then(function(arg) {
122 assert_equals(arg, undefined);
123 });
124 }, "(srcset) SVG image decodes with undefined.");
125
126 promise_test(function(t) {
127 var img = new Image();
128 img.srcset = "/non/existent/path.png 100w";
129 var promise = img.decode();
130 return promise_rejects(t, "EncodingError", promise);
131 }, "(srcset) Non-existent path fails decode.");
132
133 promise_test(function(t) {
134 var img = new Image();
135 img.srcset = "/images/green.png 100w";
136 var promise = img.decode();
137 img.srcset = "/images/green.svg 100w";
138 return promise_rejects(t, "EncodingError", promise);
139 }, "(srcset) Path changes fail decode.");
140
141 promise_test(function(t) {
142 var img = new Image();
143 img.srcset = "/images/green.png 100w";
144 var first_promise = img.decode();
145 img.srcset = "/images/green.svg 100w";
146 var second_promise = img.decode();
147 assert_true(first_promise !== second_promise);
148 return Promise.all([
149 promise_rejects(t, "EncodingError", first_promise),
150 second_promise
151 ]);
152 }, "(srcset) Path changes fail decode; following good decode succeeds.");
153
154 promise_test(function(t) {
155 var img = new Image();
156 img.srcset = "/images/green.png 100w";
157 var first_promise = img.decode();
158 img.srcset = "/non/existent/path.png 100w";
159 var second_promise = img.decode();
160 assert_true(first_promise !== second_promise);
161 return Promise.all([
162 promise_rejects(t, "EncodingError", first_promise),
163 promise_rejects(t, "EncodingError", second_promise)
164 ]);
165 }, "(srcset) Path changes fail decode; following bad decode fails.");
166
167 promise_test(function() {
168 var img = new Image();
169 img.srcset = "/images/green.png 100w";
170 var first_promise = img.decode();
171 img.srcset = "/images/green.png 100w";
172 var second_promise = img.decode();
173 assert_true(first_promise !== second_promise);
174 return Promise.all([
175 first_promise,
176 second_promise
177 ]);
178 }, "(srcset) Path changes to the same path succeed.");
179
180 promise_test(function() {
181 var img = new Image();
182 img.srcset = "/images/green.png 100w";
183 var first_promise = img.decode();
184 var second_promise = img.decode();
185 assert_true(first_promise !== second_promise);
186 return Promise.all([
187 first_promise,
188 second_promise
189 ]);
190 }, "(srcset) Multiple decodes succeed.");
191
192 // misc tests
193 // -------------------
194 promise_test(function() {
195 return new Promise(function(resolve, reject) {
196 var frame = document.getElementById("frame_loaded");
197 var img = frame.contentDocument.createElement("img");
198 img.src = "/images/green.png";
199 img.onload = function() {
200 // At this point the frame which created the img is removed, so decode() s hould fail.
201 frame.parentNode.removeChild(frame);
202 img.decode().then(function() {
203 assert_false(true, "Unexpected success");
204 }, function() {
205 resolve();
206 });
207 };
208 });
209 }, "(misc) Decode from removed iframe fails (loaded img)");
210
211 promise_test(function(t) {
212 var frame = document.getElementById("frame_notloaded");
213 var img = frame.contentDocument.createElement("img");
214 img.src = "/images/green.png";
215 frame.parentNode.removeChild(frame);
216 var promise = img.decode();
217 return promise_rejects(t, "EncodingError", promise);
218 }, "(misc) Decode from removed iframe fails (img not loaded)");
219
220 promise_test(function(t) {
vmpstr 2017/04/18 17:31:03 This test times out.
221 var frame = document.getElementById("frame_notloaded2");
222 var img = frame.contentDocument.createElement("img");
223 img.src = "/images/green.png";
224 // First request a promise, then remove the iframe.
225 var promise = img.decode();
domenic 2017/04/18 20:48:34 Maybe what we need here is a spec line saying "If
226 frame.parentNode.removeChild(frame);
227 return promise_rejects(t, "EncodingError", promise);
228 }, "(misc) Decode from iframe, later removed, fails (img not loaded)");
229
230 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698