Reviewers: shindig.remailer_gmail.com,

Description:
@see http://issues.apache.org/jira/browse/SHINDIG-1267

Please review this at http://codereview.appspot.com/186253/show

Affected files:
  features/src/main/javascript/features/rpc/rpc.js
java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java


Index: java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java
===================================================================
--- java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java (revision 901509) +++ java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java (working copy)
@@ -21,6 +21,7 @@
import static org.apache.shindig.gadgets.render.RenderingGadgetRewriter.DEFAULT_CSS; import static org.apache.shindig.gadgets.render.RenderingGadgetRewriter.FEATURES_KEY; import static org.apache.shindig.gadgets.render.RenderingGadgetRewriter.INSERT_BASE_ELEMENT_KEY; +import static org.apache.shindig.gadgets.render.RenderingGadgetRewriter.IS_GADGET_BEACON;
 import static org.easymock.classextension.EasyMock.createMock;
 import static org.easymock.classextension.EasyMock.eq;
 import static org.easymock.classextension.EasyMock.expect;
@@ -198,6 +199,8 @@
assertTrue("Missing opening html tag", matcher.group(BEFORE_HEAD_GROUP).contains("<html>"));
     // TODO: reinstate test when non-tag-reordering parser is used.
// assertTrue("Custom head content is missing.", matcher.group(HEAD_GROUP).contains(head));
+    assertTrue("IsGadget beacon not included.",
+ matcher.group(HEAD_GROUP).contains("<script>" + IS_GADGET_BEACON + "</script>"));
     assertTrue("Forced javascript not included.",
         matcher.group(HEAD_GROUP).contains("<script src=\"/js/foo\">"));
assertFalse("Default styling was injected when a doctype was specified.", Index: java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java
===================================================================
--- java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java (revision 901509) +++ java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java (working copy)
@@ -90,6 +90,7 @@
       "a {color:#0000cc;}a:visited {color:#551a8b;}" +
       "a:active {color:#ff0000;}" +
       "body{margin: 0px;padding: 0px;background-color:white;}";
+  static final String IS_GADGET_BEACON = "window['__isgadget']=true;";
static final String INSERT_BASE_ELEMENT_KEY = "gadgets.insertBaseElement";
   static final String FEATURES_KEY = "gadgets.features";

@@ -162,6 +163,7 @@
       }

       injectBaseTag(gadget, head);
+      injectGadgetBeacon(gadget, head);
       injectFeatureLibraries(gadget, head);

       // This can be one script block.
@@ -215,6 +217,12 @@
     onloadScript.appendChild(bodyTag.getOwnerDocument().createTextNode(
         "gadgets.util.runOnLoadHandlers();"));
   }
+
+ protected void injectGadgetBeacon(Gadget gadget, Node headTag) throws GadgetException { + Element beaconNode = headTag.getOwnerDocument().createElement("script");
+    beaconNode.setTextContent(IS_GADGET_BEACON);
+    headTag.appendChild(beaconNode);
+  }

   /**
    * Injects javascript libraries needed to satisfy feature dependencies.
Index: features/src/main/javascript/features/rpc/rpc.js
===================================================================
--- features/src/main/javascript/features/rpc/rpc.js    (revision 901509)
+++ features/src/main/javascript/features/rpc/rpc.js    (working copy)
@@ -615,7 +615,7 @@
     if (targetId === '..') {
       // Gadget/IFRAME to container.
var rpctoken = opt_authtoken || params.rpctoken || params.ifpctok | | "";
-      if (gadgets.config) {
+      if (window['__isgadget'] === true) {
         setupContainerGadgetContext(rpctoken);
       } else {
         setupContainerGenericIframe(rpctoken, opt_receiverurl);


Reply via email to