michael@0: function noop() {}
michael@0:
michael@0: function run_test() {
michael@0: var evts;
michael@0:
michael@0: var contentHandler = {
michael@0: attrs: null,
michael@0: startDocument: function() {
michael@0: evts.push("startDocument");
michael@0: },
michael@0: endDocument: noop,
michael@0:
michael@0: startElement: function startElement() {
michael@0: evts.push("startElement");
michael@0: },
michael@0:
michael@0: endElement: noop,
michael@0: characters: noop,
michael@0: processingInstruction: noop,
michael@0: ignorableWhitespace: noop,
michael@0: startPrefixMapping: noop,
michael@0: endPrefixMapping: noop
michael@0: };
michael@0:
michael@0: function XMLDeclHandler(version, encoding, standalone) {
michael@0: evts.splice(evts.length, 0, version, encoding, standalone);
michael@0: }
michael@0:
michael@0: const nsISAXXMLReader = Components.interfaces.nsISAXXMLReader;
michael@0: var saxReader = Components.classes["@mozilla.org/saxparser/xmlreader;1"]
michael@0: .createInstance(nsISAXXMLReader);
michael@0: saxReader.contentHandler = contentHandler;
michael@0: saxReader.declarationHandler = XMLDeclHandler;
michael@0:
michael@0: evts = [];
michael@0: saxReader.parseFromString("", "application/xml");
michael@0: do_check_eq(evts.length, 2);
michael@0: do_check_eq(evts[0], "startDocument");
michael@0: do_check_eq(evts[1], "startElement");
michael@0:
michael@0: evts = [];
michael@0: saxReader.parseFromString("", "application/xml");
michael@0: do_check_eq(evts.length, 5);
michael@0: do_check_eq(evts[0], "startDocument");
michael@0: do_check_eq(evts[1], "1.0");
michael@0: do_check_eq(evts[2], "");
michael@0: do_check_false(evts[3]);
michael@0: do_check_eq(evts[4], "startElement");
michael@0:
michael@0: evts = [];
michael@0: saxReader.parseFromString("", "application/xml");
michael@0: do_check_eq(evts.length, 5);
michael@0: do_check_eq(evts[0], "startDocument");
michael@0: do_check_eq(evts[1], "1.0");
michael@0: do_check_eq(evts[2], "UTF-8");
michael@0: do_check_false(evts[3]);
michael@0: do_check_eq(evts[4], "startElement");
michael@0:
michael@0: evts = [];
michael@0: saxReader.parseFromString("", "application/xml");
michael@0: do_check_eq(evts.length, 5);
michael@0: do_check_eq(evts[0], "startDocument");
michael@0: do_check_eq(evts[1], "1.0");
michael@0: do_check_eq(evts[2], "");
michael@0: do_check_true(evts[3]);
michael@0: do_check_eq(evts[4], "startElement");
michael@0:
michael@0: evts = [];
michael@0: saxReader.parseFromString("", "application/xml");
michael@0: do_check_eq(evts.length, 5);
michael@0: do_check_eq(evts[0], "startDocument");
michael@0: do_check_eq(evts[1], "1.0");
michael@0: do_check_eq(evts[2], "UTF-8");
michael@0: do_check_true(evts[3]);
michael@0: do_check_eq(evts[4], "startElement");
michael@0:
michael@0: evts = [];
michael@0: // Not well-formed
michael@0: saxReader.parseFromString("", "application/xml");
michael@0: do_check_eq(evts.length, 1);
michael@0: do_check_eq(evts[0], "startDocument");
michael@0: }