зеркало из https://github.com/mozilla/pjs.git
Bug 532143 - NetUtil.newURI should take a string or nsIFile
You can now automagically get an nsIURI providing a string or an nsIFile. r=bz sr=vlad
This commit is contained in:
Родитель
e9b69b691f
Коммит
c1f9653a4e
|
@ -172,29 +172,36 @@ const NetUtil = {
|
|||
},
|
||||
|
||||
/**
|
||||
* Constructs a new URI for the given spec, character set, and base URI.
|
||||
* Constructs a new URI for the given spec, character set, and base URI, or
|
||||
* an nsIFile.
|
||||
*
|
||||
* @param aSpec
|
||||
* The spec for the desired URI.
|
||||
* @param aTarget
|
||||
* The string spec for the desired URI or an nsIFile.
|
||||
* @param aOriginCharset [optional]
|
||||
* The character set for the URI.
|
||||
* The character set for the URI. Only used if aTarget is not an
|
||||
* nsIFile.
|
||||
* @param aBaseURI [optional]
|
||||
* The base URI for the spec.
|
||||
* The base URI for the spec. Only used if aTarget is not an
|
||||
* nsIFile.
|
||||
*
|
||||
* @return an nsIURI object.
|
||||
*/
|
||||
newURI: function NetUtil_newURI(aSpec, aOriginCharset, aBaseURI)
|
||||
newURI: function NetUtil_newURI(aTarget, aOriginCharset, aBaseURI)
|
||||
{
|
||||
if (!aSpec) {
|
||||
if (!aTarget) {
|
||||
let exception = new Components.Exception(
|
||||
"Must have a non-null spec",
|
||||
"Must have a non-null string spec or nsIFile object",
|
||||
Cr.NS_ERROR_INVALID_ARG,
|
||||
Components.stack.caller
|
||||
);
|
||||
throw exception;
|
||||
}
|
||||
|
||||
return this.ioService.newURI(aSpec, aOriginCharset, aBaseURI);
|
||||
if (aTarget instanceof Ci.nsIFile) {
|
||||
return this.ioService.newFileURI(aTarget);
|
||||
}
|
||||
|
||||
return this.ioService.newURI(aTarget, aOriginCharset, aBaseURI);
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -163,7 +163,8 @@ function test_newURI()
|
|||
{
|
||||
let ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
|
||||
|
||||
// Check that we get the same URI back from the IO service and the utility method.
|
||||
// Check that we get the same URI back from the IO service and the utility
|
||||
// method.
|
||||
const TEST_URI = "http://mozilla.org";
|
||||
let iosURI = ios.newURI(TEST_URI, null, null);
|
||||
let NetUtilURI = NetUtil.newURI(TEST_URI);
|
||||
|
@ -172,6 +173,25 @@ function test_newURI()
|
|||
run_next_test();
|
||||
}
|
||||
|
||||
function test_newURI_takes_nsIFile()
|
||||
{
|
||||
let ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
|
||||
|
||||
// Create a test file that we can pass into NetUtil.newURI
|
||||
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 the IO service and the utility
|
||||
// method.
|
||||
let iosURI = ios.newFileURI(file);
|
||||
let NetUtilURI = NetUtil.newURI(file);
|
||||
do_check_true(iosURI.equals(NetUtilURI));
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
function test_ioService()
|
||||
{
|
||||
do_check_true(NetUtil.ioService instanceof Ci.nsIIOService);
|
||||
|
@ -274,6 +294,7 @@ let tests = [
|
|||
test_async_write_file_nsISafeOutputStream,
|
||||
test_newURI_no_spec_throws,
|
||||
test_newURI,
|
||||
test_newURI_takes_nsIFile,
|
||||
test_ioService,
|
||||
test_asyncFetch_no_channel,
|
||||
test_asyncFetch_no_callback,
|
||||
|
@ -287,7 +308,14 @@ function run_next_test()
|
|||
if (index < tests.length) {
|
||||
do_test_pending();
|
||||
print("Running the next test: " + tests[index].name);
|
||||
tests[index++]();
|
||||
|
||||
// Asynchronous test exceptions do not kill the test...
|
||||
try {
|
||||
tests[index++]();
|
||||
}
|
||||
catch (e) {
|
||||
do_throw(e);
|
||||
}
|
||||
}
|
||||
|
||||
do_test_finished();
|
||||
|
|
Загрузка…
Ссылка в новой задаче