diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub.html | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub.html new file mode 100644 index 0000000000..84efc7b0d1 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-crossorigin-change.sub.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<head> + <title>Deferred images with loading='lazy' use the latest crossorigin attribute</title> + <link rel="author" title="Raj T" href="mailto:rajendrant@chromium.org"> + <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../resources/common.js"></script> +</head> + +<script> + const img = new ElementLoadPromise("cross-origin"); + + async_test(function(t) { + window.addEventListener("load", t.step_func(() => { + // At this point the image's #updating-the-image-data algorithm has been + // invoked, and the image request has been deferred. The deferred + // cross-origin image request was created with the `no-cors` request mode, + // which would succeed to load the cross-origin image. + // While the request is deferred, we'll set the `crossorigin` attribute to a + // value that would cause the image request to fail. Since `crossorigin` + // mutations trigger another #updating-the-image-data invocation (replacing + // the first one), when we scroll the image into view, the image should be + // fetched with the latest `crossorigin` attribute value, and fail to load. + img.element().crossOrigin = 'anonymous'; + img.element().scrollIntoView(); + })); + + img.promise + .then(t.unreached_func("The image should not load.")) + .catch(t.step_func(() => { img.element().onload = t.step_func_done(); img.element().src = 'resources/image.png'; })); + }, "Test that when deferred image is loaded, it uses the latest crossorigin attribute."); +</script> + +<body> + <div style="height:1000vh;"></div> + <img id="cross-origin" loading="lazy" + src='http://{{hosts[alt][]}}:{{ports[http][0]}}/html/semantics/embedded-content/the-img-element/resources/image.png' + onload="img.resolve();" onerror="img.reject();"> +</body> |