Index: third_party/WebKit/LayoutTests/external/wpt/image-decodes/image-decode.html |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/image-decodes/image-decode.html b/third_party/WebKit/LayoutTests/external/wpt/image-decodes/image-decode.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b40ac354186033ee36d27b45293f155fb319801b |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/image-decodes/image-decode.html |
@@ -0,0 +1,213 @@ |
+<!DOCTYPE html> |
+<meta charset=utf-8> |
+<meta name="timeout" content="long"> |
+<title>img.decode()</title> |
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> |
+<link rel=help href=""> |
+<script src="/resources/testharness.js"></script> |
+<script src="/resources/testharnessreport.js"></script> |
+<div id="log"></div> |
+ |
+<script> |
+"use strict"; |
+ |
+// src tests |
+// ------------------- |
+// Basic src png decode success test. |
+promise_test(function() { |
domenic
2017/03/27 10:24:20
These test messages and/or the comments above each
|
+ var message = "PNG Image must be decoded with undefined."; |
+ |
+ var img = new Image(); |
+ img.src = "/images/green.png"; |
+ return img.decode().then(function(arg) { |
+ assert_equals(arg, undefined, message); |
+ }); |
+}); |
+ |
+// Basic src svg decode success test. |
+promise_test(function() { |
+ var message = "SVG Image must be decoded with undefined."; |
+ |
+ var img = new Image(); |
+ img.src = "/images/green.svg"; |
+ return img.decode().then(function(arg) { |
+ assert_equals(arg, undefined, message); |
+ }); |
+}); |
+ |
+// Non existent path failure. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.src = "/non/existent/path.png"; |
+ var promise = img.decode(); |
+ return promise_rejects(t, "EncodingError", promise); |
+}); |
+ |
+// src-less decode failure. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ var promise = img.decode(); |
+ return promise_rejects(t, "EncodingError", promise); |
+}); |
+ |
+// src changes causes a decode failure. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.src = "/images/green.png"; |
+ var promise = img.decode(); |
+ img.src = "/images/green.svg"; |
+ return promise_rejects(t, "EncodingError", promise); |
+}); |
+ |
+// src changes causes a decode failure, following good decodes succeed. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.src = "/images/green.png"; |
+ var first_promise = img.decode(); |
+ img.src = "/images/green.svg"; |
+ var second_promise = img.decode(); |
+ assert_true(first_promise !== second_promise); |
+ return Promise.all([ |
+ promise_rejects(t, "EncodingError", first_promise), |
+ second_promise |
+ ]); |
+}); |
+ |
+// src changes causes a decode failure, following bad decodes also fail. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.src = "/images/green.png"; |
+ var first_promise = img.decode(); |
+ img.src = "/non/existent/path.png"; |
+ var second_promise = img.decode(); |
+ assert_true(first_promise !== second_promise); |
+ return Promise.all([ |
+ promise_rejects(t, "EncodingError", first_promise), |
+ promise_rejects(t, "EncodingError", second_promise) |
+ ]); |
+}); |
+ |
+// src changes to the same path succeed. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.src = "/images/green.png"; |
+ var first_promise = img.decode(); |
+ img.src = "/images/green.png"; |
+ var second_promise = img.decode(); |
+ assert_true(first_promise !== second_promise); |
+ return Promise.all([ |
+ first_promise, |
+ second_promise |
+ ]); |
+}); |
+ |
+// Multiple decodes all succeed. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.src = "/images/green.png"; |
+ var first_promise = img.decode(); |
+ var second_promise = img.decode(); |
+ assert_true(first_promise !== second_promise); |
+ return Promise.all([ |
+ first_promise, |
+ second_promise |
+ ]); |
+}); |
+ |
+// srcset tests |
+// ------------------- |
+// Basic srcset png decode success test. |
+promise_test(function() { |
+ var message = "PNG Image must be decoded with undefined."; |
+ |
+ var img = new Image(); |
+ img.srcset = "/images/green.png 100w"; |
+ return img.decode().then(function(arg) { |
+ assert_equals(arg, undefined, message); |
+ }); |
+}); |
+ |
+// Basic srcset svg decode success test. |
+promise_test(function() { |
+ var message = "SVG Image must be decoded with undefined."; |
+ |
+ var img = new Image(); |
+ img.srcset = "/images/green.svg 100w"; |
+ return img.decode().then(function(arg) { |
+ assert_equals(arg, undefined, message); |
+ }); |
+}); |
+ |
+// Non existent path failure. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.srcset = "/non/existent/path.png 100w"; |
+ var promise = img.decode(); |
+ return promise_rejects(t, "EncodingError", promise); |
+}); |
+ |
+// srcset changes causes a decode failure. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.srcset = "/images/green.png 100w"; |
+ var promise = img.decode(); |
+ img.srcset = "/images/green.svg 100w"; |
+ return promise_rejects(t, "EncodingError", promise); |
+}); |
+ |
+// srcset changes causes a decode failure, following good decodes succeed. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.srcset = "/images/green.png 100w"; |
+ var first_promise = img.decode(); |
+ img.srcset = "/images/green.svg 100w"; |
+ var second_promise = img.decode(); |
+ assert_true(first_promise !== second_promise); |
+ return Promise.all([ |
+ promise_rejects(t, "EncodingError", first_promise), |
+ second_promise |
+ ]); |
+}); |
+ |
+// srcset changes causes a decode failure, following bad decodes also fail. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.srcset = "/images/green.png 100w"; |
+ var first_promise = img.decode(); |
+ img.srcset = "/non/existent/path.png 100w"; |
+ var second_promise = img.decode(); |
+ assert_true(first_promise !== second_promise); |
+ return Promise.all([ |
+ promise_rejects(t, "EncodingError", first_promise), |
+ promise_rejects(t, "EncodingError", second_promise) |
+ ]); |
+}); |
+ |
+// srcset changes to the same path succeed. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.srcset = "/images/green.png 100w"; |
+ var first_promise = img.decode(); |
+ img.srcset = "/images/green.png 100w"; |
+ var second_promise = img.decode(); |
+ assert_true(first_promise !== second_promise); |
+ return Promise.all([ |
+ first_promise, |
+ second_promise |
+ ]); |
+}); |
+ |
+// Multiple decodes all succeed. |
+promise_test(function(t) { |
+ var img = new Image(); |
+ img.srcset = "/images/green.png 100w"; |
+ var first_promise = img.decode(); |
+ var second_promise = img.decode(); |
+ assert_true(first_promise !== second_promise); |
+ return Promise.all([ |
+ first_promise, |
+ second_promise |
+ ]); |
+}); |
+ |
+</script> |