Reviewers: johnfargo,

Description:
* render doctypes

Please review this at http://codereview.appspot.com/4172053/

Affected files:
M java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java M java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java


Index: java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java
===================================================================
--- java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java (revision 1071407) +++ java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java (working copy)
@@ -74,7 +74,7 @@
     proxyUriManager = new DefaultProxyUriManager(config, null);
   }

-  private static final String ORIGINAL = "<html><head>"
+  private static final String ORIGINAL = "<!DOCTYPE html><html><head>"
       + "<style>"
       + "@import url(/1.css);"
       + "P {color:blue;}"
@@ -84,7 +84,7 @@
       + "</head><body><a href=\"hello\">Hello</a>"
       + "</body></html>";

-  private static final String EXPECTED = "<html><head>"
+  private static final String EXPECTED = "<!DOCTYPE html><html><head>"
       + "<style>"
       + "@import url('//localhost:8080/gadgets/proxy?container=default&"
       + "gadget=http%3A%2F%2F1.com%2F&debug=0&nocache=0"
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 1071407) +++ java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaHtmlSerializer.java (working copy)
@@ -18,13 +18,15 @@
  */
 package org.apache.shindig.gadgets.parse.caja;

-import com.google.caja.reporting.MarkupRenderMode;
 import org.apache.shindig.gadgets.parse.HtmlSerialization;
 import org.apache.shindig.gadgets.parse.HtmlSerializer;
+
 import org.w3c.dom.Document;
+import org.w3c.dom.DocumentType;

 import com.google.caja.parser.html.Nodes;
 import com.google.caja.render.Concatenator;
+import com.google.caja.reporting.MarkupRenderMode;
 import com.google.caja.reporting.RenderContext;

 import java.io.StringWriter;
@@ -36,9 +38,25 @@
  */
 public class CajaHtmlSerializer implements HtmlSerializer {
   public String serialize(Document doc) {
+    StringBuilder s = new StringBuilder();
+    s.append(renderDocType(doc.getDoctype()));
+    s.append(renderFragment(doc));
+    return s.toString();
+  }
+
+  protected String renderFragment(Document doc) {
     StringWriter sw = HtmlSerialization.createWriter(doc);
     return Nodes.render(doc,
- new RenderContext(new Concatenator(sw, null)).asXml() ? MarkupRenderMode.XML : MarkupRenderMode.HTML
+            new RenderContext(new Concatenator(sw, null)).asXml() ?
+                MarkupRenderMode.XML : MarkupRenderMode.HTML
     );
   }
+
+  /**
+   * Return string rendering of docType
+   * Caja renderer defaults to standards mode
+   */
+  protected String renderDocType(DocumentType docType) {
+    return "<!DOCTYPE html>";
+  }
 }


Reply via email to