|
1 var Cc = Components.classes; |
|
2 var Ci = Components.interfaces; |
|
3 |
|
4 var listener = { |
|
5 expect_failure: false, |
|
6 QueryInterface: function listener_qi(iid) { |
|
7 if (iid.equals(Ci.nsISupports) || |
|
8 iid.equals(Ci.nsIUnicharStreamLoaderObserver)) { |
|
9 return this; |
|
10 } |
|
11 throw Components.results.NS_ERROR_NO_INTERFACE; |
|
12 }, |
|
13 onDetermineCharset : function onDetermineCharset(loader, context, data) |
|
14 { |
|
15 return "us-ascii"; |
|
16 }, |
|
17 onStreamComplete : function onStreamComplete (loader, context, status, data) |
|
18 { |
|
19 try { |
|
20 if (this.expect_failure) |
|
21 do_check_false(Components.isSuccessCode(status)); |
|
22 else |
|
23 do_check_eq(status, Components.results.NS_OK); |
|
24 do_check_eq(data, ""); |
|
25 do_check_neq(loader.channel, null); |
|
26 tests[current_test++](); |
|
27 } finally { |
|
28 do_test_finished(); |
|
29 } |
|
30 } |
|
31 }; |
|
32 |
|
33 var current_test = 0; |
|
34 var tests = [test1, test2, done]; |
|
35 |
|
36 function run_test() { |
|
37 tests[current_test++](); |
|
38 } |
|
39 |
|
40 function test1() { |
|
41 var f = |
|
42 Cc["@mozilla.org/network/unichar-stream-loader;1"]. |
|
43 createInstance(Ci.nsIUnicharStreamLoader); |
|
44 f.init(listener); |
|
45 |
|
46 var ios = Components.classes["@mozilla.org/network/io-service;1"] |
|
47 .getService(Components.interfaces.nsIIOService); |
|
48 var chan = ios.newChannel("data:text/plain,", null, null); |
|
49 chan.asyncOpen(f, null); |
|
50 do_test_pending(); |
|
51 } |
|
52 |
|
53 function test2() { |
|
54 var f = |
|
55 Cc["@mozilla.org/network/unichar-stream-loader;1"]. |
|
56 createInstance(Ci.nsIUnicharStreamLoader); |
|
57 f.init(listener); |
|
58 |
|
59 var ios = Components.classes["@mozilla.org/network/io-service;1"] |
|
60 .getService(Components.interfaces.nsIIOService); |
|
61 var chan = ios.newChannel("http://localhost:0/", null, null); |
|
62 listener.expect_failure = true; |
|
63 chan.asyncOpen(f, null); |
|
64 do_test_pending(); |
|
65 } |
|
66 |
|
67 function done() { |
|
68 } |