tenfourfox/netwerk/test/mochitests/test_rel_preconnect.html
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

90 lines
2.6 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
-->
<head>
<title>Test for link rel=preconnect</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<script type="text/javascript">
SimpleTest.waitForExplicitFinish();
const Cc = SpecialPowers.Cc, Ci = SpecialPowers.Ci, Cr = SpecialPowers.Cr;
var srv;
function TestServer1(nextTest) {
this.listener= Cc["@mozilla.org/network/server-socket;1"]
.createInstance(Ci.nsIServerSocket);
this.listener.init(-1, true, -1);
this.listener.asyncListen(SpecialPowers.wrapCallbackObject(this));
this.nextTest = nextTest;
}
TestServer1.prototype = {
QueryInterface: function(iid) {
iid = SpecialPowers.wrap(iid);
if (iid.equals(Ci.nsIServerSocketListener) ||
iid.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
},
onSocketAccepted: function(socket, trans) {
try { socket.close(); } catch(e) {}
try { trans.close(); } catch(e) {}
},
onStopListening: function(socket) {}
};
var remainder = 4;
var observer;
function doTest()
{
srv = new TestServer1();
SpecialPowers.setBoolPref("network.http.debug-observations", true);
observer = SpecialPowers.wrapCallback(function(subject, topic, data) {
remainder--;
ok(true, "observed remainder = " + remainder);
if (!remainder) {
srv.listener.close();
SpecialPowers.removeObserver(observer, "speculative-connect-request");
SpecialPowers.setBoolPref("network.http.debug-observations", false);
SimpleTest.finish();
}
});
SpecialPowers.addObserver(observer, "speculative-connect-request", false);
// test the link rel=preconnect element in the head for both normal
// and crossOrigin=anonymous
var link = document.createElement("link");
link.rel = "preconnect";
link.href = "//localhost:" + srv.listener.port;
document.head.appendChild(link);
link = document.createElement("link");
link.rel = "preconnect";
link.href = "//localhost:" + srv.listener.port;
link.crossOrigin = "anonymous";
document.head.appendChild(link);
// test the http link response header - the test contains both a
// normal and anonymous preconnect link header
var xhr = new XMLHttpRequest();
xhr.open("GET", 'rel_preconnect.sjs', false);
xhr.setRequestHeader("X-Link", "//localhost:" + srv.listener.port);
xhr.send();
is(xhr.status, 200, 'xhr cool');
}
</script>
</head>
<body onload="doTest();">
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test">
</pre>
</body>
</html>