diff options
Diffstat (limited to 'testing/web-platform/tests/html/dom/elements/images')
-rw-r--r-- | testing/web-platform/tests/html/dom/elements/images/bypass-cache-revalidation.html | 37 | ||||
-rw-r--r-- | testing/web-platform/tests/html/dom/elements/images/image.py | 28 |
2 files changed, 65 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/dom/elements/images/bypass-cache-revalidation.html b/testing/web-platform/tests/html/dom/elements/images/bypass-cache-revalidation.html new file mode 100644 index 0000000000..38cdd876da --- /dev/null +++ b/testing/web-platform/tests/html/dom/elements/images/bypass-cache-revalidation.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<title>Cached images can bypass revalidation</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/utils.js"></script> +<div id="imageDiv1"></div> +<div id="imageDiv2"></div> +<canvas id="canvas"></canvas> +<script> + +function getImagePixel(image) +{ + canvas.getContext("2d").drawImage(image, 0, 0, 10, 10); + return canvas.getContext("2d").getImageData(0, 0, 1, 1).data; +} + +let resolve; +promise_test(async (t) => { + const url = "image.py?id=" + token(); + + let promise = new Promise(r => resolve = r); + imageDiv1.innerHTML = `<img src="${url}" onload="resolve()"></img>`; + await promise; + + const url2 = "image.py?id=" + token(); + promise = new Promise(r => resolve = r); + imageDiv1.innerHTML = `<img src="${url2}" onload="resolve()"></img>`; + await promise; + + promise = new Promise(r => resolve = r); + imageDiv2.innerHTML = `<img id="image2" src="${url}" onload="resolve()"></img>`; + await promise; + + assert_array_equals(getImagePixel(image2), [0, 255, 0, 255]); +}, "Images can bypass no-cache"); +</script> + diff --git a/testing/web-platform/tests/html/dom/elements/images/image.py b/testing/web-platform/tests/html/dom/elements/images/image.py new file mode 100644 index 0000000000..b8bb34e618 --- /dev/null +++ b/testing/web-platform/tests/html/dom/elements/images/image.py @@ -0,0 +1,28 @@ +import os.path + +from wptserve.utils import isomorphic_decode + +def main(request, response): + + key = request.GET[b'id'] + alreadyServedRequest = False + try: + alreadyServedRequest = request.server.stash.take(key) + except (KeyError, ValueError) as e: + pass + + if alreadyServedRequest: + body = open(os.path.join(os.path.dirname(isomorphic_decode(__file__)), u"../../../../images/red.png"), u"rb").read() + else: + request.server.stash.put(key, True); + body = open(os.path.join(os.path.dirname(isomorphic_decode(__file__)), u"../../../../images/green.png"), u"rb").read() + pass + + response.writer.write_status(200) + response.writer.write_header(b"etag", b"abcdef") + response.writer.write_header(b"content-length", len(body)) + response.writer.write_header(b"content-type", b"image/png") + response.writer.write_header(b"cache-control", b"public, max-age=31536000, no-cache") + response.writer.end_headers() + + response.writer.write(body) |