3 const { HttpServer
} = ChromeUtils
.importESModule(
4 "resource://testing-common/httpd.sys.mjs"
7 var httpserver
= new HttpServer();
10 { url
: "/test/test", datalen
: 16 },
12 // Test that the http channel fails and the response body is suppressed
16 responseheader
: ["Location: javascript:alert()"],
17 flags
: CL_EXPECT_FAILURE
,
22 function setupChannel(url
) {
23 return NetUtil
.newChannel({
24 uri
: "http://localhost:" + httpserver
.identity
.primaryPort
+ url
,
25 loadUsingSystemPrincipal
: true,
29 function startIter() {
30 var channel
= setupChannel(tests
[index
].url
);
32 new ChannelListener(completeIter
, channel
, tests
[index
].flags
)
36 function completeIter(request
, data
) {
37 Assert
.ok(data
.length
== tests
[index
].datalen
);
38 if (++index
< tests
.length
) {
41 httpserver
.stop(do_test_finished
);
46 httpserver
.registerPathHandler("/test/test", handler
);
53 function handler(metadata
, response
) {
54 var body
= "thequickbrownfox";
55 response
.setHeader("Content-Type", "text/plain", false);
57 var header
= tests
[index
].responseheader
;
58 if (header
!= undefined) {
59 for (var i
= 0; i
< header
.length
; i
++) {
60 var splitHdr
= header
[i
].split(": ");
61 response
.setHeader(splitHdr
[0], splitHdr
[1], false);
65 response
.setStatusLine(metadata
.httpVersion
, 302, "Redirected");
66 response
.bodyOutputStream
.write(body
, body
.length
);