mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
bug 1174152 - update test to be nsIObserver based r=hurley
This commit is contained in:
parent
6d76c92cda
commit
4d69a75c45
@ -182,6 +182,7 @@ nsHttpHandler::nsHttpHandler()
|
|||||||
, mParentalControlEnabled(false)
|
, mParentalControlEnabled(false)
|
||||||
, mTelemetryEnabled(false)
|
, mTelemetryEnabled(false)
|
||||||
, mAllowExperiments(true)
|
, mAllowExperiments(true)
|
||||||
|
, mDebugObservations(false)
|
||||||
, mHandlerActive(false)
|
, mHandlerActive(false)
|
||||||
, mEnableSpdy(false)
|
, mEnableSpdy(false)
|
||||||
, mSpdyV31(true)
|
, mSpdyV31(true)
|
||||||
@ -1439,6 +1440,15 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// network.http.debug-observations
|
||||||
|
if (PREF_CHANGED("network.http.debug-observations")) {
|
||||||
|
cVar = false;
|
||||||
|
rv = prefs->GetBoolPref("network.http.debug-observations", &cVar);
|
||||||
|
if (NS_SUCCEEDED(rv)) {
|
||||||
|
mDebugObservations = cVar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Test HTTP Pipelining (bug796192)
|
// Test HTTP Pipelining (bug796192)
|
||||||
// If experiments are allowed and pipelining is Off,
|
// If experiments are allowed and pipelining is Off,
|
||||||
@ -2054,6 +2064,17 @@ nsHttpHandler::SpeculativeConnectInternal(nsIURI *aURI,
|
|||||||
if (!mHandlerActive)
|
if (!mHandlerActive)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
|
||||||
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
|
if (mDebugObservations && mObserverService) {
|
||||||
|
// this is basically used for test coverage of an otherwise 'hintable' feature
|
||||||
|
nsAutoCString spec;
|
||||||
|
aURI->GetSpec(spec);
|
||||||
|
spec.Append(anonymous ? NS_LITERAL_CSTRING("[A]") : NS_LITERAL_CSTRING("[.]"));
|
||||||
|
mObserverService->NotifyObservers(nullptr,
|
||||||
|
"speculative-connect-request",
|
||||||
|
NS_ConvertUTF8toUTF16(spec).get());
|
||||||
|
}
|
||||||
|
|
||||||
nsISiteSecurityService* sss = gHttpHandler->GetSSService();
|
nsISiteSecurityService* sss = gHttpHandler->GetSSService();
|
||||||
bool isStsHost = false;
|
bool isStsHost = false;
|
||||||
if (!sss)
|
if (!sss)
|
||||||
|
@ -477,6 +477,9 @@ private:
|
|||||||
// The value of network.allow-experiments
|
// The value of network.allow-experiments
|
||||||
uint32_t mAllowExperiments : 1;
|
uint32_t mAllowExperiments : 1;
|
||||||
|
|
||||||
|
// The value of 'hidden' network.http.debug-observations : 1;
|
||||||
|
uint32_t mDebugObservations : 1;
|
||||||
|
|
||||||
// true in between init and shutdown states
|
// true in between init and shutdown states
|
||||||
uint32_t mHandlerActive : 1;
|
uint32_t mHandlerActive : 1;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
SimpleTest.waitForExplicitFinish();
|
SimpleTest.waitForExplicitFinish();
|
||||||
|
|
||||||
const Cc = SpecialPowers.Cc, Ci = SpecialPowers.Ci, Cr = SpecialPowers.Cr;
|
const Cc = SpecialPowers.Cc, Ci = SpecialPowers.Ci, Cr = SpecialPowers.Cr;
|
||||||
var srv1, srv2;
|
var srv;
|
||||||
|
|
||||||
function TestServer1(nextTest) {
|
function TestServer1(nextTest) {
|
||||||
this.listener= Cc["@mozilla.org/network/server-socket;1"]
|
this.listener= Cc["@mozilla.org/network/server-socket;1"]
|
||||||
@ -22,8 +22,6 @@ function TestServer1(nextTest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TestServer1.prototype = {
|
TestServer1.prototype = {
|
||||||
remainder : 2,
|
|
||||||
|
|
||||||
QueryInterface: function(iid) {
|
QueryInterface: function(iid) {
|
||||||
iid = SpecialPowers.wrap(iid);
|
iid = SpecialPowers.wrap(iid);
|
||||||
if (iid.equals(Ci.nsIServerSocketListener) ||
|
if (iid.equals(Ci.nsIServerSocketListener) ||
|
||||||
@ -34,88 +32,54 @@ TestServer1.prototype = {
|
|||||||
onSocketAccepted: function(socket, trans) {
|
onSocketAccepted: function(socket, trans) {
|
||||||
try { socket.close(); } catch(e) {}
|
try { socket.close(); } catch(e) {}
|
||||||
try { trans.close(); } catch(e) {}
|
try { trans.close(); } catch(e) {}
|
||||||
this.remainder--;
|
|
||||||
ok(true, "received connect remainder = " + this.remainder);
|
|
||||||
if (!this.remainder) {
|
|
||||||
srv1.listener.close();
|
|
||||||
setTimeout(srv1.nextTest, 0);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
onStopListening: function(socket) {}
|
onStopListening: function(socket) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
function TestServer2(nextTest) {
|
var remainder = 4;
|
||||||
this.listener= Cc["@mozilla.org/network/server-socket;1"]
|
var observer;
|
||||||
.createInstance(Ci.nsIServerSocket);
|
|
||||||
this.listener.init(-1, true, -1);
|
|
||||||
this.listener.asyncListen(SpecialPowers.wrapCallbackObject(this));
|
|
||||||
this.nextTest = nextTest;
|
|
||||||
}
|
|
||||||
|
|
||||||
TestServer2.prototype = {
|
function doTest()
|
||||||
remainder : 2,
|
|
||||||
|
|
||||||
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) {}
|
|
||||||
this.remainder--;
|
|
||||||
ok(true, "received connect srv2 remainder = " + this.remainder);
|
|
||||||
if (!this.remainder) {
|
|
||||||
srv2.listener.close();
|
|
||||||
setTimeout(srv2.nextTest, 0);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onStopListening: function(socket) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
var originalLimit = SpecialPowers.getIntPref("network.http.speculative-parallel-limit");
|
|
||||||
|
|
||||||
function testElement()
|
|
||||||
{
|
{
|
||||||
|
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
|
// test the link rel=preconnect element in the head for both normal
|
||||||
// and crossOrigin=anonymous
|
// and crossOrigin=anonymous
|
||||||
srv1 = new TestServer1(testHeader);
|
|
||||||
SpecialPowers.setIntPref("network.http.speculative-parallel-limit", 2);
|
|
||||||
var link = document.createElement("link");
|
var link = document.createElement("link");
|
||||||
link.rel = "preconnect";
|
link.rel = "preconnect";
|
||||||
link.href = "//localhost:" + srv1.listener.port;
|
link.href = "//localhost:" + srv.listener.port;
|
||||||
document.head.appendChild(link);
|
document.head.appendChild(link);
|
||||||
link = document.createElement("link");
|
link = document.createElement("link");
|
||||||
link.rel = "preconnect";
|
link.rel = "preconnect";
|
||||||
link.href = "//localhost:" + srv1.listener.port;
|
link.href = "//localhost:" + srv.listener.port;
|
||||||
link.crossOrigin = "anonymous";
|
link.crossOrigin = "anonymous";
|
||||||
document.head.appendChild(link);
|
document.head.appendChild(link);
|
||||||
}
|
|
||||||
|
|
||||||
function testHeader()
|
|
||||||
{
|
|
||||||
// test the http link response header - the test contains both a
|
// test the http link response header - the test contains both a
|
||||||
// normal and anonymous preconnect link header
|
// normal and anonymous preconnect link header
|
||||||
srv2 = new TestServer2(testDone);
|
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
xhr.open("GET", 'rel_preconnect.sjs', false);
|
xhr.open("GET", 'rel_preconnect.sjs', false);
|
||||||
xhr.setRequestHeader("X-Link", "//localhost:" + srv2.listener.port);
|
xhr.setRequestHeader("X-Link", "//localhost:" + srv.listener.port);
|
||||||
xhr.send();
|
xhr.send();
|
||||||
is(xhr.status, 200, 'xhr cool');
|
is(xhr.status, 200, 'xhr cool');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testDone()
|
|
||||||
{
|
|
||||||
SpecialPowers.setIntPref("network.http.speculative-parallel-limit",
|
|
||||||
originalLimit);
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body onload="testElement();">
|
<body onload="doTest();">
|
||||||
<p id="display"></p>
|
<p id="display"></p>
|
||||||
<div id="content" style="display: none"></div>
|
<div id="content" style="display: none"></div>
|
||||||
<pre id="test">
|
<pre id="test">
|
||||||
|
Loading…
Reference in New Issue
Block a user