|
1 function noop() {} |
|
2 |
|
3 function run_test() { |
|
4 var evts; |
|
5 |
|
6 var contentHandler = { |
|
7 attrs: null, |
|
8 startDocument: function() { |
|
9 evts.push("startDocument"); |
|
10 }, |
|
11 endDocument: noop, |
|
12 |
|
13 startElement: function startElement() { |
|
14 evts.push("startElement"); |
|
15 }, |
|
16 |
|
17 endElement: noop, |
|
18 characters: noop, |
|
19 processingInstruction: noop, |
|
20 ignorableWhitespace: noop, |
|
21 startPrefixMapping: noop, |
|
22 endPrefixMapping: noop |
|
23 }; |
|
24 |
|
25 function XMLDeclHandler(version, encoding, standalone) { |
|
26 evts.splice(evts.length, 0, version, encoding, standalone); |
|
27 } |
|
28 |
|
29 const nsISAXXMLReader = Components.interfaces.nsISAXXMLReader; |
|
30 var saxReader = Components.classes["@mozilla.org/saxparser/xmlreader;1"] |
|
31 .createInstance(nsISAXXMLReader); |
|
32 saxReader.contentHandler = contentHandler; |
|
33 saxReader.declarationHandler = XMLDeclHandler; |
|
34 |
|
35 evts = []; |
|
36 saxReader.parseFromString("<root/>", "application/xml"); |
|
37 do_check_eq(evts.length, 2); |
|
38 do_check_eq(evts[0], "startDocument"); |
|
39 do_check_eq(evts[1], "startElement"); |
|
40 |
|
41 evts = []; |
|
42 saxReader.parseFromString("<?xml version='1.0'?><root/>", "application/xml"); |
|
43 do_check_eq(evts.length, 5); |
|
44 do_check_eq(evts[0], "startDocument"); |
|
45 do_check_eq(evts[1], "1.0"); |
|
46 do_check_eq(evts[2], ""); |
|
47 do_check_false(evts[3]); |
|
48 do_check_eq(evts[4], "startElement"); |
|
49 |
|
50 evts = []; |
|
51 saxReader.parseFromString("<?xml version='1.0' encoding='UTF-8'?><root/>", "application/xml"); |
|
52 do_check_eq(evts.length, 5); |
|
53 do_check_eq(evts[0], "startDocument"); |
|
54 do_check_eq(evts[1], "1.0"); |
|
55 do_check_eq(evts[2], "UTF-8"); |
|
56 do_check_false(evts[3]); |
|
57 do_check_eq(evts[4], "startElement"); |
|
58 |
|
59 evts = []; |
|
60 saxReader.parseFromString("<?xml version='1.0' standalone='yes'?><root/>", "application/xml"); |
|
61 do_check_eq(evts.length, 5); |
|
62 do_check_eq(evts[0], "startDocument"); |
|
63 do_check_eq(evts[1], "1.0"); |
|
64 do_check_eq(evts[2], ""); |
|
65 do_check_true(evts[3]); |
|
66 do_check_eq(evts[4], "startElement"); |
|
67 |
|
68 evts = []; |
|
69 saxReader.parseFromString("<?xml version='1.0' encoding='UTF-8' standalone='yes'?><root/>", "application/xml"); |
|
70 do_check_eq(evts.length, 5); |
|
71 do_check_eq(evts[0], "startDocument"); |
|
72 do_check_eq(evts[1], "1.0"); |
|
73 do_check_eq(evts[2], "UTF-8"); |
|
74 do_check_true(evts[3]); |
|
75 do_check_eq(evts[4], "startElement"); |
|
76 |
|
77 evts = []; |
|
78 // Not well-formed |
|
79 saxReader.parseFromString("<?xml encoding='UTF-8'?><root/>", "application/xml"); |
|
80 do_check_eq(evts.length, 1); |
|
81 do_check_eq(evts[0], "startDocument"); |
|
82 } |