mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-26 18:37:31 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
93
netwerk/test/unit/test_multipart_streamconv.js
Normal file
93
netwerk/test/unit/test_multipart_streamconv.js
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
Cu.import("resource://testing-common/httpd.js");
|
||||
Cu.import("resource://gre/modules/NetUtil.jsm");
|
||||
|
||||
var httpserver = null;
|
||||
|
||||
XPCOMUtils.defineLazyGetter(this, "uri", function() {
|
||||
return "http://localhost:" + httpserver.identity.primaryPort + "/multipart";
|
||||
});
|
||||
|
||||
function make_channel(url) {
|
||||
return NetUtil.newChannel({uri: url, loadUsingSystemPrincipal: true});
|
||||
}
|
||||
|
||||
var multipartBody = "--boundary\r\n\r\nSome text\r\n--boundary\r\n\r\n<?xml version='1.0'?><root/>\r\n--boundary--";
|
||||
|
||||
function contentHandler(metadata, response)
|
||||
{
|
||||
response.setHeader("Content-Type", 'multipart/mixed; boundary="boundary"');
|
||||
response.bodyOutputStream.write(multipartBody, multipartBody.length);
|
||||
}
|
||||
|
||||
var numTests = 2;
|
||||
var testNum = 0;
|
||||
|
||||
var testData =
|
||||
[
|
||||
{ data: "Some text", type: "text/plain" },
|
||||
{ data: "<?xml version='1.0'?><root/>", type: "text/xml" }
|
||||
];
|
||||
|
||||
function responseHandler(request, buffer)
|
||||
{
|
||||
do_check_eq(buffer, testData[testNum].data);
|
||||
do_check_eq(request.QueryInterface(Ci.nsIChannel).contentType,
|
||||
testData[testNum].type);
|
||||
if (++testNum == numTests)
|
||||
httpserver.stop(do_test_finished);
|
||||
}
|
||||
|
||||
var multipartListener = {
|
||||
_buffer: "",
|
||||
_index: 0,
|
||||
|
||||
QueryInterface: function(iid) {
|
||||
if (iid.equals(Components.interfaces.nsIStreamListener) ||
|
||||
iid.equals(Components.interfaces.nsIRequestObserver) ||
|
||||
iid.equals(Components.interfaces.nsISupports))
|
||||
return this;
|
||||
throw Components.results.NS_ERROR_NO_INTERFACE;
|
||||
},
|
||||
|
||||
onStartRequest: function(request, context) {
|
||||
this._buffer = "";
|
||||
},
|
||||
|
||||
onDataAvailable: function(request, context, stream, offset, count) {
|
||||
try {
|
||||
this._buffer = this._buffer.concat(read_stream(stream, count));
|
||||
dump("BUFFEEE: " + this._buffer + "\n\n");
|
||||
} catch (ex) {
|
||||
do_throw("Error in onDataAvailable: " + ex);
|
||||
}
|
||||
},
|
||||
|
||||
onStopRequest: function(request, context, status) {
|
||||
this._index++;
|
||||
// Second part should be last part
|
||||
do_check_eq(request.QueryInterface(Ci.nsIMultiPartChannel).isLastPart, this._index == 2);
|
||||
try {
|
||||
responseHandler(request, this._buffer);
|
||||
} catch (ex) {
|
||||
do_throw("Error in closure function: " + ex);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function run_test()
|
||||
{
|
||||
httpserver = new HttpServer();
|
||||
httpserver.registerPathHandler("/multipart", contentHandler);
|
||||
httpserver.start(-1);
|
||||
|
||||
var streamConv = Cc["@mozilla.org/streamConverters;1"]
|
||||
.getService(Ci.nsIStreamConverterService);
|
||||
var conv = streamConv.asyncConvertData("multipart/mixed",
|
||||
"*/*",
|
||||
multipartListener,
|
||||
null);
|
||||
|
||||
var chan = make_channel(uri);
|
||||
chan.asyncOpen2(conv);
|
||||
do_test_pending();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue