Chromium Code Reviews| 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 <script> | |
| 12 "use strict"; | |
| 13 | |
| 14 // Basic png decode success test. | |
| 15 promise_test(function() { | |
| 16 var message = "PNG Image must be decoded"; | |
| 17 var resolved = false; | |
| 18 var rejected = false; | |
| 19 | |
| 20 var img = new Image(); | |
| 21 img.src = "/images/green.png"; | |
| 22 return img.decode().then( | |
|
domenic
2017/03/23 07:49:20
You should just do `return img.decode()`. promise_
| |
| 23 function() { resolved = true; }, | |
| 24 function() { rejected = true; } | |
| 25 ).then( | |
| 26 function() { | |
| 27 assert_true(resolved, message); | |
| 28 assert_false(rejected, message); | |
| 29 } | |
| 30 ); | |
| 31 }); | |
| 32 | |
| 33 // Basic svg decode success test. | |
| 34 promise_test(function() { | |
| 35 var message = "SVG Image must be decoded"; | |
| 36 var resolved = false; | |
| 37 var rejected = false; | |
| 38 | |
| 39 var img = new Image(); | |
| 40 img.src = "/images/green.svg"; | |
| 41 return img.decode().then( | |
| 42 function() { resolved = true; }, | |
| 43 function() { rejected = true; } | |
| 44 ).then( | |
| 45 function() { | |
| 46 assert_true(resolved, message); | |
| 47 assert_false(rejected, message); | |
| 48 } | |
| 49 ); | |
| 50 }); | |
| 51 | |
| 52 // Non existent path failure. | |
| 53 promise_test(function() { | |
| 54 var message = "Non-existent path must be rejected."; | |
| 55 var resolved = false; | |
| 56 var rejected = false; | |
| 57 | |
| 58 var img = new Image(); | |
| 59 img.src = "/non/existent/path.png"; | |
| 60 return img.decode().then( | |
|
domenic
2017/03/23 07:49:20
The way to test promise rejections is with `return
| |
| 61 function() { resolved = true; }, | |
| 62 function(e) { | |
| 63 assert_equals(e.name, "EncodingError"); | |
| 64 rejected = true; | |
| 65 } | |
| 66 ).then( | |
| 67 function() { | |
| 68 assert_false(resolved, message); | |
| 69 assert_true(rejected, message); | |
| 70 } | |
| 71 ); | |
| 72 }); | |
| 73 | |
| 74 // src-less image decode failure. | |
| 75 promise_test(function() { | |
| 76 var message = "src-less images must fail decodes."; | |
| 77 var resolved = false; | |
| 78 var rejected = false; | |
| 79 | |
| 80 var img = new Image(); | |
| 81 return img.decode().then( | |
| 82 function() { resolved = true; }, | |
| 83 function(e) { | |
| 84 assert_equals(e.name, "EncodingError"); | |
| 85 rejected = true; | |
| 86 } | |
| 87 ).then( | |
| 88 function() { | |
| 89 assert_false(resolved, message); | |
| 90 assert_true(rejected, message); | |
| 91 } | |
| 92 ) | |
| 93 }); | |
| 94 | |
| 95 // src changes causes a decode failure. | |
| 96 promise_test(function() { | |
| 97 var message = "src changes must fail decodes."; | |
| 98 var resolved = false; | |
| 99 var rejected = false; | |
| 100 | |
| 101 var img = new Image(); | |
| 102 img.src = "/images/green.png"; | |
| 103 var promise = img.decode().then( | |
| 104 function() { resolved = true; }, | |
| 105 function(e) { | |
| 106 assert_equals(e.name, "EncodingError"); | |
| 107 rejected = true; | |
| 108 } | |
| 109 ); | |
| 110 img.src = "/images/green.svg"; | |
| 111 return promise.then( | |
| 112 function() { | |
| 113 assert_false(resolved, message); | |
| 114 assert_true(rejected, message); | |
| 115 } | |
| 116 ) | |
| 117 }); | |
| 118 | |
| 119 // src changes causes a decode failure, following good decodes succeed. | |
| 120 promise_test(function() { | |
| 121 var message = "src changes must fail decodes, following good decodes must succ eed." | |
| 122 var resolved_count = 0; | |
| 123 var rejected_count = 0; | |
| 124 var decode_request_count = 2; | |
| 125 | |
| 126 var do_resolve = function(resolve) { | |
| 127 ++resolved_count; | |
| 128 if (resolved_count + rejected_count == decode_request_count) | |
| 129 resolve(); | |
| 130 } | |
| 131 var do_reject = function(resolve) { | |
| 132 ++rejected_count; | |
| 133 if (resolved_count + rejected_count == decode_request_count) | |
| 134 resolve(); | |
| 135 } | |
| 136 | |
| 137 return new Promise(function(resolve, _) { | |
|
domenic
2017/03/23 07:49:19
This promise thing is best done via
```
const img
| |
| 138 var img = new Image(); | |
| 139 img.src = "/images/green.png"; | |
| 140 img.decode().then( | |
| 141 function() { do_resolve(resolve); }, | |
| 142 function() { do_reject(resolve); } | |
| 143 ); | |
| 144 img.src = "/images/green.svg"; | |
| 145 img.decode().then( | |
| 146 function() { do_resolve(resolve); }, | |
| 147 function() { do_reject(resolve); } | |
| 148 ); | |
| 149 }).then(function() { | |
| 150 assert_equals(resolved_count, 1, message); | |
| 151 assert_equals(rejected_count, 1, message); | |
| 152 }); | |
| 153 }); | |
| 154 | |
| 155 // src changes causes a decode failure, following bad decodes also fail. | |
| 156 promise_test(function() { | |
| 157 var message = "src changes must fail decodes, following bad decodes also fail. "; | |
| 158 var resolved_count = 0; | |
| 159 var rejected_count = 0; | |
| 160 var decode_request_count = 2; | |
| 161 | |
| 162 var do_resolve = function(resolve) { | |
| 163 ++resolved_count; | |
| 164 if (resolved_count + rejected_count == decode_request_count) | |
| 165 resolve(); | |
| 166 } | |
| 167 var do_reject = function(resolve) { | |
| 168 ++rejected_count; | |
| 169 if (resolved_count + rejected_count == decode_request_count) | |
| 170 resolve(); | |
| 171 } | |
| 172 | |
| 173 return new Promise(function(resolve, _) { | |
| 174 var img = new Image(); | |
| 175 img.src = "/images/green.png"; | |
| 176 img.decode().then( | |
| 177 function() { do_resolve(resolve); }, | |
| 178 function() { do_reject(resolve); } | |
| 179 ); | |
| 180 img.src = "/non/existent/path.png"; | |
| 181 img.decode().then( | |
| 182 function() { do_resolve(resolve); }, | |
| 183 function() { do_reject(resolve); } | |
| 184 ); | |
| 185 }).then(function() { | |
| 186 assert_equals(resolved_count, 0, message); | |
| 187 assert_equals(rejected_count, decode_request_count, message); | |
| 188 }); | |
| 189 }); | |
| 190 | |
| 191 // src changes to the same path succeed. | |
| 192 promise_test(function() { | |
| 193 var message = "Same src set must succeed decode."; | |
| 194 var resolved = false; | |
| 195 var rejected = false; | |
| 196 | |
| 197 var img = new Image(); | |
| 198 img.src = "/images/green.png"; | |
| 199 var promise = img.decode().then( | |
| 200 function() { resolved = true; }, | |
| 201 function(e) { rejected = true; } | |
| 202 ); | |
| 203 img.src = "/images/green.png"; | |
| 204 return promise.then( | |
| 205 function() { | |
| 206 assert_true(resolved, message); | |
| 207 assert_false(rejected, message); | |
| 208 } | |
| 209 ) | |
| 210 }); | |
| 211 | |
| 212 // Multiple decodes all succeed. | |
| 213 promise_test(function() { | |
| 214 var message = "Multiple decodes must succeed."; | |
| 215 var resolved_count = 0; | |
| 216 var rejected_count = 0; | |
| 217 var decode_request_count = 2; | |
| 218 | |
| 219 var do_resolve = function(resolve) { | |
| 220 ++resolved_count; | |
| 221 if (resolved_count + rejected_count == decode_request_count) | |
| 222 resolve(); | |
| 223 } | |
| 224 var do_reject = function(resolve) { | |
| 225 ++rejected_count; | |
| 226 if (resolved_count + rejected_count == decode_request_count) | |
| 227 resolve(); | |
| 228 } | |
| 229 | |
| 230 var img = new Image(); | |
| 231 img.src = "/images/green.png"; | |
| 232 | |
| 233 return new Promise(function(resolve, _) { | |
| 234 img.decode().then( | |
| 235 function() { do_resolve(resolve); }, | |
| 236 function() { do_reject(resolve); } | |
| 237 ); | |
| 238 img.decode().then( | |
| 239 function() { do_resolve(resolve); }, | |
| 240 function() { do_reject(resolve); } | |
| 241 ); | |
| 242 }).then(function() { | |
| 243 assert_equals(resolved_count, decode_request_count, message); | |
| 244 assert_equals(rejected_count, 0, message); | |
| 245 }); | |
| 246 }); | |
| 247 | |
| 248 | |
| 249 </script> | |
| OLD | NEW |