michael@0: var Cc = Components.classes; michael@0: var Ci = Components.interfaces; michael@0: michael@0: var listener = { michael@0: expect_failure: false, michael@0: QueryInterface: function listener_qi(iid) { michael@0: if (iid.equals(Ci.nsISupports) || michael@0: iid.equals(Ci.nsIUnicharStreamLoaderObserver)) { michael@0: return this; michael@0: } michael@0: throw Components.results.NS_ERROR_NO_INTERFACE; michael@0: }, michael@0: onDetermineCharset : function onDetermineCharset(loader, context, data) michael@0: { michael@0: return "us-ascii"; michael@0: }, michael@0: onStreamComplete : function onStreamComplete (loader, context, status, data) michael@0: { michael@0: try { michael@0: if (this.expect_failure) michael@0: do_check_false(Components.isSuccessCode(status)); michael@0: else michael@0: do_check_eq(status, Components.results.NS_OK); michael@0: do_check_eq(data, ""); michael@0: do_check_neq(loader.channel, null); michael@0: tests[current_test++](); michael@0: } finally { michael@0: do_test_finished(); michael@0: } michael@0: } michael@0: }; michael@0: michael@0: var current_test = 0; michael@0: var tests = [test1, test2, done]; michael@0: michael@0: function run_test() { michael@0: tests[current_test++](); michael@0: } michael@0: michael@0: function test1() { michael@0: var f = michael@0: Cc["@mozilla.org/network/unichar-stream-loader;1"]. michael@0: createInstance(Ci.nsIUnicharStreamLoader); michael@0: f.init(listener); michael@0: michael@0: var ios = Components.classes["@mozilla.org/network/io-service;1"] michael@0: .getService(Components.interfaces.nsIIOService); michael@0: var chan = ios.newChannel("data:text/plain,", null, null); michael@0: chan.asyncOpen(f, null); michael@0: do_test_pending(); michael@0: } michael@0: michael@0: function test2() { michael@0: var f = michael@0: Cc["@mozilla.org/network/unichar-stream-loader;1"]. michael@0: createInstance(Ci.nsIUnicharStreamLoader); michael@0: f.init(listener); michael@0: michael@0: var ios = Components.classes["@mozilla.org/network/io-service;1"] michael@0: .getService(Components.interfaces.nsIIOService); michael@0: var chan = ios.newChannel("http://localhost:0/", null, null); michael@0: listener.expect_failure = true; michael@0: chan.asyncOpen(f, null); michael@0: do_test_pending(); michael@0: } michael@0: michael@0: function done() { michael@0: }