3 function make_channel(url) {
4 return NetUtil.newChannel({ uri: url, loadUsingSystemPrincipal: true });
7 add_task(async function test_empty() {
8 let uri = "http://localhost";
9 let httpChan = make_channel(uri);
11 let channel = Cc["@mozilla.org/network/input-stream-channel;1"]
12 .createInstance(Ci.nsIInputStreamChannel)
13 .QueryInterface(Ci.nsIChannel);
15 channel.setURI(httpChan.URI);
16 channel.loadInfo = httpChan.loadInfo;
18 let inputStream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(
19 Ci.nsIStringInputStream
21 inputStream.setUTF8Data(""); // Pass an empty string
23 channel.contentStream = inputStream;
25 let [status, buffer] = await new Promise(resolve => {
26 let streamConv = Cc["@mozilla.org/streamConverters;1"].getService(
27 Ci.nsIStreamConverterService
29 let multipartListener = {
32 QueryInterface: ChromeUtils.generateQI([
37 onStartRequest(request) {},
38 onDataAvailable(request, stream, offset, count) {
40 this._buffer = this._buffer.concat(read_stream(stream, count));
41 dump("BUFFEEE: " + this._buffer + "\n\n");
43 do_throw("Error in onDataAvailable: " + ex);
47 onStopRequest(request, status) {
48 resolve([status, this._buffer]);
51 let conv = streamConv.asyncConvertData(
58 let chan = make_channel(uri);
65 "Should be an error code because content has no boundary"
67 Assert.equal(buffer, "", "Should have received no content");