diff options
author | Jesse Wilson <jessewilson@google.com> | 2011-01-10 16:34:20 -0800 |
---|---|---|
committer | Jesse Wilson <jessewilson@google.com> | 2011-01-10 16:34:20 -0800 |
commit | 5c0408af32a2b1c78b2d5a93cca60b0fffddd7da (patch) | |
tree | eed573b347e3c57e1e3762685a0debe4d5b6cd0c /luni/src/test/java/tests/xml/DomTest.java | |
parent | 6a3dda3cd755cb77c7234f3c7bee782d92ceccf7 (diff) | |
download | libcore-5c0408af32a2b1c78b2d5a93cca60b0fffddd7da.zip libcore-5c0408af32a2b1c78b2d5a93cca60b0fffddd7da.tar.gz libcore-5c0408af32a2b1c78b2d5a93cca60b0fffddd7da.tar.bz2 |
Don't permit DocumentFragments in the node hierarchy.
Change-Id: Icae3e3e41b4315f975892d5aafeae62d4799036d
http://code.google.com/p/android/issues/detail?id=2735
Diffstat (limited to 'luni/src/test/java/tests/xml/DomTest.java')
-rw-r--r-- | luni/src/test/java/tests/xml/DomTest.java | 92 |
1 files changed, 68 insertions, 24 deletions
diff --git a/luni/src/test/java/tests/xml/DomTest.java b/luni/src/test/java/tests/xml/DomTest.java index d7b0ef2..8477676 100644 --- a/luni/src/test/java/tests/xml/DomTest.java +++ b/luni/src/test/java/tests/xml/DomTest.java @@ -17,6 +17,26 @@ package tests.xml; import dalvik.annotation.KnownFailure; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; import junit.framework.AssertionFailedError; import junit.framework.TestCase; import org.w3c.dom.Attr; @@ -25,6 +45,7 @@ import org.w3c.dom.Comment; import org.w3c.dom.DOMException; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; +import org.w3c.dom.DocumentFragment; import org.w3c.dom.DocumentType; import org.w3c.dom.Element; import org.w3c.dom.Entity; @@ -37,34 +58,12 @@ import org.w3c.dom.ProcessingInstruction; import org.w3c.dom.Text; import org.w3c.dom.TypeInfo; import org.w3c.dom.UserDataHandler; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import static org.w3c.dom.UserDataHandler.NODE_ADOPTED; import static org.w3c.dom.UserDataHandler.NODE_CLONED; import static org.w3c.dom.UserDataHandler.NODE_IMPORTED; import static org.w3c.dom.UserDataHandler.NODE_RENAMED; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; /** * Construct a DOM and then interrogate it. @@ -1455,6 +1454,51 @@ public class DomTest extends TestCase { assertEquals(7, elements.getLength()); } + /** + * Documents shouldn't contain document fragments. + * http://code.google.com/p/android/issues/detail?id=2735 + */ + public void testAddingADocumentFragmentAddsItsChildren() { + Element a = document.createElement("a"); + Element b = document.createElement("b"); + Element c = document.createElement("c"); + DocumentFragment fragment = document.createDocumentFragment(); + fragment.appendChild(a); + fragment.appendChild(b); + fragment.appendChild(c); + + Node returned = menu.appendChild(fragment); + assertSame(fragment, returned); + NodeList children = menu.getChildNodes(); + assertEquals(6, children.getLength()); + assertTrue(children.item(0) instanceof Text); // whitespace + assertEquals(item, children.item(1)); + assertTrue(children.item(2) instanceof Text); // whitespace + assertEquals(a, children.item(3)); + assertEquals(b, children.item(4)); + assertEquals(c, children.item(5)); + } + + public void testReplacingWithADocumentFragmentInsertsItsChildren() { + Element a = document.createElement("a"); + Element b = document.createElement("b"); + Element c = document.createElement("c"); + DocumentFragment fragment = document.createDocumentFragment(); + fragment.appendChild(a); + fragment.appendChild(b); + fragment.appendChild(c); + + Node returned = menu.replaceChild(fragment, item); + assertSame(item, returned); + NodeList children = menu.getChildNodes(); + assertEquals(5, children.getLength()); + assertTrue(children.item(0) instanceof Text); // whitespace + assertEquals(a, children.item(1)); + assertEquals(b, children.item(2)); + assertEquals(c, children.item(3)); + assertTrue(children.item(4) instanceof Text); // whitespace + } + private class RecordingHandler implements UserDataHandler { final Set<String> calls = new HashSet<String>(); public void handle(short operation, String key, Object data, Node src, Node dst) { |