Author: etnu
Date: Fri Oct 31 19:39:52 2008
New Revision: 709623

URL: http://svn.apache.org/viewvc?rev=709623&view=rev
Log:
Made base tag injection behavior configurable, pending resolution of final 
decision for 0.9. See this thread for details:

http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/93552e45cff47bdc


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=709623&r1=709622&r2=709623&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
 Fri Oct 31 19:39:52 2008
@@ -93,6 +93,8 @@
       "a:active {color:#ff0000;}" +
       "body{margin: 0px;padding: 0px;background-color:white;}" +
       "</style>";
+  static final String INSERT_BASE_ELEMENT_KEY = "gadgets.insertBaseElement";
+  static final String FEATURES_KEY = "gadgets.features";
 
   private final MessageBundleFactory messageBundleFactory;
   private final ContainerConfig containerConfig;
@@ -141,12 +143,15 @@
   }
 
   private void injectBaseTag(Gadget gadget, GadgetContent content) {
-    Uri base = gadget.getSpec().getUrl();
-    View view = gadget.getCurrentView();
-    if (view != null && view.getHref() != null) {
-      base = view.getHref();
+    GadgetContext context = gadget.getContext();
+    if ("true".equals(containerConfig.get(context.getContainer(), 
INSERT_BASE_ELEMENT_KEY))) {
+      Uri base = gadget.getSpec().getUrl();
+      View view = gadget.getCurrentView();
+      if (view != null && view.getHref() != null) {
+        base = view.getHref();
+      }
+      content.appendHead("<base href='" + base + "'/>");
     }
-    content.appendHead("<base href='" + base + "'/>");
   }
 
   private void injectOnLoadHandlers(GadgetContent content) {
@@ -275,7 +280,7 @@
       throws GadgetException {
     GadgetContext context = gadget.getContext();
 
-    JSONObject features = 
containerConfig.getJsonObject(context.getContainer(), "gadgets.features");
+    JSONObject features = 
containerConfig.getJsonObject(context.getContainer(), FEATURES_KEY);
 
     try {
       // Discard what we don't care about.
@@ -335,7 +340,7 @@
            .appendHead(msgs)
            .appendHead(");");
   }
-  
+
   /**
    * Injects default values for user prefs into the gadget output.
    */

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=709623&r1=709622&r2=709623&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
 Fri Oct 31 19:39:52 2008
@@ -23,9 +23,12 @@
 import static 
org.apache.shindig.gadgets.render.RenderingContentRewriter.BODY_GROUP;
 import static 
org.apache.shindig.gadgets.render.RenderingContentRewriter.DEFAULT_HEAD_CONTENT;
 import static 
org.apache.shindig.gadgets.render.RenderingContentRewriter.DOCUMENT_SPLIT_PATTERN;
+import static 
org.apache.shindig.gadgets.render.RenderingContentRewriter.FEATURES_KEY;
 import static 
org.apache.shindig.gadgets.render.RenderingContentRewriter.HEAD_GROUP;
+import static 
org.apache.shindig.gadgets.render.RenderingContentRewriter.INSERT_BASE_ELEMENT_KEY;
 import static org.easymock.EasyMock.expect;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import org.apache.shindig.common.ContainerConfig;
@@ -383,7 +386,8 @@
 
     JSONObject conf = new JSONObject();
     conf.put("foo", "blah");
-    expect(config.getJsonObject("default", 
"gadgets.features")).andReturn(conf);
+    expect(config.getJsonObject(ContainerConfig.DEFAULT_CONTAINER, 
FEATURES_KEY))
+        .andReturn(conf);
     control.replay();
 
     String rewritten = rewrite(gadget, "");
@@ -418,7 +422,8 @@
     JSONObject conf = new JSONObject();
     conf.put("foo", "blah")
         .put("bar", "baz");
-    expect(config.getJsonObject("default", 
"gadgets.features")).andReturn(conf);
+    expect(config.getJsonObject(ContainerConfig.DEFAULT_CONTAINER, 
FEATURES_KEY))
+        .andReturn(conf);
     control.replay();
 
     String rewritten = rewrite(gadget, "");
@@ -444,7 +449,8 @@
     featureRegistry.addInline("foo", "");
     JSONObject conf = new JSONObject();
     conf.put("foo", "blah");
-    expect(config.getJsonObject("default", 
"gadgets.features")).andReturn(conf);
+    expect(config.getJsonObject(ContainerConfig.DEFAULT_CONTAINER, 
FEATURES_KEY))
+        .andReturn(conf);
     control.replay();
 
     String rewritten = rewrite(gadget, "");
@@ -486,7 +492,7 @@
     JSONObject json = new JSONObject(matcher.group(1));
     assertEquals("foo", json.get("one"));
     assertEquals("bar", json.get("two"));
-    
+
     Pattern defaultsPattern = Pattern.compile(
         "(?:.*)gadgets\\.Prefs\\.setDefaultPrefs_\\((.*)\\);(?:.*)", 
Pattern.DOTALL);
     Matcher defaultsMatcher = defaultsPattern.matcher(rewritten);
@@ -630,6 +636,9 @@
   public void baseElementInsertedWhenContentIsInline() throws Exception {
     Gadget gadget = makeDefaultGadget();
 
+    expect(config.get(ContainerConfig.DEFAULT_CONTAINER, 
INSERT_BASE_ELEMENT_KEY))
+        .andReturn("true");
+
     control.replay();
 
     String rewritten = rewrite(gadget, BODY_CONTENT);
@@ -647,6 +656,9 @@
     View fakeView = new View("foo", Arrays.asList(XmlUtil.parse(xml)), 
SPEC_URL);
     gadget.setCurrentView(fakeView);
 
+    expect(config.get(ContainerConfig.DEFAULT_CONTAINER, 
INSERT_BASE_ELEMENT_KEY))
+        .andReturn("true");
+
     control.replay();
 
     String rewritten = rewrite(gadget, BODY_CONTENT);
@@ -655,6 +667,19 @@
     assertEquals(viewUrl, base);
   }
 
+  @Test
+  public void baseElementNotInsertedWhenConfigDoesNotAllowIt() throws 
Exception {
+    Gadget gadget = makeDefaultGadget();
+
+    expect(config.get(ContainerConfig.DEFAULT_CONTAINER, 
INSERT_BASE_ELEMENT_KEY))
+        .andReturn("false");
+
+    control.replay();
+
+    String rewritten = rewrite(gadget, BODY_CONTENT);
+    assertFalse("Base element injected incorrectly.", 
rewritten.contains("<base"));
+  }
+
   /**
    * Simple message bundle factory -- only honors inline bundles.
    */


Reply via email to