This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch upstream/28.5.0 in repository pale-moon. commit 367d77ee9a6df15cacaf1a1f4032f834e972b335 Author: wolfbeast <mcwerewolf@wolfbeast.com> Date: Thu Mar 7 14:32:42 2019 +0100 Part 2: Add tests Tag #993. --- netwerk/test/mochitests/mochitest.ini | 2 + netwerk/test/mochitests/test_accept_header.html | 106 ++++++++++++++++++++++++ netwerk/test/mochitests/test_accept_header.sjs | 48 +++++++++++ 3 files changed, 156 insertions(+) diff --git a/netwerk/test/mochitests/mochitest.ini b/netwerk/test/mochitests/mochitest.ini index f8a9190..3cd5a67 100644 --- a/netwerk/test/mochitests/mochitest.ini +++ b/netwerk/test/mochitests/mochitest.ini @@ -25,3 +25,5 @@ support-files = [test_viewsource_unlinkable.html] [test_xhr_method_case.html] [test_1396395.html] +[test_accept_header.html] +support-files = test_accept_header.sjs diff --git a/netwerk/test/mochitests/test_accept_header.html b/netwerk/test/mochitests/test_accept_header.html new file mode 100644 index 0000000..b843423 --- /dev/null +++ b/netwerk/test/mochitests/test_accept_header.html @@ -0,0 +1,106 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Accept header</title> + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<script> + +// All the requests are sent to test_accept_header.sjs which will return +// different content based on the queryString. When the queryString is 'get', +// test_accept_header.sjs returns a JSON object with the latest request and its +// accept header value. + +function test_last_request_and_continue(query, expected) { + fetch("test_accept_header.sjs?get").then(r => r.json()).then(json => { + is(json.type, query, "Expected: " + query); + is(json.accept, expected, "Accept header: " + expected); + next(); + }); +} + +function test_iframe() { + let observer = new PerformanceObserver(function(list, obj) { + obj.disconnect(); + + list.getEntries().forEach(entry => { + if (entry.name.endsWith("test_accept_header.sjs?iframe")) { + obj.disconnect(); + test_last_request_and_continue("iframe", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + } + }); + }); + + observer.observe({entryTypes: ["resource"]}); + + let ifr = document.createElement("iframe"); + ifr.src = "test_accept_header.sjs?iframe"; + document.body.appendChild(ifr); +} + +function test_image() { + let i = new Image(); + i.src = "test_accept_header.sjs?image"; + i.onload = function() { + // Fetch spec says we should have: "image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5" + test_last_request_and_continue("image", "image/webp,image/png,image/*;q=0.8,*/*;q=0.5"); + } +} + +function test_style() { + let observer = new PerformanceObserver(function(list, obj) { + obj.disconnect(); + + list.getEntries().forEach(entry => { + if (entry.name.endsWith("test_accept_header.sjs?style")) { + obj.disconnect(); + test_last_request_and_continue("style", "text/css,*/*;q=0.1"); + } + }); + }); + + observer.observe({entryTypes: ["resource"]}); + + let head = document.getElementsByTagName("head")[0]; + let link = document.createElement("link"); + link.rel = "stylesheet"; + link.type = "text/css"; + link.href = "test_accept_header.sjs?style"; + head.appendChild(link); +} + +function test_worker() { + let w = new Worker("test_accept_header.sjs?worker"); + w.onmessage = function() { + test_last_request_and_continue("worker", "*/*"); + } +} + +let tests = [ + test_iframe, + test_image, + test_style, + test_worker, +]; + +function next() { + if (tests.length == 0) { + SimpleTest.finish(); + return; + } + + let test = tests.shift(); + test(); +} + +SimpleTest.waitForExplicitFinish(); + +SpecialPowers.pushPrefEnv({ "set": [ + [ "dom.enable_performance_observer", true ] +]}, next); + +</script> +</body> +</html> diff --git a/netwerk/test/mochitests/test_accept_header.sjs b/netwerk/test/mochitests/test_accept_header.sjs new file mode 100644 index 0000000..035c886 --- /dev/null +++ b/netwerk/test/mochitests/test_accept_header.sjs @@ -0,0 +1,48 @@ +function handleRequest(request, response) { + response.setStatusLine(request.httpVersion, "200", "OK"); + + if (request.queryString == "worker") { + response.setHeader("Content-Type", "application/json", false); + response.write("postMessage(42)"); + + setState("data", JSON.stringify({type: "worker", accept: request.getHeader("Accept") })); + return; + } + + if (request.queryString == "image") { + // A 1x1 PNG image. + // Source: https://commons.wikimedia.org/wiki/File:1x1.png (Public Domain) + const IMAGE = atob("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAA" + + "ACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII="); + + response.setHeader("Content-Type", "image/png", false); + response.write(IMAGE); + + setState("data", JSON.stringify({type: "image", accept: request.getHeader("Accept") })); + return; + } + + if (request.queryString == "style") { + response.setHeader("Content-Type", "text/css", false); + response.write(""); + + setState("data", JSON.stringify({type: "style", accept: request.getHeader("Accept") })); + return; + } + + if (request.queryString == "iframe") { + response.setHeader("Content-Type", "text/html", false); + response.write("<h1>Hello world!</h1>"); + + setState("data", JSON.stringify({type: "iframe", accept: request.getHeader("Accept") })); + return; + } + + if (request.queryString == "get") { + response.setHeader("Content-Type", "text/javascript", false); + response.write(getState("data")); + + setState("data", ""); + return; + } +} -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/pale-moon.git