You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by et...@apache.org on 2008/02/26 04:19:51 UTC

svn commit: r631075 - in /incubator/shindig/trunk: features/rpc/rpc.js java/gadgets/pom.xml javascript/container/gadgets.js

Author: etnu
Date: Mon Feb 25 19:19:50 2008
New Revision: 631075

URL: http://svn.apache.org/viewvc?rev=631075&view=rev
Log:
Committing SHINDIG-93.
Fixing pom.xml to produce compressed javascript in the right location again.

Modified:
    incubator/shindig/trunk/features/rpc/rpc.js
    incubator/shindig/trunk/java/gadgets/pom.xml
    incubator/shindig/trunk/javascript/container/gadgets.js

Modified: incubator/shindig/trunk/features/rpc/rpc.js
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/features/rpc/rpc.js?rev=631075&r1=631074&r2=631075&view=diff
==============================================================================
--- incubator/shindig/trunk/features/rpc/rpc.js (original)
+++ incubator/shindig/trunk/features/rpc/rpc.js Mon Feb 25 19:19:50 2008
@@ -33,9 +33,13 @@
   var iframePool = [];
   var relayUrl = {};
   var useLegacyProtocol = {};
+  var authToken = {};
   var callId = 0;
   var callbacks = {};
-  var parentUrl = gadgets.util.getUrlParameters().parent || '';
+
+  var params = gadgets.util.getUrlParameters();
+  var parentUrl = params.parent || '';
+  authToken['..'] = params.rpctoken || params.ifpctok || params.st;
 
   // Pick the most efficient RPC relay mechanism
   var relayChannel = typeof document.postMessage === 'function' ? 'dpm' :
@@ -85,6 +89,13 @@
   function process(rpc) {
     if (rpc && typeof rpc.s === 'string' && typeof rpc.f === 'string' &&
         rpc.a instanceof Array) {
+      // Validate auth token.
+      if (authToken[rpc.f]) {
+        // We allow type coercion here because all the url params are strings.
+        if (authToken[rpc.f] != rpc.t) {
+          throw new Error("Invalid auth token.");
+        }
+      }
       var result = (services[rpc.s] || services['']).apply(rpc, rpc.a);
       if (rpc.c) {
         gadgets.rpc.call(rpc.f, '__cb', null, rpc.c, result);
@@ -229,7 +240,8 @@
         s: serviceName,
         f: from,
         c: callback ? callId : 0,
-        a: Array.prototype.slice.call(arguments, 3)
+        a: Array.prototype.slice.call(arguments, 3),
+        t: authToken[targetId]
       });
 
       switch (relayChannel) {
@@ -277,11 +289,26 @@
      * Sets the relay URL of a target frame.
      * @param {String} targetId Name of the target frame.
      * @param {String} relayUrl Full relay URL of the target frame.
+     * @param {Boolean} opt_useLegacy True if this relay needs the legacy IFPC
+     *     wire format.
      *
      * @member gadgets.rpc
      */
-    setRelayUrl: function(targetId, relayUrl) {
+    setRelayUrl: function(targetId, relayUrl, opt_useLegacy) {
       relayUrl[targetId] = relayUrl;
+      useLegacyProtocol[targetId] = !!opt_useLegacy;
+    },
+
+    /**
+     * Sets the auth token of a target frame.
+     * @param {String} targetId Name of the target frame.
+     * @param {String} token The authentication token to use for all
+     *     calls to or from this target id.
+     *
+     * @member gadgets.rpc
+     */
+    setAuthToken: function(targetId, token) {
+      authToken[targetId] = token;
     },
 
     /**

Modified: incubator/shindig/trunk/java/gadgets/pom.xml
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/pom.xml?rev=631075&r1=631074&r2=631075&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/pom.xml (original)
+++ incubator/shindig/trunk/java/gadgets/pom.xml Mon Feb 25 19:19:50 2008
@@ -123,7 +123,7 @@
         <!-- <artifactId>maven-javascript-plugin</artifactId> -->
         <groupId>net.sf.alchim</groupId>
         <artifactId>yuicompressor-maven-plugin</artifactId>
-        <version>0.6</version>
+        <version>0.6.2</version>
         <executions>
           <execution>
             <goals>

Modified: incubator/shindig/trunk/javascript/container/gadgets.js
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/container/gadgets.js?rev=631075&r1=631074&r2=631075&view=diff
==============================================================================
--- incubator/shindig/trunk/javascript/container/gadgets.js (original)
+++ incubator/shindig/trunk/javascript/container/gadgets.js Mon Feb 25 19:19:50 2008
@@ -452,6 +452,8 @@
     'gadgets-gadget-user-prefs-dialog-action-bar';
 gadgets.IfrGadget.prototype.cssClassTitleButton = 'gadgets-gadget-title-button';
 gadgets.IfrGadget.prototype.cssClassGadgetContent = 'gadgets-gadget-content';
+gadgets.IfrGadget.prototype.rpcToken = (0xFFFFFFFF * Math.random()) | 0;
+gadgets.IfrGadget.prototype.rpcRelay = 'files/rpc_relay.html';
 
 gadgets.IfrGadget.prototype.getTitleBarContent = function(continuation) {
   continuation('<div class="' + this.cssClassTitleBar + '"><span id="' +
@@ -480,6 +482,8 @@
 
 gadgets.IfrGadget.prototype.getMainContent = function(continuation) {
   var iframeId = this.getIframeId();
+  gadgets.rpc.setRelayUrl(iframeId, this.serverBase_ + this.rpcRelay);
+  gadgets.rpc.setAuthToken(iframeId, this.rpcToken);
   continuation('<div class="' + this.cssClassGadgetContent + '"><iframe id="' +
       iframeId + '" name="' + iframeId + '" class="' + this.cssClassGadget +
       '" src="' + this.getIframeUrl() +
@@ -497,7 +501,7 @@
 gadgets.IfrGadget.prototype.getIframeUrl = function() {
   return this.serverBase_ + 'ifr?url=' +
       encodeURIComponent(this.specUrl) + '&synd=' + this.SYND + '&mid=' +
-      this.id + this.getUserPrefsParams();
+      this.id + "&rpctoken=" + this.rpcToken + this.getUserPrefsParams();
 };
 
 gadgets.IfrGadget.prototype.getUserPrefsParams = function() {



Re: svn commit: r631075 - in /incubator/shindig/trunk: features/rpc/rpc.js java/gadgets/pom.xml javascript/container/gadgets.js

Posted by Cassie <do...@apache.org>.
The easiest way to fix this crazy bug was to re-upgrade our compressor. I
committed a change to do that, so things are working again.


On Wed, Feb 27, 2008 at 2:44 PM, Cassie <do...@apache.org> wrote:

> More specifically it looks like the version 0.6.2 breaks things... moving
> back to 0.6 restores the js.
>
> - Cassie
>
>
>
> On Wed, Feb 27, 2008 at 2:40 PM, Cassie <do...@google.com> wrote:
>
> > This change is breaking the samplecontainer javascript, I think it
> > specifically has to do with the caja-compatible-jquery.js file.
> > I will try to debug but do you think you can take a look?
> >
> > - Cassie
> >
> >
> > On Mon, Feb 25, 2008 at 7:19 PM, <et...@apache.org> wrote:
> >
> > > Author: etnu
> > > Date: Mon Feb 25 19:19:50 2008
> > > New Revision: 631075
> > >
> > > URL: http://svn.apache.org/viewvc?rev=631075&view=rev
> > > Log:
> > > Committing SHINDIG-93.
> > > Fixing pom.xml to produce compressed javascript in the right location
> > > again.
> > >
> > > Modified:
> > >    incubator/shindig/trunk/features/rpc/rpc.js
> > >    incubator/shindig/trunk/java/gadgets/pom.xml
> > >    incubator/shindig/trunk/javascript/container/gadgets.js
> > >
> > > Modified: incubator/shindig/trunk/features/rpc/rpc.js
> > > URL:
> > > http://svn.apache.org/viewvc/incubator/shindig/trunk/features/rpc/rpc.js?rev=631075&r1=631074&r2=631075&view=diff
> > >
> > > ==============================================================================
> > > --- incubator/shindig/trunk/features/rpc/rpc.js (original)
> > > +++ incubator/shindig/trunk/features/rpc/rpc.js Mon Feb 25 19:19:50
> > > 2008
> > > @@ -33,9 +33,13 @@
> > >   var iframePool = [];
> > >   var relayUrl = {};
> > >   var useLegacyProtocol = {};
> > > +  var authToken = {};
> > >   var callId = 0;
> > >   var callbacks = {};
> > > -  var parentUrl = gadgets.util.getUrlParameters().parent || '';
> > > +
> > > +  var params = gadgets.util.getUrlParameters();
> > > +  var parentUrl = params.parent || '';
> > > +  authToken['..'] = params.rpctoken || params.ifpctok || params.st;
> > >
> > >   // Pick the most efficient RPC relay mechanism
> > >   var relayChannel = typeof document.postMessage === 'function' ?
> > > 'dpm' :
> > > @@ -85,6 +89,13 @@
> > >   function process(rpc) {
> > >     if (rpc && typeof rpc.s === 'string' && typeof rpc.f === 'string'
> > > &&
> > >         rpc.a instanceof Array) {
> > > +      // Validate auth token.
> > > +      if (authToken[rpc.f]) {
> > > +        // We allow type coercion here because all the url params are
> > > strings.
> > > +        if (authToken[rpc.f] != rpc.t) {
> > > +          throw new Error("Invalid auth token.");
> > > +        }
> > > +      }
> > >       var result = (services[rpc.s] || services['']).apply(rpc,
> > > rpc.a);
> > >       if (rpc.c) {
> > >         gadgets.rpc.call(rpc.f, '__cb', null, rpc.c, result);
> > > @@ -229,7 +240,8 @@
> > >         s: serviceName,
> > >         f: from,
> > >         c: callback ? callId : 0,
> > > -        a: Array.prototype.slice.call(arguments, 3)
> > > +        a: Array.prototype.slice.call(arguments, 3),
> > > +        t: authToken[targetId]
> > >       });
> > >
> > >       switch (relayChannel) {
> > > @@ -277,11 +289,26 @@
> > >      * Sets the relay URL of a target frame.
> > >      * @param {String} targetId Name of the target frame.
> > >      * @param {String} relayUrl Full relay URL of the target frame.
> > > +     * @param {Boolean} opt_useLegacy True if this relay needs the
> > > legacy IFPC
> > > +     *     wire format.
> > >      *
> > >      * @member gadgets.rpc
> > >      */
> > > -    setRelayUrl: function(targetId, relayUrl) {
> > > +    setRelayUrl: function(targetId, relayUrl, opt_useLegacy) {
> > >       relayUrl[targetId] = relayUrl;
> > > +      useLegacyProtocol[targetId] = !!opt_useLegacy;
> > > +    },
> > > +
> > > +    /**
> > > +     * Sets the auth token of a target frame.
> > > +     * @param {String} targetId Name of the target frame.
> > > +     * @param {String} token The authentication token to use for all
> > > +     *     calls to or from this target id.
> > > +     *
> > > +     * @member gadgets.rpc
> > > +     */
> > > +    setAuthToken: function(targetId, token) {
> > > +      authToken[targetId] = token;
> > >     },
> > >
> > >     /**
> > >
> > > Modified: incubator/shindig/trunk/java/gadgets/pom.xml
> > > URL:
> > > http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/pom.xml?rev=631075&r1=631074&r2=631075&view=diff
> > >
> > > ==============================================================================
> > > --- incubator/shindig/trunk/java/gadgets/pom.xml (original)
> > > +++ incubator/shindig/trunk/java/gadgets/pom.xml Mon Feb 25 19:19:50
> > > 2008
> > > @@ -123,7 +123,7 @@
> > >         <!-- <artifactId>maven-javascript-plugin</artifactId> -->
> > >         <groupId>net.sf.alchim</groupId>
> > >         <artifactId>yuicompressor-maven-plugin</artifactId>
> > > -        <version>0.6</version>
> > > +        <version>0.6.2</version>
> > >         <executions>
> > >           <execution>
> > >             <goals>
> > >
> > > Modified: incubator/shindig/trunk/javascript/container/gadgets.js
> > > URL:
> > > http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/container/gadgets.js?rev=631075&r1=631074&r2=631075&view=diff
> > >
> > > ==============================================================================
> > > --- incubator/shindig/trunk/javascript/container/gadgets.js (original)
> > > +++ incubator/shindig/trunk/javascript/container/gadgets.js Mon Feb 25
> > > 19:19:50 2008
> > > @@ -452,6 +452,8 @@
> > >     'gadgets-gadget-user-prefs-dialog-action-bar';
> > >  gadgets.IfrGadget.prototype.cssClassTitleButton =
> > > 'gadgets-gadget-title-button';
> > >  gadgets.IfrGadget.prototype.cssClassGadgetContent =
> > > 'gadgets-gadget-content';
> > > +gadgets.IfrGadget.prototype.rpcToken = (0xFFFFFFFF * Math.random()) |
> > > 0;
> > > +gadgets.IfrGadget.prototype.rpcRelay = 'files/rpc_relay.html';
> > >
> > >  gadgets.IfrGadget.prototype.getTitleBarContent =
> > > function(continuation) {
> > >   continuation('<div class="' + this.cssClassTitleBar + '"><span id="'
> > > +
> > > @@ -480,6 +482,8 @@
> > >
> > >  gadgets.IfrGadget.prototype.getMainContent = function(continuation) {
> > >   var iframeId = this.getIframeId();
> > > +  gadgets.rpc.setRelayUrl(iframeId, this.serverBase_ +
> > > this.rpcRelay);
> > > +  gadgets.rpc.setAuthToken(iframeId, this.rpcToken);
> > >   continuation('<div class="' + this.cssClassGadgetContent +
> > > '"><iframe id="' +
> > >       iframeId + '" name="' + iframeId + '" class="' +
> > > this.cssClassGadget +
> > >       '" src="' + this.getIframeUrl() +
> > > @@ -497,7 +501,7 @@
> > >  gadgets.IfrGadget.prototype.getIframeUrl = function() {
> > >   return this.serverBase_ + 'ifr?url=' +
> > >       encodeURIComponent(this.specUrl) + '&synd=' + this.SYND +
> > > '&mid=' +
> > > -      this.id + this.getUserPrefsParams();
> > > +      this.id + "&rpctoken=" + this.rpcToken +
> > > this.getUserPrefsParams();
> > >  };
> > >
> > >  gadgets.IfrGadget.prototype.getUserPrefsParams = function() {
> > >
> > >
> > >
> >
>

Re: svn commit: r631075 - in /incubator/shindig/trunk: features/rpc/rpc.js java/gadgets/pom.xml javascript/container/gadgets.js

Posted by Cassie <do...@apache.org>.
More specifically it looks like the version 0.6.2 breaks things... moving
back to 0.6 restores the js.

- Cassie


On Wed, Feb 27, 2008 at 2:40 PM, Cassie <do...@google.com> wrote:

> This change is breaking the samplecontainer javascript, I think it
> specifically has to do with the caja-compatible-jquery.js file.
> I will try to debug but do you think you can take a look?
>
> - Cassie
>
>
> On Mon, Feb 25, 2008 at 7:19 PM, <et...@apache.org> wrote:
>
> > Author: etnu
> > Date: Mon Feb 25 19:19:50 2008
> > New Revision: 631075
> >
> > URL: http://svn.apache.org/viewvc?rev=631075&view=rev
> > Log:
> > Committing SHINDIG-93.
> > Fixing pom.xml to produce compressed javascript in the right location
> > again.
> >
> > Modified:
> >    incubator/shindig/trunk/features/rpc/rpc.js
> >    incubator/shindig/trunk/java/gadgets/pom.xml
> >    incubator/shindig/trunk/javascript/container/gadgets.js
> >
> > Modified: incubator/shindig/trunk/features/rpc/rpc.js
> > URL:
> > http://svn.apache.org/viewvc/incubator/shindig/trunk/features/rpc/rpc.js?rev=631075&r1=631074&r2=631075&view=diff
> >
> > ==============================================================================
> > --- incubator/shindig/trunk/features/rpc/rpc.js (original)
> > +++ incubator/shindig/trunk/features/rpc/rpc.js Mon Feb 25 19:19:50 2008
> > @@ -33,9 +33,13 @@
> >   var iframePool = [];
> >   var relayUrl = {};
> >   var useLegacyProtocol = {};
> > +  var authToken = {};
> >   var callId = 0;
> >   var callbacks = {};
> > -  var parentUrl = gadgets.util.getUrlParameters().parent || '';
> > +
> > +  var params = gadgets.util.getUrlParameters();
> > +  var parentUrl = params.parent || '';
> > +  authToken['..'] = params.rpctoken || params.ifpctok || params.st;
> >
> >   // Pick the most efficient RPC relay mechanism
> >   var relayChannel = typeof document.postMessage === 'function' ? 'dpm'
> > :
> > @@ -85,6 +89,13 @@
> >   function process(rpc) {
> >     if (rpc && typeof rpc.s === 'string' && typeof rpc.f === 'string' &&
> >         rpc.a instanceof Array) {
> > +      // Validate auth token.
> > +      if (authToken[rpc.f]) {
> > +        // We allow type coercion here because all the url params are
> > strings.
> > +        if (authToken[rpc.f] != rpc.t) {
> > +          throw new Error("Invalid auth token.");
> > +        }
> > +      }
> >       var result = (services[rpc.s] || services['']).apply(rpc, rpc.a);
> >       if (rpc.c) {
> >         gadgets.rpc.call(rpc.f, '__cb', null, rpc.c, result);
> > @@ -229,7 +240,8 @@
> >         s: serviceName,
> >         f: from,
> >         c: callback ? callId : 0,
> > -        a: Array.prototype.slice.call(arguments, 3)
> > +        a: Array.prototype.slice.call(arguments, 3),
> > +        t: authToken[targetId]
> >       });
> >
> >       switch (relayChannel) {
> > @@ -277,11 +289,26 @@
> >      * Sets the relay URL of a target frame.
> >      * @param {String} targetId Name of the target frame.
> >      * @param {String} relayUrl Full relay URL of the target frame.
> > +     * @param {Boolean} opt_useLegacy True if this relay needs the
> > legacy IFPC
> > +     *     wire format.
> >      *
> >      * @member gadgets.rpc
> >      */
> > -    setRelayUrl: function(targetId, relayUrl) {
> > +    setRelayUrl: function(targetId, relayUrl, opt_useLegacy) {
> >       relayUrl[targetId] = relayUrl;
> > +      useLegacyProtocol[targetId] = !!opt_useLegacy;
> > +    },
> > +
> > +    /**
> > +     * Sets the auth token of a target frame.
> > +     * @param {String} targetId Name of the target frame.
> > +     * @param {String} token The authentication token to use for all
> > +     *     calls to or from this target id.
> > +     *
> > +     * @member gadgets.rpc
> > +     */
> > +    setAuthToken: function(targetId, token) {
> > +      authToken[targetId] = token;
> >     },
> >
> >     /**
> >
> > Modified: incubator/shindig/trunk/java/gadgets/pom.xml
> > URL:
> > http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/pom.xml?rev=631075&r1=631074&r2=631075&view=diff
> >
> > ==============================================================================
> > --- incubator/shindig/trunk/java/gadgets/pom.xml (original)
> > +++ incubator/shindig/trunk/java/gadgets/pom.xml Mon Feb 25 19:19:50
> > 2008
> > @@ -123,7 +123,7 @@
> >         <!-- <artifactId>maven-javascript-plugin</artifactId> -->
> >         <groupId>net.sf.alchim</groupId>
> >         <artifactId>yuicompressor-maven-plugin</artifactId>
> > -        <version>0.6</version>
> > +        <version>0.6.2</version>
> >         <executions>
> >           <execution>
> >             <goals>
> >
> > Modified: incubator/shindig/trunk/javascript/container/gadgets.js
> > URL:
> > http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/container/gadgets.js?rev=631075&r1=631074&r2=631075&view=diff
> >
> > ==============================================================================
> > --- incubator/shindig/trunk/javascript/container/gadgets.js (original)
> > +++ incubator/shindig/trunk/javascript/container/gadgets.js Mon Feb 25
> > 19:19:50 2008
> > @@ -452,6 +452,8 @@
> >     'gadgets-gadget-user-prefs-dialog-action-bar';
> >  gadgets.IfrGadget.prototype.cssClassTitleButton =
> > 'gadgets-gadget-title-button';
> >  gadgets.IfrGadget.prototype.cssClassGadgetContent =
> > 'gadgets-gadget-content';
> > +gadgets.IfrGadget.prototype.rpcToken = (0xFFFFFFFF * Math.random()) |
> > 0;
> > +gadgets.IfrGadget.prototype.rpcRelay = 'files/rpc_relay.html';
> >
> >  gadgets.IfrGadget.prototype.getTitleBarContent = function(continuation)
> > {
> >   continuation('<div class="' + this.cssClassTitleBar + '"><span id="' +
> > @@ -480,6 +482,8 @@
> >
> >  gadgets.IfrGadget.prototype.getMainContent = function(continuation) {
> >   var iframeId = this.getIframeId();
> > +  gadgets.rpc.setRelayUrl(iframeId, this.serverBase_ + this.rpcRelay);
> > +  gadgets.rpc.setAuthToken(iframeId, this.rpcToken);
> >   continuation('<div class="' + this.cssClassGadgetContent + '"><iframe
> > id="' +
> >       iframeId + '" name="' + iframeId + '" class="' +
> > this.cssClassGadget +
> >       '" src="' + this.getIframeUrl() +
> > @@ -497,7 +501,7 @@
> >  gadgets.IfrGadget.prototype.getIframeUrl = function() {
> >   return this.serverBase_ + 'ifr?url=' +
> >       encodeURIComponent(this.specUrl) + '&synd=' + this.SYND + '&mid='
> > +
> > -      this.id + this.getUserPrefsParams();
> > +      this.id + "&rpctoken=" + this.rpcToken +
> > this.getUserPrefsParams();
> >  };
> >
> >  gadgets.IfrGadget.prototype.getUserPrefsParams = function() {
> >
> >
> >
>

Re: svn commit: r631075 - in /incubator/shindig/trunk: features/rpc/rpc.js java/gadgets/pom.xml javascript/container/gadgets.js

Posted by Cassie <do...@google.com>.
This change is breaking the samplecontainer javascript, I think it
specifically has to do with the caja-compatible-jquery.js file.
I will try to debug but do you think you can take a look?

- Cassie

On Mon, Feb 25, 2008 at 7:19 PM, <et...@apache.org> wrote:

> Author: etnu
> Date: Mon Feb 25 19:19:50 2008
> New Revision: 631075
>
> URL: http://svn.apache.org/viewvc?rev=631075&view=rev
> Log:
> Committing SHINDIG-93.
> Fixing pom.xml to produce compressed javascript in the right location
> again.
>
> Modified:
>    incubator/shindig/trunk/features/rpc/rpc.js
>    incubator/shindig/trunk/java/gadgets/pom.xml
>    incubator/shindig/trunk/javascript/container/gadgets.js
>
> Modified: incubator/shindig/trunk/features/rpc/rpc.js
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/features/rpc/rpc.js?rev=631075&r1=631074&r2=631075&view=diff
>
> ==============================================================================
> --- incubator/shindig/trunk/features/rpc/rpc.js (original)
> +++ incubator/shindig/trunk/features/rpc/rpc.js Mon Feb 25 19:19:50 2008
> @@ -33,9 +33,13 @@
>   var iframePool = [];
>   var relayUrl = {};
>   var useLegacyProtocol = {};
> +  var authToken = {};
>   var callId = 0;
>   var callbacks = {};
> -  var parentUrl = gadgets.util.getUrlParameters().parent || '';
> +
> +  var params = gadgets.util.getUrlParameters();
> +  var parentUrl = params.parent || '';
> +  authToken['..'] = params.rpctoken || params.ifpctok || params.st;
>
>   // Pick the most efficient RPC relay mechanism
>   var relayChannel = typeof document.postMessage === 'function' ? 'dpm' :
> @@ -85,6 +89,13 @@
>   function process(rpc) {
>     if (rpc && typeof rpc.s === 'string' && typeof rpc.f === 'string' &&
>         rpc.a instanceof Array) {
> +      // Validate auth token.
> +      if (authToken[rpc.f]) {
> +        // We allow type coercion here because all the url params are
> strings.
> +        if (authToken[rpc.f] != rpc.t) {
> +          throw new Error("Invalid auth token.");
> +        }
> +      }
>       var result = (services[rpc.s] || services['']).apply(rpc, rpc.a);
>       if (rpc.c) {
>         gadgets.rpc.call(rpc.f, '__cb', null, rpc.c, result);
> @@ -229,7 +240,8 @@
>         s: serviceName,
>         f: from,
>         c: callback ? callId : 0,
> -        a: Array.prototype.slice.call(arguments, 3)
> +        a: Array.prototype.slice.call(arguments, 3),
> +        t: authToken[targetId]
>       });
>
>       switch (relayChannel) {
> @@ -277,11 +289,26 @@
>      * Sets the relay URL of a target frame.
>      * @param {String} targetId Name of the target frame.
>      * @param {String} relayUrl Full relay URL of the target frame.
> +     * @param {Boolean} opt_useLegacy True if this relay needs the legacy
> IFPC
> +     *     wire format.
>      *
>      * @member gadgets.rpc
>      */
> -    setRelayUrl: function(targetId, relayUrl) {
> +    setRelayUrl: function(targetId, relayUrl, opt_useLegacy) {
>       relayUrl[targetId] = relayUrl;
> +      useLegacyProtocol[targetId] = !!opt_useLegacy;
> +    },
> +
> +    /**
> +     * Sets the auth token of a target frame.
> +     * @param {String} targetId Name of the target frame.
> +     * @param {String} token The authentication token to use for all
> +     *     calls to or from this target id.
> +     *
> +     * @member gadgets.rpc
> +     */
> +    setAuthToken: function(targetId, token) {
> +      authToken[targetId] = token;
>     },
>
>     /**
>
> Modified: incubator/shindig/trunk/java/gadgets/pom.xml
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/pom.xml?rev=631075&r1=631074&r2=631075&view=diff
>
> ==============================================================================
> --- incubator/shindig/trunk/java/gadgets/pom.xml (original)
> +++ incubator/shindig/trunk/java/gadgets/pom.xml Mon Feb 25 19:19:50 2008
> @@ -123,7 +123,7 @@
>         <!-- <artifactId>maven-javascript-plugin</artifactId> -->
>         <groupId>net.sf.alchim</groupId>
>         <artifactId>yuicompressor-maven-plugin</artifactId>
> -        <version>0.6</version>
> +        <version>0.6.2</version>
>         <executions>
>           <execution>
>             <goals>
>
> Modified: incubator/shindig/trunk/javascript/container/gadgets.js
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/container/gadgets.js?rev=631075&r1=631074&r2=631075&view=diff
>
> ==============================================================================
> --- incubator/shindig/trunk/javascript/container/gadgets.js (original)
> +++ incubator/shindig/trunk/javascript/container/gadgets.js Mon Feb 25
> 19:19:50 2008
> @@ -452,6 +452,8 @@
>     'gadgets-gadget-user-prefs-dialog-action-bar';
>  gadgets.IfrGadget.prototype.cssClassTitleButton =
> 'gadgets-gadget-title-button';
>  gadgets.IfrGadget.prototype.cssClassGadgetContent =
> 'gadgets-gadget-content';
> +gadgets.IfrGadget.prototype.rpcToken = (0xFFFFFFFF * Math.random()) | 0;
> +gadgets.IfrGadget.prototype.rpcRelay = 'files/rpc_relay.html';
>
>  gadgets.IfrGadget.prototype.getTitleBarContent = function(continuation) {
>   continuation('<div class="' + this.cssClassTitleBar + '"><span id="' +
> @@ -480,6 +482,8 @@
>
>  gadgets.IfrGadget.prototype.getMainContent = function(continuation) {
>   var iframeId = this.getIframeId();
> +  gadgets.rpc.setRelayUrl(iframeId, this.serverBase_ + this.rpcRelay);
> +  gadgets.rpc.setAuthToken(iframeId, this.rpcToken);
>   continuation('<div class="' + this.cssClassGadgetContent + '"><iframe
> id="' +
>       iframeId + '" name="' + iframeId + '" class="' + this.cssClassGadget
> +
>       '" src="' + this.getIframeUrl() +
> @@ -497,7 +501,7 @@
>  gadgets.IfrGadget.prototype.getIframeUrl = function() {
>   return this.serverBase_ + 'ifr?url=' +
>       encodeURIComponent(this.specUrl) + '&synd=' + this.SYND + '&mid=' +
> -      this.id + this.getUserPrefsParams();
> +      this.id + "&rpctoken=" + this.rpcToken + this.getUserPrefsParams();
>  };
>
>  gadgets.IfrGadget.prototype.getUserPrefsParams = function() {
>
>
>