diff options
Diffstat (limited to 'modules/libjar/test/unit/test_bug407303.js')
-rw-r--r-- | modules/libjar/test/unit/test_bug407303.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/modules/libjar/test/unit/test_bug407303.js b/modules/libjar/test/unit/test_bug407303.js new file mode 100644 index 000000000..313d88c64 --- /dev/null +++ b/modules/libjar/test/unit/test_bug407303.js @@ -0,0 +1,42 @@ +// Regression test for bug 407303 - A failed channel should not be checked +// for an unsafe content type. + +var Cc = Components.classes; +var Ci = Components.interfaces; +var Cu = Components.utils; +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/NetUtil.jsm"); + +// XXX: NS_ERROR_UNKNOWN_HOST is not in Components.results +const NS_ERROR_UNKNOWN_HOST = 0x804B001E; + +var listener = { + QueryInterface: function(iid) { + if (iid.equals(Ci.nsISupports) || + iid.equals(Ci.nsIRequestObserver)) + return this; + throw Cr.NS_ERROR_NO_INTERFACE; + }, + + onStartRequest: function(request, context) { + }, + + onDataAvailable: function(request, context, stream, offset, count) { + do_throw("shouldn't get data!"); + }, + + onStopRequest: function(request, context, status) { + do_check_eq(status, NS_ERROR_UNKNOWN_HOST); + do_test_finished(); + } +}; + +function run_test() { + Services.prefs.setBoolPref("network.jar.block-remote-files", false); + var channel = NetUtil.newChannel({ + uri: "jar:http://test.invalid/test.jar!/index.html", + loadUsingSystemPrincipal: true} + ); + channel.asyncOpen2(listener); + do_test_pending(); +} |