diff options
Diffstat (limited to 'netwerk/test/unit/test_bug376660.js')
-rw-r--r-- | netwerk/test/unit/test_bug376660.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/netwerk/test/unit/test_bug376660.js b/netwerk/test/unit/test_bug376660.js new file mode 100644 index 0000000000..8208eef6a6 --- /dev/null +++ b/netwerk/test/unit/test_bug376660.js @@ -0,0 +1,72 @@ +Cu.import("resource://gre/modules/NetUtil.jsm"); + +var Cc = Components.classes; +var Ci = Components.interfaces; + +var listener = { + expect_failure: false, + QueryInterface: function listener_qi(iid) { + if (iid.equals(Ci.nsISupports) || + iid.equals(Ci.nsIUnicharStreamLoaderObserver)) { + return this; + } + throw Components.results.NS_ERROR_NO_INTERFACE; + }, + onDetermineCharset : function onDetermineCharset(loader, context, data) + { + return "us-ascii"; + }, + onStreamComplete : function onStreamComplete (loader, context, status, data) + { + try { + if (this.expect_failure) + do_check_false(Components.isSuccessCode(status)); + else + do_check_eq(status, Components.results.NS_OK); + do_check_eq(data, ""); + do_check_neq(loader.channel, null); + tests[current_test++](); + } finally { + do_test_finished(); + } + } +}; + +var current_test = 0; +var tests = [test1, test2, done]; + +function run_test() { + tests[current_test++](); +} + +function test1() { + var f = + Cc["@mozilla.org/network/unichar-stream-loader;1"]. + createInstance(Ci.nsIUnicharStreamLoader); + f.init(listener); + + var chan = NetUtil.newChannel({ + uri: "data:text/plain,", + loadUsingSystemPrincipal: true + }); + chan.asyncOpen2(f); + do_test_pending(); +} + +function test2() { + var f = + Cc["@mozilla.org/network/unichar-stream-loader;1"]. + createInstance(Ci.nsIUnicharStreamLoader); + f.init(listener); + + var chan = NetUtil.newChannel({ + uri: "http://localhost:0/", + loadUsingSystemPrincipal: true + }); + listener.expect_failure = true; + chan.asyncOpen2(f); + do_test_pending(); +} + +function done() { +} |