summaryrefslogtreecommitdiffstats
path: root/image/test/mochitest/test_image_cache_notification.html
diff options
context:
space:
mode:
Diffstat (limited to 'image/test/mochitest/test_image_cache_notification.html')
-rw-r--r--image/test/mochitest/test_image_cache_notification.html47
1 files changed, 47 insertions, 0 deletions
diff --git a/image/test/mochitest/test_image_cache_notification.html b/image/test/mochitest/test_image_cache_notification.html
new file mode 100644
index 0000000000..73adac25ff
--- /dev/null
+++ b/image/test/mochitest/test_image_cache_notification.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <script src="/tests/SimpleTest/SimpleTest.js"></script>
+ </head>
+ <body>
+ <button>Add Image</button>
+ <script>
+ /* Test to ensure http-on-image-cache-response should only be notified
+ * once per image
+ */
+
+ SimpleTest.waitForExplicitFinish();
+ async function addImage() {
+ const newImage = document.createElement("img");
+
+ const imageLoaded = new Promise((r) => {
+ newImage.onload = r;
+ });
+
+ newImage.src = "./over.png";
+ document.body.appendChild(newImage);
+ return imageLoaded;
+ }
+
+ let imageCacheCallbackRunCount = 0;
+ const cb = SpecialPowers.wrapCallback(() => {
+ imageCacheCallbackRunCount += 1;
+ });
+ SpecialPowers.addObserver(cb, "http-on-image-cache-response");
+
+ async function runTest() {
+ await addImage();
+ SimpleTest.ok(imageCacheCallbackRunCount == 0, "first load of over.png shouldn't be cached");
+ await addImage();
+ SimpleTest.ok(imageCacheCallbackRunCount == 1, "second load of over.png should be cached");
+ await addImage();
+ await addImage();
+ await addImage();
+ SimpleTest.ok(imageCacheCallbackRunCount == 1, "further loads of over.png shouldn't be notified");
+ SimpleTest.finish();
+ }
+
+ runTest();
+ </script>
+ </body>
+</html>