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. */
