Thu, 15 Jan 2015 21:03:48 +0100
Integrate friendly tips from Tor colleagues to make (or not) 4.5 alpha 3;
This includes removal of overloaded (but unused) methods, and addition of
a overlooked call to DataStruct::SetData(nsISupports, uint32_t, bool.)
1 Cu.import("resource://testing-common/httpd.js");
3 var httpserver = new HttpServer();
4 var index = 0;
5 var tests = [
6 {url : "/test/test",
7 datalen : 16},
9 // Test that the http channel fails and the response body is suppressed
10 // bug 255119
11 {url: "/test/test",
12 responseheader: [ "Location: javascript:alert()"],
13 flags : CL_EXPECT_FAILURE,
14 datalen : 0},
15 ];
17 function setupChannel(url) {
18 var ios = Components.classes["@mozilla.org/network/io-service;1"].
19 getService(Ci.nsIIOService);
20 var chan = ios.newChannel("http://localhost:" +
21 httpserver.identity.primaryPort + url, "", null);
22 return chan;
23 }
25 function startIter() {
26 var channel = setupChannel(tests[index].url);
27 channel.asyncOpen(new ChannelListener(completeIter, channel, tests[index].flags), null);
28 }
30 function completeIter(request, data, ctx) {
31 do_check_true(data.length == tests[index].datalen);
32 if (++index < tests.length) {
33 startIter();
34 } else {
35 httpserver.stop(do_test_finished);
36 }
37 }
39 function run_test() {
40 httpserver.registerPathHandler("/test/test", handler);
41 httpserver.start(-1);
43 startIter();
44 do_test_pending();
45 }
47 function handler(metadata, response) {
48 var body = "thequickbrownfox";
49 response.setHeader("Content-Type", "text/plain", false);
51 var header = tests[index].responseheader;
52 if (header != undefined) {
53 for (var i = 0; i < header.length; i++) {
54 var splitHdr = header[i].split(": ");
55 response.setHeader(splitHdr[0], splitHdr[1], false);
56 }
57 }
59 response.setStatusLine(metadata.httpVersion, 302, "Redirected");
60 response.bodyOutputStream.write(body, body.length);
61 }