Backed out changeset 9057d052acee (bug 1559088) for causing xpcshell failures on test_redirect-caching_failure.js CLOSED TREE

This commit is contained in:
arthur.iakab 2019-08-30 21:37:15 +03:00
parent 2502483f94
commit fd7aae5565
2 changed files with 14 additions and 46 deletions

View File

@ -1,21 +1,5 @@
const { HttpServer } = ChromeUtils.import("resource://testing-common/httpd.js");
/*
* The test is checking async redirect code path that is loading a cached
* redirect. But creation of the target channel fails before we even try
* to do async open on it. We force the creation error by forbidding
* the port number the URI contains. It must be done only after we have
* attempted to do the redirect (open the target URL) otherwise it's not
* cached.
*/
function inChildProcess() {
return (
Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime)
.processType != Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT
);
}
XPCOMUtils.defineLazyGetter(this, "URL", function() {
return "http://localhost:" + httpServer.identity.primaryPort;
});
@ -32,39 +16,29 @@ function make_channel(url, callback, ctx) {
return NetUtil.newChannel({ uri: url, loadUsingSystemPrincipal: true });
}
var serverRequestCount = 0;
function redirectHandler(metadata, response) {
++serverRequestCount;
response.setStatusLine(metadata.httpVersion, 301, "Moved");
response.setHeader("Location", "http://non-existent.tld:65400", false);
response.setHeader(
"Location",
"httpx://localhost:" + httpServer.identity.primaryPort + "/content",
false
);
response.setHeader("Cache-control", "max-age=1000", false);
}
function firstTimeThrough(request) {
Assert.equal(request.status, Cr.NS_ERROR_UNKNOWN_HOST);
Assert.equal(serverRequestCount, 1);
function makeSureNotInCache(request, buffer) {
Assert.equal(request.status, Cr.NS_ERROR_UNKNOWN_PROTOCOL);
const nextHop = () => {
var chan = make_channel(randomURI);
chan.loadFlags |= Ci.nsIRequest.LOAD_FROM_CACHE;
chan.asyncOpen(new ChannelListener(finish_test, null, CL_EXPECT_FAILURE));
};
if (inChildProcess()) {
do_send_remote_message("disable-ports");
do_await_remote_message("disable-ports-done").then(nextHop);
} else {
Services.prefs.setCharPref("network.security.ports.banned", "65400");
nextHop();
}
// It's very unlikely that we'd somehow succeed when we try again from cache.
// Can't hurt to test though.
var chan = make_channel(randomURI);
chan.loadFlags |= Ci.nsIRequest.LOAD_ONLY_FROM_CACHE;
chan.asyncOpen(new ChannelListener(finish_test, null, CL_EXPECT_FAILURE));
}
function finish_test(request, buffer) {
Assert.equal(request.status, Cr.NS_ERROR_PORT_ACCESS_NOT_ALLOWED);
Assert.equal(serverRequestCount, 1);
Assert.equal(request.status, Cr.NS_ERROR_UNKNOWN_PROTOCOL);
Assert.equal(buffer, "");
httpServer.stop(do_test_finished);
}
@ -75,7 +49,7 @@ function run_test() {
var chan = make_channel(randomURI);
chan.asyncOpen(
new ChannelListener(firstTimeThrough, null, CL_EXPECT_FAILURE)
new ChannelListener(makeSureNotInCache, null, CL_EXPECT_FAILURE)
);
do_test_pending();
}

View File

@ -1,13 +1,7 @@
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
//
// Run test script in content process instead of chrome (xpcshell's default)
//
//
function run_test() {
do_await_remote_message("disable-ports").then(_ => {
Services.prefs.setCharPref("network.security.ports.banned", "65400");
do_send_remote_message("disable-ports-done");
});
run_test_in_child("../unit/test_redirect-caching_failure.js");
}