|
1 function noop() {} |
|
2 |
|
3 function run_test() { |
|
4 var contentHandler = { |
|
5 attrs: null, |
|
6 reset: function() { |
|
7 this.attrs = []; |
|
8 }, |
|
9 startDocument: noop, |
|
10 endDocument: noop, |
|
11 |
|
12 startElement: function startElement(aNamespaceURI, aLocalName, aNodeName, aAttrs) { |
|
13 for (var i = 0; i < aAttrs.length; i++) |
|
14 this.attrs.push(aAttrs.getQName(i)); |
|
15 }, |
|
16 |
|
17 endElement: noop, |
|
18 characters: noop, |
|
19 processingInstruction: noop, |
|
20 ignorableWhitespace: noop, |
|
21 startPrefixMapping: noop, |
|
22 endPrefixMapping: noop |
|
23 }; |
|
24 |
|
25 const nsISAXXMLReader = Components.interfaces.nsISAXXMLReader; |
|
26 const src = "<a:x xmlns:a='foo' y='bar'/>"; |
|
27 const NS_PREFIX = "http://xml.org/sax/features/namespace-prefixes"; |
|
28 |
|
29 var saxReader = Components.classes["@mozilla.org/saxparser/xmlreader;1"] |
|
30 .createInstance(nsISAXXMLReader); |
|
31 do_check_false(saxReader.getFeature(NS_PREFIX)); |
|
32 saxReader.contentHandler = contentHandler; |
|
33 contentHandler.reset(); |
|
34 saxReader.parseFromString(src, "application/xml"); |
|
35 do_check_eq(contentHandler.attrs.length, 1); |
|
36 do_check_eq(contentHandler.attrs[0], "y"); |
|
37 |
|
38 saxReader.setFeature(NS_PREFIX, true); |
|
39 do_check_true(saxReader.getFeature(NS_PREFIX)); |
|
40 contentHandler.reset(); |
|
41 saxReader.parseFromString(src, "application/xml"); |
|
42 do_check_eq(contentHandler.attrs.length, 2); |
|
43 do_check_eq(contentHandler.attrs[0], "xmlns:a"); |
|
44 do_check_eq(contentHandler.attrs[1], "y"); |
|
45 |
|
46 saxReader.setFeature(NS_PREFIX, false); |
|
47 do_check_false(saxReader.getFeature(NS_PREFIX)); |
|
48 contentHandler.reset(); |
|
49 saxReader.parseFromString(src, "application/xml"); |
|
50 do_check_eq(contentHandler.attrs.length, 1); |
|
51 do_check_eq(contentHandler.attrs[0], "y"); |
|
52 } |