Author: etnu
Date: Wed Oct 8 12:03:08 2008
New Revision: 702968
URL: http://svn.apache.org/viewvc?rev=702968&view=rev
Log:
Ensured that our code is always injected before user's code to avoid breaking
gadgets that have code in the head of the document that depends on injected
javascript.
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingContentRewriterTest.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java?rev=702968&r1=702967&r2=702968&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingContentRewriter.java
Wed Oct 8 12:03:08 2008
@@ -370,10 +370,10 @@
if (matcher.matches()) {
GadgetContent content = new GadgetContent();
content.appendHead(matcher.group(BEFORE_HEAD_GROUP))
- .appendHead("<head>")
- .appendHead(matcher.group(HEAD_GROUP));
+ .appendHead("<head>");
- content.appendBody("</head>")
+ content.appendBody(matcher.group(HEAD_GROUP))
+ .appendBody("</head>")
.appendBody(createBodyTag(gadget,
matcher.group(BODY_ATTRIBUTES_GROUP)))
.appendBody(matcher.group(BODY_GROUP));
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingContentRewriterTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingContentRewriterTest.java?rev=702968&r1=702967&r2=702968&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingContentRewriterTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingContentRewriterTest.java
Wed Oct 8 12:03:08 2008
@@ -302,6 +302,28 @@
}
@Test
+ public void featuresInjectedBeforeExistingScript() throws Exception {
+ Gadget gadget = makeDefaultGadget();
+ control.replay();
+
+ String rewritten = rewrite(gadget,
+ "<html><head><script
src='foo.js'></script></head><body>hello</body></html>");
+
+ Matcher matcher = DOCUMENT_SPLIT_PATTERN.matcher(rewritten);
+ assertTrue("Output is not valid HTML.", matcher.matches());
+
+ String headContent = matcher.group(HEAD_GROUP);
+
+ // Locate user script.
+ int userPosition = headContent.indexOf("<script src='foo.js'></script>");
+
+ // Anything else here, we added.
+ int ourPosition = headContent.indexOf("<script>");
+
+ assertTrue("Injected script must come before user script.", ourPosition <
userPosition);
+ }
+
+ @Test
public void urlFeaturesForcedExternal() throws Exception {
String gadgetXml =
"<Module><ModulePrefs title=''>" +