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>";
+ }
}