зеркало из https://github.com/mozilla/gecko-dev.git
Backout of bug 532147 and bug 532146 due to test failure.
This commit is contained in:
Родитель
8313a31289
Коммит
0a0e3223a8
|
@ -128,23 +128,23 @@ const NetUtil = {
|
|||
},
|
||||
|
||||
/**
|
||||
* Asynchronously opens a source and fetches the response. A source can be
|
||||
* an nsIURI, nsIFile, string spec, or nsIChannel. The provided callback
|
||||
* will get an input stream containing the response, and the result code.
|
||||
* Asynchronously opens a channel and fetches the response. The provided
|
||||
* callback will get an input stream containing the response, and the result
|
||||
* code.
|
||||
*
|
||||
* @param aSource
|
||||
* The nsIURI, nsIFile, string spec, or nsIChannel to open.
|
||||
* @param aChannel
|
||||
* The nsIChannel to open.
|
||||
* @param aCallback
|
||||
* The callback function that will be notified upon completion. It
|
||||
* will get two arguments:
|
||||
* 1) An nsIInputStream containing the data from the channel, if any.
|
||||
* 2) The status code from opening the source.
|
||||
* 2) The status code from opening the channel.
|
||||
*/
|
||||
asyncFetch: function NetUtil_asyncOpen(aSource, aCallback)
|
||||
asyncFetch: function NetUtil_asyncOpen(aChannel, aCallback)
|
||||
{
|
||||
if (!aSource || !aCallback) {
|
||||
if (!aChannel || !aCallback) {
|
||||
let exception = new Components.Exception(
|
||||
"Must have a source and a callback",
|
||||
"Must have a channel and a callback",
|
||||
Cr.NS_ERROR_INVALID_ARG,
|
||||
Components.stack.caller
|
||||
);
|
||||
|
@ -168,12 +168,7 @@ const NetUtil = {
|
|||
}
|
||||
});
|
||||
|
||||
let channel = aSource;
|
||||
if (!(channel instanceof Ci.nsIChannel)) {
|
||||
channel = this.newChannel(aSource);
|
||||
}
|
||||
|
||||
channel.asyncOpen(listener, null);
|
||||
aChannel.asyncOpen(listener, null);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -209,41 +204,6 @@ const NetUtil = {
|
|||
return this.ioService.newURI(aTarget, aOriginCharset, aBaseURI);
|
||||
},
|
||||
|
||||
/**
|
||||
* Constructs a new channel for the given spec, character set, and base URI,
|
||||
* or nsIURI, or nsIFile.
|
||||
*
|
||||
* @param aWhatToLoad
|
||||
* The string spec for the desired URI, an nsIURI, or an nsIFile.
|
||||
* @param aOriginCharset [optional]
|
||||
* The character set for the URI. Only used if aWhatToLoad is a
|
||||
* string.
|
||||
* @param aBaseURI [optional]
|
||||
* The base URI for the spec. Only used if aWhatToLoad is a string.
|
||||
*
|
||||
* @return an nsIChannel object.
|
||||
*/
|
||||
newChannel: function NetUtil_newChannel(aWhatToLoad, aOriginCharset,
|
||||
aBaseURI)
|
||||
{
|
||||
if (!aWhatToLoad) {
|
||||
let exception = new Components.Exception(
|
||||
"Must have a non-null string spec, nsIURI, or nsIFile object",
|
||||
Cr.NS_ERROR_INVALID_ARG,
|
||||
Components.stack.caller
|
||||
);
|
||||
throw exception;
|
||||
}
|
||||
|
||||
let uri = aWhatToLoad;
|
||||
if (!(aWhatToLoad instanceof Ci.nsIURI)) {
|
||||
// We either have a string or an nsIFile that we'll need a URI for.
|
||||
uri = this.newURI(aWhatToLoad, aOriginCharset, aBaseURI);
|
||||
}
|
||||
|
||||
return this.ioService.newChannelFromURI(uri);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns a reference to nsIIOService.
|
||||
*
|
||||
|
|
|
@ -224,7 +224,7 @@ function test_asyncFetch_no_callback()
|
|||
run_next_test();
|
||||
}
|
||||
|
||||
function test_asyncFetch_with_nsIChannel()
|
||||
function test_asyncFetch()
|
||||
{
|
||||
const TEST_DATA = "this is a test string";
|
||||
|
||||
|
@ -258,110 +258,6 @@ function test_asyncFetch_with_nsIChannel()
|
|||
});
|
||||
}
|
||||
|
||||
function test_asyncFetch_with_nsIURI()
|
||||
{
|
||||
const TEST_DATA = "this is a test string";
|
||||
|
||||
// Start the http server, and register our handler.
|
||||
let server = new nsHttpServer();
|
||||
server.registerPathHandler("/test", function(aRequest, aResponse) {
|
||||
aResponse.setStatusLine(aRequest.httpVersion, 200, "OK");
|
||||
aResponse.setHeader("Content-Type", "text/plain", false);
|
||||
aResponse.write(TEST_DATA);
|
||||
});
|
||||
server.start(4444);
|
||||
|
||||
// Create our URI.
|
||||
let uri = NetUtil.newURI("http://localhost:4444/test");
|
||||
|
||||
// Open our URI asynchronously.
|
||||
NetUtil.asyncFetch(uri, function(aInputStream, aResult) {
|
||||
// Check that we had success.
|
||||
do_check_true(Components.isSuccessCode(aResult));
|
||||
|
||||
// Check that we got the right data.
|
||||
do_check_eq(aInputStream.available(), TEST_DATA.length);
|
||||
let is = Cc["@mozilla.org/scriptableinputstream;1"].
|
||||
createInstance(Ci.nsIScriptableInputStream);
|
||||
is.init(aInputStream);
|
||||
let result = is.read(TEST_DATA.length);
|
||||
do_check_eq(TEST_DATA, result);
|
||||
|
||||
server.stop(run_next_test);
|
||||
});
|
||||
}
|
||||
|
||||
function test_asyncFetch_with_string()
|
||||
{
|
||||
const TEST_DATA = "this is a test string";
|
||||
|
||||
// Start the http server, and register our handler.
|
||||
let server = new nsHttpServer();
|
||||
server.registerPathHandler("/test", function(aRequest, aResponse) {
|
||||
aResponse.setStatusLine(aRequest.httpVersion, 200, "OK");
|
||||
aResponse.setHeader("Content-Type", "text/plain", false);
|
||||
aResponse.write(TEST_DATA);
|
||||
});
|
||||
server.start(4444);
|
||||
|
||||
// Open our location asynchronously.
|
||||
NetUtil.asyncFetch("http://localhost:4444/test", function(aInputStream,
|
||||
aResult) {
|
||||
// Check that we had success.
|
||||
do_check_true(Components.isSuccessCode(aResult));
|
||||
|
||||
// Check that we got the right data.
|
||||
do_check_eq(aInputStream.available(), TEST_DATA.length);
|
||||
let is = Cc["@mozilla.org/scriptableinputstream;1"].
|
||||
createInstance(Ci.nsIScriptableInputStream);
|
||||
is.init(aInputStream);
|
||||
let result = is.read(TEST_DATA.length);
|
||||
do_check_eq(TEST_DATA, result);
|
||||
|
||||
server.stop(run_next_test);
|
||||
});
|
||||
}
|
||||
|
||||
function test_asyncFetch_with_nsIFile()
|
||||
{
|
||||
const TEST_DATA = "this is a test string";
|
||||
|
||||
// First we need a file to read from.
|
||||
let file = Cc["@mozilla.org/file/directory_service;1"].
|
||||
getService(Ci.nsIProperties).
|
||||
get("TmpD", Ci.nsIFile);
|
||||
file.append("NetUtil-asyncFetch-test-file.tmp");
|
||||
file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
|
||||
|
||||
// Write the test data to the file.
|
||||
let ostream = Cc["@mozilla.org/network/file-output-stream;1"].
|
||||
createInstance(Ci.nsIFileOutputStream);
|
||||
ostream.init(file, -1, -1, 0);
|
||||
ostream.write(TEST_DATA, TEST_DATA.length);
|
||||
|
||||
// Sanity check to make sure the data was written.
|
||||
do_check_eq(TEST_DATA, getFileContents(file));
|
||||
|
||||
// Open our file asynchronously.
|
||||
NetUtil.asyncFetch(file, function(aInputStream, aResult) {
|
||||
// Check that we had success.
|
||||
do_check_true(Components.isSuccessCode(aResult));
|
||||
|
||||
// Check that we got the right data.
|
||||
do_check_eq(aInputStream.available(), TEST_DATA.length);
|
||||
let is = Cc["@mozilla.org/scriptableinputstream;1"].
|
||||
createInstance(Ci.nsIScriptableInputStream);
|
||||
is.init(aInputStream);
|
||||
let result = is.read(TEST_DATA.length);
|
||||
do_check_eq(TEST_DATA, result);
|
||||
|
||||
// Remove our test file.
|
||||
file.remove(false);
|
||||
|
||||
run_next_test();
|
||||
});
|
||||
}
|
||||
|
||||
function test_asyncFetch_does_not_block()
|
||||
{
|
||||
// Create our channel that has no data.
|
||||
|
@ -390,64 +286,6 @@ function test_asyncFetch_does_not_block()
|
|||
});
|
||||
}
|
||||
|
||||
function test_newChannel_no_specifier()
|
||||
{
|
||||
try {
|
||||
NetUtil.newChannel();
|
||||
do_throw("should throw!");
|
||||
}
|
||||
catch (e) {
|
||||
do_check_eq(e.result, Cr.NS_ERROR_INVALID_ARG);
|
||||
}
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
function test_newChannel_with_string()
|
||||
{
|
||||
const TEST_SPEC = "http://mozilla.org";
|
||||
|
||||
// Check that we get the same URI back from channel the IO service creates and
|
||||
// the channel the utility method creates.
|
||||
let ios = NetUtil.ioService;
|
||||
let iosChannel = ios.newChannel(TEST_SPEC, null, null);
|
||||
let NetUtilChannel = NetUtil.newChannel(TEST_SPEC);
|
||||
do_check_true(iosChannel.URI.equals(NetUtilChannel.URI));
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
function test_newChannel_with_nsIURI()
|
||||
{
|
||||
const TEST_SPEC = "http://mozilla.org";
|
||||
|
||||
// Check that we get the same URI back from channel the IO service creates and
|
||||
// the channel the utility method creates.
|
||||
let uri = NetUtil.newURI(TEST_SPEC);
|
||||
let iosChannel = NetUtil.ioService.newChannelFromURI(uri);
|
||||
let NetUtilChannel = NetUtil.newChannel(uri);
|
||||
do_check_true(iosChannel.URI.equals(NetUtilChannel.URI));
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
function test_newChannel_with_nsIFile()
|
||||
{
|
||||
let file = Cc["@mozilla.org/file/directory_service;1"].
|
||||
getService(Ci.nsIProperties).
|
||||
get("TmpD", Ci.nsIFile);
|
||||
file.append("NetUtil-test-file.tmp");
|
||||
|
||||
// Check that we get the same URI back from channel the IO service creates and
|
||||
// the channel the utility method creates.
|
||||
let uri = NetUtil.newURI(file);
|
||||
let iosChannel = NetUtil.ioService.newChannelFromURI(uri);
|
||||
let NetUtilChannel = NetUtil.newChannel(uri);
|
||||
do_check_true(iosChannel.URI.equals(NetUtilChannel.URI));
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//// Test Runner
|
||||
|
||||
|
@ -460,15 +298,8 @@ let tests = [
|
|||
test_ioService,
|
||||
test_asyncFetch_no_channel,
|
||||
test_asyncFetch_no_callback,
|
||||
test_asyncFetch_with_nsIChannel,
|
||||
test_asyncFetch_with_nsIURI,
|
||||
test_asyncFetch_with_string,
|
||||
test_asyncFetch_with_nsIFile,
|
||||
test_asyncFetch,
|
||||
test_asyncFetch_does_not_block,
|
||||
test_newChannel_no_specifier,
|
||||
test_newChannel_with_string,
|
||||
test_newChannel_with_nsIURI,
|
||||
test_newChannel_with_nsIFile,
|
||||
];
|
||||
let index = 0;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче