OLD | NEW |
---|---|
(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> | |
OLD | NEW |