diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources')
12 files changed, 123 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/blue-10.png b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/blue-10.png Binary files differnew file mode 100644 index 0000000000..62949e08d8 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/blue-10.png diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/cat.jpg b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/cat.jpg Binary files differnew file mode 100644 index 0000000000..a4f14f54d6 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/cat.jpg diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/green.png b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/green.png Binary files differnew file mode 100644 index 0000000000..25b76c3c6f --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/green.png diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image-and-stash.py b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image-and-stash.py new file mode 100644 index 0000000000..d16a3e591d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image-and-stash.py @@ -0,0 +1,44 @@ +# This is a simple implementation of a server-side stash that supports two +# operations: +# - increment: +# Increments a value in the stash keyed by a given uuid, and returns an +# image file +# - read: +# Returns the value in the stash keyed by a given uuid or 0 otherwise. +# This is a read-only operation, and does not remove the value from the +# stash as-is the default WPT stash behavior: +# https://web-platform-tests.org/tools/wptserve/docs/stash.html. + +import os + +from wptserve.utils import isomorphic_decode + +def main(request, response): + if b"increment" in request.GET: + uuid = request.GET[b"increment"] + + # First, increment the stash value keyed by `uuid`, and write it back to the + # stash. Writing it back to the stash is necessary since `take()` actually + # removes the value whereas we want to increment it. + stash_value = request.server.stash.take(uuid) + if stash_value is None: + stash_value = 0 + request.server.stash.put(uuid, stash_value + 1) + + # Return a basic image. + response_headers = [(b"Content-Type", b"image/png")] + image_path = os.path.join(os.path.dirname(isomorphic_decode(__file__)), u"image.png") + return (200, response_headers, open(image_path, mode='rb').read()) + + elif b"read" in request.GET: + uuid = request.GET[b"read"] + stash_value = request.server.stash.take(uuid) + + if stash_value is None: + stash_value = 0 + # Write the stash value keyed by `uuid` back to the stash. This is necessary + # because `take()` actually removes it, but we want a read-only read. + request.server.stash.put(uuid, stash_value); + return (200, [], str(stash_value)) + + return (404 , [], "Not found") diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image-loading-lazy-below-viewport.html b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image-loading-lazy-below-viewport.html new file mode 100644 index 0000000000..f25bd6f4d0 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image-loading-lazy-below-viewport.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<div style="height:1000vh;"></div> + +<img id="img" loading="lazy" src="image.png?lazy-below-viewport"> + +<script> + const img = document.querySelector('#img'); + + img.addEventListener("load", () => { + parent.postMessage("image_loaded", "*"); + }); + + window.addEventListener("load", () => { + parent.postMessage("window_loaded", "*"); + }); + + window.addEventListener("message", event => { + if (event.data == "scroll") { + img.scrollIntoView(); + } + }); +</script> diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image-loading-lazy-in-viewport.html b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image-loading-lazy-in-viewport.html new file mode 100644 index 0000000000..bafdacc883 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image-loading-lazy-in-viewport.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> + +<!-- This frame is used by image-loading-lazy-in-cross-origin-iframe-002.sub.html --> + +<img id="img" loading="lazy"> + +<script> + const img = document.querySelector('#img'); + + // Prevent the list of available images check from loading the image non-lazily. + img.src = "image.png?image-loading-lazy-in-viewport-" + Math.random() + "-" + Date.now(); + + img.addEventListener("load", () => { + parent.postMessage("image_loaded", "*"); + }); + + window.addEventListener("load", () => { + parent.postMessage("window_loaded", "*"); + }); +</script> diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image.png b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image.png Binary files differnew file mode 100644 index 0000000000..b712825093 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/image.png diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/newwindow.html b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/newwindow.html new file mode 100644 index 0000000000..735b8f6213 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/newwindow.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<div style="height:1000vh;"></div> diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/red.png b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/red.png Binary files differnew file mode 100644 index 0000000000..57bf3ddc52 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/red.png diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/referrer-checker-img.py b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/referrer-checker-img.py new file mode 100644 index 0000000000..bb2071cb97 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/referrer-checker-img.py @@ -0,0 +1,14 @@ +import os + +from wptserve.utils import isomorphic_decode + +# Returns a valid image response when request's |referrer| matches +# |expected_referrer|. +def main(request, response): + referrer = request.headers.get(b"referer", b"") + expected_referrer = request.GET.first(b"expected_referrer", b"") + response_headers = [(b"Content-Type", b"image/png")] + if referrer == expected_referrer: + image_path = os.path.join(os.path.dirname(isomorphic_decode(__file__)), u"image.png") + return (200, response_headers, open(image_path, mode='rb').read()) + return (404, response_headers, u"Not found") diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/sw.js b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/sw.js new file mode 100644 index 0000000000..8bd079f790 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/sw.js @@ -0,0 +1,20 @@ +addEventListener('install', (event) => { + skipWaiting(); +}); + +addEventListener('activate', (event) => { + event.waitUntil(clients.claim()); +}); + +async function broadcast(msg) { + const allClients = await clients.matchAll(); + for (const client of allClients) { + client.postMessage(msg); + } +} + +addEventListener('fetch', (event) => { + event.waitUntil( + broadcast({ url: event.request.url, mode: event.request.mode }) + ) +}); diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/sw.js.headers b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/sw.js.headers new file mode 100644 index 0000000000..3c534471c8 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/resources/sw.js.headers @@ -0,0 +1 @@ +Service-Worker-Allowed: /html/semantics/embedded-content/the-img-element/ |