The gadget loaded by Shindig doesn't contain proper title element
SHINDIG-1978
Committed for Jiaqing Guo
git-svn-id: https://svn.apache.org/repos/asf/shindig/trunk@1634227 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java b/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java
index c66394f..e36f8ef 100644
--- a/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java
+++ b/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java
@@ -61,6 +61,7 @@
import org.apache.shindig.gadgets.rewrite.RewritingException;
import org.apache.shindig.gadgets.spec.Feature;
import org.apache.shindig.gadgets.spec.MessageBundle;
+import org.apache.shindig.gadgets.spec.ModulePrefs;
import org.apache.shindig.gadgets.spec.UserPref;
import org.apache.shindig.gadgets.spec.View;
import org.apache.shindig.gadgets.templates.MessageELResolver;
@@ -237,9 +238,19 @@
processChildNodes(document);
Element head = (Element) DomUtil.getFirstNamedChildNode(document.getDocumentElement(), "head");
+ Element title = document.createElement("title");
+ ModulePrefs mps = gadget.getSpec().getModulePrefs();
+ String titleValue = "default title";
+ if (mps != null && mps.getTitle() != null && !mps.getTitle().isEmpty()){
+ titleValue = mps.getTitle();
+ }
+ title.appendChild(title.getOwnerDocument().createTextNode(titleValue));
+
// Insert new content before any of the existing children of the head element
Node firstHeadChild = head.getFirstChild();
+ head.insertBefore(title, firstHeadChild);
+
Element injectedStyle = document.createElement("style");
injectedStyle.setAttribute("type", "text/css");
head.insertBefore(injectedStyle, firstHeadChild);
diff --git a/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java b/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java
index 69bc12a..d2c7169 100644
--- a/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java
+++ b/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java
@@ -177,6 +177,11 @@
return makeGadgetWithSpec(defaultXml);
}
+ private Gadget makeDefaultOpenSocial2GadgetWithTitle(boolean useQuirks, String title) throws GadgetException {
+ String defaultXml = "<Module specificationVersion='2' ><ModulePrefs " + (useQuirks ? "doctype='quirksmode'" : "") +" title='" + title + "'/><Content type='html'/></Module>";
+ return makeGadgetWithSpec(defaultXml);
+ }
+
private String rewrite(Gadget gadget, String content) throws Exception {
MutableContent mc = new MutableContent(parser, content);
rewriter.rewrite(gadget, mc);
@@ -226,6 +231,34 @@
}
@Test
+ public void createDefaultTitleElement() throws Exception{
+ Gadget gadget = makeDefaultOpenSocial2Gadget(false);
+ String body = "hello, world.";
+ String doc = new StringBuilder()
+ .append("<html><head>")
+ .append("</head><body>")
+ .append(body)
+ .append("</body></html>")
+ .toString();
+ String rewritten = rewrite(gadget, doc);
+ assertTrue(rewritten.contains("<title>default title</title>"));
+ }
+
+ @Test
+ public void createSpecifiedTitleElement() throws Exception{
+ Gadget gadget = makeDefaultOpenSocial2GadgetWithTitle(false, "Here is title");
+ String body = "hello, world.";
+ String doc = new StringBuilder()
+ .append("<html><head>")
+ .append("</head><body>")
+ .append(body)
+ .append("</body></html>")
+ .toString();
+ String rewritten = rewrite(gadget, doc);
+ assertTrue(rewritten.contains("<title>Here is title</title>"));
+ }
+
+ @Test
public void quirksmodeInOS2() throws Exception{
Gadget gadget = makeDefaultOpenSocial2Gadget(true);
String body = "hello, world.";
diff --git a/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java b/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java
index 834c160..f9b6e9f 100644
--- a/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java
+++ b/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java
@@ -215,7 +215,10 @@
@Test
public void testPipelining() throws Exception {
HtmlPage page = executePageTest("pipeliningTest", null);
- JSONArray array = new JSONArray(page.asText());
+ String text = page.asText();
+ String title = page.getTitleText();
+ assertEquals("EndToEndTest", title);
+ JSONArray array = new JSONArray(text.substring(title.length(), text.length()));
assertEquals(3, array.length());
Map<String, JSONObject> jsonObjects = Maps.newHashMap();
for (int i = 0; i < array.length(); i++) {