michael@0: function noop() {} michael@0: michael@0: function run_test() { michael@0: var contentHandler = { michael@0: attrs: null, michael@0: reset: function() { michael@0: this.attrs = []; michael@0: }, michael@0: startDocument: noop, michael@0: endDocument: noop, michael@0: michael@0: startElement: function startElement(aNamespaceURI, aLocalName, aNodeName, aAttrs) { michael@0: for (var i = 0; i < aAttrs.length; i++) michael@0: this.attrs.push(aAttrs.getQName(i)); 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: const nsISAXXMLReader = Components.interfaces.nsISAXXMLReader; michael@0: const src = ""; michael@0: const NS_PREFIX = "http://xml.org/sax/features/namespace-prefixes"; michael@0: michael@0: var saxReader = Components.classes["@mozilla.org/saxparser/xmlreader;1"] michael@0: .createInstance(nsISAXXMLReader); michael@0: do_check_false(saxReader.getFeature(NS_PREFIX)); michael@0: saxReader.contentHandler = contentHandler; michael@0: contentHandler.reset(); michael@0: saxReader.parseFromString(src, "application/xml"); michael@0: do_check_eq(contentHandler.attrs.length, 1); michael@0: do_check_eq(contentHandler.attrs[0], "y"); michael@0: michael@0: saxReader.setFeature(NS_PREFIX, true); michael@0: do_check_true(saxReader.getFeature(NS_PREFIX)); michael@0: contentHandler.reset(); michael@0: saxReader.parseFromString(src, "application/xml"); michael@0: do_check_eq(contentHandler.attrs.length, 2); michael@0: do_check_eq(contentHandler.attrs[0], "xmlns:a"); michael@0: do_check_eq(contentHandler.attrs[1], "y"); michael@0: michael@0: saxReader.setFeature(NS_PREFIX, false); michael@0: do_check_false(saxReader.getFeature(NS_PREFIX)); michael@0: contentHandler.reset(); michael@0: saxReader.parseFromString(src, "application/xml"); michael@0: do_check_eq(contentHandler.attrs.length, 1); michael@0: do_check_eq(contentHandler.attrs[0], "y"); michael@0: }