summaryrefslogtreecommitdiffstats
path: root/netwerk/test/browser/early_hint_pixel.sjs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--netwerk/test/browser/early_hint_pixel.sjs37
1 files changed, 37 insertions, 0 deletions
diff --git a/netwerk/test/browser/early_hint_pixel.sjs b/netwerk/test/browser/early_hint_pixel.sjs
new file mode 100644
index 0000000000..56a64e9af2
--- /dev/null
+++ b/netwerk/test/browser/early_hint_pixel.sjs
@@ -0,0 +1,37 @@
+"use strict";
+
+function handleRequest(request, response) {
+ response.setHeader("Content-Type", "image/png", false);
+ response.setHeader("Cache-Control", "max-age=604800", false);
+
+ // the typo in "Referer" is part of the http spec
+ if (request.hasHeader("Referer")) {
+ setSharedState("requestReferrer", request.getHeader("Referer"));
+ } else {
+ setSharedState("requestReferrer", "");
+ }
+
+ let count = JSON.parse(getSharedState("earlyHintCount"));
+ let image;
+ // send different sized images depending whether this is an early hint request
+ if (
+ request.hasHeader("X-Moz") &&
+ request.getHeader("X-Moz") === "early hint"
+ ) {
+ count.hinted += 1;
+ // set to green/black horizontal stripes (71 bytes)
+ image = atob(
+ "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAADklEQVQIW2OU+i/FAAcADoABNV8X" +
+ "GBMAAAAASUVORK5CYII="
+ );
+ } else {
+ count.normal += 1;
+ // set to purple/white checkered pattern (76 bytes)
+ image = atob(
+ "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAE0lEQVQIW2P4//+/N8MkBiAGsgA1" +
+ "bAe1SzDY8gAAAABJRU5ErkJggg=="
+ );
+ }
+ setSharedState("earlyHintCount", JSON.stringify(count));
+ response.write(image);
+}