LGTM
2010/7/10 <[email protected]>: > Reviewers: MikeSamuel, > > Description: > When a comment is added, CajaTreeBuilder assumes the document already > has a parent node. This is not > true if the comment appears as the first line. > > Changed processComment to add use a document fragment as a parent node > when processing a comment > > Please review this at http://codereview.appspot.com/1770042/show > > Affected files: > M src/com/google/caja/parser/html/CajaTreeBuilder.java > M tests/com/google/caja/parser/html/DomParserTest.java > > > Index: tests/com/google/caja/parser/html/DomParserTest.java > =================================================================== > --- tests/com/google/caja/parser/html/DomParserTest.java (revision > 4168) > +++ tests/com/google/caja/parser/html/DomParserTest.java (working > copy) > @@ -231,6 +231,14 @@ > assertEquals(config, DOM2_HTML_RENDERED_GOLDEN, > Nodes.render(document)); > } > } > + > + public final void testParseFirstLineComment() throws Exception { > + String DOM_WITH_COMMENT = "<!-- This is a comment -->\n" + DOM2_HTML; > + TokenQueue<HtmlTokenType> tq = tokenizeTestInput( > + DOM_WITH_COMMENT, false, true); > + Element el = new DomParser(tq, false, mq).parseDocument(); > + assertEquals(DOM2_HTML_RENDERED_GOLDEN, Nodes.render(el)); > + } > > public final void testParseXmlFragmentManyWays() throws Exception { > for (DomParser p : allPossibleConfigurations(DOM3_XML, false)) { > Index: src/com/google/caja/parser/html/CajaTreeBuilder.java > =================================================================== > --- src/com/google/caja/parser/html/CajaTreeBuilder.java (revision > 4168) > +++ src/com/google/caja/parser/html/CajaTreeBuilder.java (working > copy) > @@ -144,7 +144,12 @@ > > @Override > protected void appendCommentToDocument(char[] buf, int start, int length) > { > - appendComment(doc.getDocumentElement(), buf, start, length); > + Node el = doc.getDocumentElement(); > + if (null == el) { > + el = doc.createDocumentFragment(); > + doc.appendChild(el); > + } > + appendComment(el, buf, start, length); > } > > @Override > > >
