Author: johnh
Date: Thu Apr 28 02:49:15 2011
New Revision: 1097310

URL: http://svn.apache.org/viewvc?rev=1097310&view=rev
Log:
Add option to pass referrer to full referrer to requestor. Behavior disabled by 
default -- must be opted-in.


Modified:
    shindig/trunk/features/src/main/javascript/features/rpc/rpc.js

Modified: shindig/trunk/features/src/main/javascript/features/rpc/rpc.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/rpc/rpc.js?rev=1097310&r1=1097309&r2=1097310&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/rpc/rpc.js (original)
+++ shindig/trunk/features/src/main/javascript/features/rpc/rpc.js Thu Apr 28 
02:49:15 2011
@@ -122,6 +122,7 @@ if (!window['gadgets']['rpc']) { // make
     var params = {};
     var receiverTx = {};
     var earlyRpcQueue = {};
+    var passReferrer = false;
 
     // isGadget =~ isChild for the purposes of rpc (used only in setup).
     var isChild = (window.top !== window.self);
@@ -319,7 +320,7 @@ if (!window['gadgets']['rpc']) { // make
         if (opt_sender) {
           var origin = getOrigin(opt_sender);
           rpc[RPC_KEY_ORIGIN] = opt_sender;
-          var referrer = document.referrer;
+          var referrer = rpc['r'] || document.referrer;
           if (!referrer || getOrigin(referrer) != origin) {
             // Transports send along as much info as they can about the sender
             // of the message; 'origin' is the origin component alone, while
@@ -479,7 +480,7 @@ if (!window['gadgets']['rpc']) { // make
       var callback = callbacks[callbackId];
       if (callback) {
         delete callbacks[callbackId];
-        callback(result);
+        callback.call(this, result);
       }
     };
 
@@ -651,6 +652,7 @@ if (!window['gadgets']['rpc']) { // make
           transport.init(process, transportReady);
         }
         setAuthToken('..', rpctoken, opt_forcesecure || params['forcesecure']);
+        passReferrer = String(cfg['passReferrer']) === 'true';
       }
       gadgets.config.register('rpc', null, init);
     }
@@ -869,6 +871,10 @@ if (!window['gadgets']['rpc']) { // make
           'l': useLegacyProtocol[targetId]
         };
 
+        if (passReferrer) {
+          rpc['r'] = window.location.href;
+        }
+
         if (targetId !== '..' &&
             parseSiblingId(targetId) == null &&  // sibling never in the 
document
             !document.getElementById(targetId)) {


Reply via email to