Reviewers: plindner1,
Description:
* enables rendering of doctypes for caja parser consistent with neko
* enables the running of serialization tests for the caja parser
Please review this at http://codereview.appspot.com/4441072/
Affected files:
M
java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java
M
java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java
M
java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/HtmlSerializationTest.java
Index:
java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/HtmlSerializationTest.java
===================================================================
---
java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/HtmlSerializationTest.java
(revision 1097199)
+++
java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/HtmlSerializationTest.java
(working copy)
@@ -45,7 +45,7 @@
// TODO: Add caja back when we upgrade to the latest version of caja
// http://code.google.com/p/google-caja/issues/detail?id=1115
- parsers = ImmutableList.of(neko/*, caja*/);
+ parsers = ImmutableList.of(neko, caja);
}
@Test
Index:
java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java
===================================================================
---
java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java
(revision 1097199)
+++
java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlParser.java
(working copy)
@@ -38,6 +38,7 @@
import org.apache.shindig.gadgets.GadgetException;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.parse.GadgetHtmlParser;
+import org.apache.shindig.gadgets.parse.HtmlSerialization;
import org.apache.shindig.gadgets.parse.SocialDataTags;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
@@ -60,6 +61,8 @@
// TODO: remove parseDomImpl() altogether; only have subclasses
// support parseFragmentImpl() with base class cleaning up.
Document document = fragment.getOwnerDocument();
+ CajaHtmlSerializer serializer = new CajaHtmlSerializer();
+ HtmlSerialization.attach(document, serializer, null);
Node html = null;
LinkedList<Node> beforeHtml = Lists.newLinkedList();
while (fragment.hasChildNodes()) {
Index:
java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java
===================================================================
---
java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java
(revision 1097199)
+++
java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java
(working copy)
@@ -37,8 +37,14 @@
public class CajaHtmlSerializer implements HtmlSerializer {
public String serialize(Document doc) {
StringWriter sw = HtmlSerialization.createWriter(doc);
- return Nodes.render(doc,
- new RenderContext(new Concatenator(sw, null)).asXml() ?
MarkupRenderMode.XML : MarkupRenderMode.HTML
- );
+ MarkupRenderMode mode =
+ new RenderContext(new Concatenator(sw, null)).asXml() ?
+ MarkupRenderMode.XML : MarkupRenderMode.HTML;
+
+ if (doc.getDoctype() != null) {
+ return Nodes.render(doc.getDoctype(), doc, mode);
+ } else {
+ return Nodes.render(doc, mode);
+ }
}
}