Author: jasvir
Date: Thu May 12 23:53:55 2011
New Revision: 1102514

URL: http://svn.apache.org/viewvc?rev=1102514&view=rev
Log:
Patch from Felix Lee - thanks!

Taming for static calls in OSAPI


Modified:
    shindig/trunk/features/src/main/javascript/features/caja/feature.xml
    shindig/trunk/features/src/main/javascript/features/caja/taming.js
    shindig/trunk/features/src/main/javascript/features/core.json/taming.js
    shindig/trunk/features/src/main/javascript/features/core.log/taming.js
    
shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js
    
shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js
    
shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js
    shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js
    shindig/trunk/features/src/main/javascript/features/osapi/taming.js
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java

Modified: shindig/trunk/features/src/main/javascript/features/caja/feature.xml
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/caja/feature.xml?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/caja/feature.xml 
(original)
+++ shindig/trunk/features/src/main/javascript/features/caja/feature.xml Thu 
May 12 23:53:55 2011
@@ -23,13 +23,18 @@ specific language governing permissions 
   <dependency>taming</dependency>
   <gadget>
     <script src="taming.js"/>
+    <exports type="js">caja___.getPendingScript</exports>
+    <exports type="js">caja___.getTameGlobal</exports>
     <exports type="js">caja___.grantTameAsRead</exports>
-    <exports type="js">caja___.guestFrameReady</exports>
+    <exports type="js">caja___.loadedGuestFrame</exports>
+    <exports type="js">caja___.loadedTamingFrame</exports>
+    <exports type="js">caja___.markTameAsFunction</exports>
     <exports type="js">caja___.start</exports>
-    <exports type="js">caja___.tamingFrameReady</exports>
+    <exports type="js">caja___.tame</exports>
     <exports type="js">caja___.tamesTo</exports>
     <exports type="js">caja___.whitelistCtors</exports>
     <exports type="js">caja___.whitelistFuncs</exports>
     <exports type="js">caja___.whitelistMeths</exports>
+    <exports type="js">caja___.whitelistProps</exports>
   </gadget>
 </feature>

Modified: shindig/trunk/features/src/main/javascript/features/caja/taming.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/caja/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/caja/taming.js 
(original)
+++ shindig/trunk/features/src/main/javascript/features/caja/taming.js Thu May 
12 23:53:55 2011
@@ -24,6 +24,7 @@
 caja___ = (function() {
   // currently limited to one cajoled gadget per ifr
   var tamingFrame;
+  var tame___;      // tame___ === tamingFrame.contentWindow.___
   var guestFrame;
   var pendingScript;
 
@@ -42,29 +43,43 @@ caja___ = (function() {
   };
 
   function fire(globalScope) {
-    var USELESS = tamingFrame.contentWindow.___.USELESS;
     for (var tamer in tamings___) {
       if (tamings___.hasOwnProperty(tamer)) {
-        tamings___[tamer].call(USELESS, globalScope);
+        tamings___[tamer].call(tame___.USELESS, globalScope);
       }
     }
   }
 
-  function grantTameAsRead(obj, prop) {
-    tamingFrame.contentWindow.___.grantTameAsRead(obj, prop);
+  function getPendingScript() {
+    return pendingScript;
+  }
+
+  function getTameGlobal() {
+    return tamingFrame.contentWindow;
+  }
+
+  function grantTameAsRead(obj, propName) {
+    tame___.grantTameAsRead(obj, propName);
+  }
+
+  function tame(obj) {
+    return tame___.tame(obj);
   }
 
   function tamesTo(feral, tame) {
-    tamingFrame.contentWindow.___.tamesTo(feral, tame);
+    tame___.tamesTo(feral, tame);
+  }
+
+  function markTameAsFunction(f, name) {
+    return tame___.markTameAsFunction(f, name);
   }
 
   function whitelistCtors(schemas) {
-    var ___ = tamingFrame.contentWindow.___;
     var length = schemas.length;
     for (var i = 0; i < length; i++) {
       var schema = schemas[i];
       if (typeof schema[0][schema[1]] === 'function') {
-        ___.markTameAsCtor(
+        tame___.markTameAsCtor(
             schema[0][schema[1]] /* func */,
             schema[2] /* parent */,
             schema[1] /* name */);
@@ -76,12 +91,11 @@ caja___ = (function() {
   }
 
   function whitelistFuncs(schemas) {
-    var ___ = tamingFrame.contentWindow.___;
     var length = schemas.length;
     for (var i = 0; i < length; i++) {
       var schema = schemas[i];
       if (typeof schema[0][schema[1]] === 'function') {
-        ___.markTameAsFunction(schema[0][schema[1]], schema[1]);
+        tame___.markTameAsFunction(schema[0][schema[1]], schema[1]);
       } else {
         gadgets.warn('Error taming function: ' + schema[0] + '.' + schema[1]);
       }
@@ -89,18 +103,25 @@ caja___ = (function() {
   }
 
   function whitelistMeths(schemas) {
-    var ___ = tamingFrame.contentWindow.___;
     var length = schemas.length;
     for (var i = 0; i < length; i++) {
       var schema = schemas[i];
       if (typeof schema[0].prototype[schema[1]] == 'function') {
-        ___.grantTameAsMethod(schema[0], schema[1]);
+        tame___.grantTameAsMethod(schema[0], schema[1]);
       } else {
         gadgets.warn('Error taming method: ' + schema[0] + '.' + schema[1]);
       }
     }
   }
 
+  function whitelistProps(schemas) {
+    var length = schemas.length;
+    for (var i = 0; i < length; i++) {
+      var schema = schemas[i];
+      tame___.grantTameAsRead(schemas[0], schemas[1]);
+    }
+  }
+
   function makeFrame(id) {
     var frame = document.createElement('iframe');
     frame.style.display = 'none';
@@ -111,20 +132,24 @@ caja___ = (function() {
     return frame;
   }
 
-  function start(script) {
+  function start(script, debug) {
+    var debugArg = debug ? '?debug=1' : '';
+
     // guestFrame must be created before loadedTamingFrame fires
     guestFrame = makeFrame('caja-guest-frame');
     var gdoc = guestFrame.contentWindow.document;
     gdoc.write('<html><head>\n');
-    gdoc.write('<script>var cajaIframeDone___ = function(){};<'+'/script>\n');
-    gdoc.write('<script src="js/caja-guest-frame"><'+'/script>\n');
+    gdoc.write('<script>var cajaIframeDone___ = function(){};<\/script>\n');
+    gdoc.write(
+        '<script src="js/caja-guest-frame' + debugArg + '"><\/script>\n');
 
     tamingFrame = makeFrame('caja-taming-frame');
     var tdoc = tamingFrame.contentWindow.document;
     tdoc.write('<html><head>\n');
-    tdoc.write('<script>var cajaIframeDone___ = function(){};<'+'/script>\n');
-    tdoc.write('<script src="js/caja-taming-frame"><'+'/script>\n');
-    tdoc.write('<script>parent.caja___.loadedTamingFrame();<'+'/script>\n');
+    tdoc.write('<script>var cajaIframeDone___ = function(){};<\/script>\n');
+    tdoc.write(
+        '<script src="js/caja-taming-frame' + debugArg + '"><\/script>\n');
+    tdoc.write('<script>parent.caja___.loadedTamingFrame();<\/script>\n');
     tdoc.write('</head></html>');
     tdoc.close();
 
@@ -136,7 +161,7 @@ caja___ = (function() {
 
   function loadedTamingFrame() {
     var gdoc = guestFrame.contentWindow.document;
-    gdoc.write('<script>parent.caja___.loadedGuestFrame();<'+'/script>\n');
+    gdoc.write('<script>parent.caja___.loadedGuestFrame();<\/script>\n');
   }
 
   function loadedGuestFrame() {
@@ -145,56 +170,56 @@ caja___ = (function() {
 
     var gadgetBody = document.getElementById('caja_innerContainer___');
 
-    var tamingWin = tamingFrame.contentWindow;
-    caja___.tameWin = tamingWin;
+    var tameWin = tamingFrame.contentWindow;
+    tame___ = tameWin.___;
+
     // TODO(felix8a): pass pseudo-window location
-    tamingWin.attachDocumentStub(
-        '-g___', uriCallback, imports, gadgetBody);
+    tameWin.attachDocumentStub('-g___', uriCallback, imports, gadgetBody);
     imports.htmlEmitter___ =
-        new tamingWin.HtmlEmitter(gadgetBody, imports.document);
+        new tameWin.HtmlEmitter(gadgetBody, imports.document);
 
-    imports.onerror = tamingWin.___.tame(
-        tamingWin.___.markTameAsFunction(function (msg, source, line) {
+    imports.onerror = tame___.tame(
+        tame___.markTameAsFunction(function (msg, source, line) {
             gadgets.log([msg, source, line]);
         }));
 
     fire(imports);
 
-    // TODO(felix8a): move these to definition
-    imports.gadgets = tamingWin.___.tame(window.gadgets);
-    imports.opensocial = tamingWin.___.tame(window.opensocial);
-    imports.osapi = tamingWin.___.tame(window.osapi);
-
-    tamingWin.___.whitelistAll(imports);
-
-    guestWin.plugin_dispatchEvent___ =
-        tamingWin.plugin_dispatchEvent___;
-    guestWin.plugin_dispatchToHandler___ =
-        tamingWin.plugin_dispatchToHandler___;
+    // these are in globals.js
+    imports.gadgets = tame___.tame(window.gadgets);
+    imports.opensocial = tame___.tame(window.opensocial);
+    imports.osapi = tame___.tame(window.osapi);
+
+    tame___.whitelistAll(imports);
+
+    guestWin.plugin_dispatchEvent___ = tameWin.plugin_dispatchEvent___;
+    guestWin.plugin_dispatchToHandler___ = tameWin.plugin_dispatchToHandler___;
     guestWin.___.getNewModuleHandler().setImports(imports);
     guestWin.___.useDebugSymbols = function(){};
 
     var gdoc = guestWin.document;
     gdoc.write('<script>\n');
-    gdoc.write(pendingScript);
-    gdoc.write('<'+'/script>\n');
-    gdoc.write('<script>\n');
+    gdoc.write('eval(parent.caja___.getPendingScript());');
     gdoc.write('parent.gadgets.util.runOnLoadHandlers();\n');
-    gdoc.write('<'+'/script>\n');
+    gdoc.write('<\/script>\n');
     gdoc.write('</head></html>');
     gdoc.close();
   }
 
   return {
+    getPendingScript: getPendingScript,
+    getTameGlobal: getTameGlobal,
     grantTameAsRead: grantTameAsRead,
     loadedGuestFrame: loadedGuestFrame,
     loadedTamingFrame: loadedTamingFrame,
+    markTameAsFunction: markTameAsFunction,
     start: start,
-    tameWin: null,
+    tame: tame,
     tamesTo: tamesTo,
     whitelistCtors: whitelistCtors,
     whitelistFuncs: whitelistFuncs,
-    whitelistMeths: whitelistMeths
+    whitelistMeths: whitelistMeths,
+    whitelistProps: whitelistProps
   };
 })();
 

Modified: 
shindig/trunk/features/src/main/javascript/features/core.json/taming.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.json/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.json/taming.js 
(original)
+++ shindig/trunk/features/src/main/javascript/features/core.json/taming.js Thu 
May 12 23:53:55 2011
@@ -22,6 +22,8 @@
  * Tame and expose core gadgets.* API to cajoled gadgets
  */
 tamings___.push(function(imports) {
-  caja___.tamesTo(gadgets.json.stringify, caja___.tameWin.safeJSON.stringify);
-  caja___.tamesTo(gadgets.json.parse, caja___.tameWin.safeJSON.parse);
+  caja___.tamesTo(gadgets.json.stringify,
+                  caja___.getTameGlobal().safeJSON.stringify);
+  caja___.tamesTo(gadgets.json.parse,
+                  caja___.getTameGlobal().safeJSON.parse);
 });

Modified: shindig/trunk/features/src/main/javascript/features/core.log/taming.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.log/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.log/taming.js 
(original)
+++ shindig/trunk/features/src/main/javascript/features/core.log/taming.js Thu 
May 12 23:53:55 2011
@@ -28,8 +28,10 @@ tamings___.push(function(imports) {
     [gadgets, 'error'],
     [gadgets, 'setLogLevel']
   ]);
-  caja___.grantTameAsRead(gadgets.log, 'INFO');
-  caja___.grantTameAsRead(gadgets.log, 'WARNING');
-  caja___.grantTameAsRead(gadgets.log, 'ERROR');
-  caja___.grantTameAsRead(gadgets.log, 'NONE');
+  caja___.whitelistProps([
+    [gadgets.log, 'INFO'],
+    [gadgets.log, 'WARNING'],
+    [gadgets.log, 'ERROR'],
+    [gadgets.log, 'NONE']
+  ]);
 });

Modified: 
shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- 
shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js 
(original)
+++ 
shindig/trunk/features/src/main/javascript/features/gadgets.json.ext/taming.js 
Thu May 12 23:53:55 2011
@@ -22,5 +22,6 @@
  * Tame and expose core gadgets.* API to cajoled gadgets
  */
 tamings___.push(function(imports) {
-  ___.tamesTo(gadgets.json.xml.convertXmlToJson, safeJSON.convertXmlToJson);
+  caja___.tamesTo(gadgets.json.xml.convertXmlToJson,
+                  caja___.getTameGlobal().safeJSON.convertXmlToJson);
 });

Modified: 
shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- 
shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js 
(original)
+++ 
shindig/trunk/features/src/main/javascript/features/opensocial-base/taming.js 
Thu May 12 23:53:55 2011
@@ -26,4 +26,8 @@ tamings___.push(function(imports) {
     [window, 'JsonMessageCollection', opensocial.MessageCollection],
     [window, 'JsonPerson', opensocial.Person]
   ]);
+  caja___.whitelistMeths([
+    [JsonPerson, 'getDisplayName'],
+    [JsonPerson, 'getAppData']
+  ]);
 });

Modified: 
shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- 
shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js
 (original)
+++ 
shindig/trunk/features/src/main/javascript/features/opensocial-reference/taming.js
 Thu May 12 23:53:55 2011
@@ -22,10 +22,6 @@
  * Tame and expose opensocial.* API to cajoled gadgets
  */
 tamings___.push(function(imports) {
-  // TODO(felix8a): tame these
-  // ___.grantInnocentMethod(JsonPerson.prototype, 'getDisplayName');
-  // ___.grantInnocentMethod(JsonPerson.prototype, 'getAppData');
-
   caja___.whitelistCtors([
     [window, 'JsonRpcRequestItem', Object],
     [opensocial, 'Activity', Object],
@@ -51,7 +47,10 @@ tamings___.push(function(imports) {
     [opensocial, 'ResponseItem', Object],
     [opensocial, 'Url', Object]
   ]);
+
   caja___.whitelistMeths([
+    [JsonPerson, 'getDisplayName'],
+    [JsonPerson, 'getAppData'],
     [opensocial.Activity, 'getField'],
     [opensocial.Activity, 'getId'],
     [opensocial.Activity, 'setField'],
@@ -165,49 +164,50 @@ tamings___.push(function(imports) {
     [opensocial, 'requestShareApp']
   ]);
 
-  caja___.grantTameAsRead(opensocial, 'CreateActivityPriority');
-  caja___.grantTameAsRead(opensocial, 'EscapeType');
-  caja___.grantTameAsRead(opensocial.Activity, 'Field');
-  caja___.grantTameAsRead(opensocial.Address, 'Field');
-  caja___.grantTameAsRead(opensocial.Album, 'Field');
-  caja___.grantTameAsRead(opensocial.BodyType, 'Field');
-  caja___.grantTameAsRead(opensocial.DataRequest, 'ActivityRequestFields');
-  caja___.grantTameAsRead(opensocial.DataRequest, 'DataRequestFields');
-  caja___.grantTameAsRead(opensocial.DataRequest, 'FilterType');
-  caja___.grantTameAsRead(opensocial.DataRequest, 'Group');
-  caja___.grantTameAsRead(opensocial.DataRequest, 'PeopleRequestFields');
-  caja___.grantTameAsRead(opensocial.DataRequest, 'SortOrder');
-  caja___.grantTameAsRead(opensocial.Email, 'Field');
-  caja___.grantTameAsRead(opensocial.Enum, 'Smoker');
-  caja___.grantTameAsRead(opensocial.Enum, 'Drinker');
-  caja___.grantTameAsRead(opensocial.Enum, 'Gender');
-  caja___.grantTameAsRead(opensocial.Enum, 'LookingFor');
-  caja___.grantTameAsRead(opensocial.Enum, 'Presence');
-  caja___.grantTameAsRead(opensocial.Environment, 'ObjectType');
-  caja___.grantTameAsRead(opensocial.IdSpec, 'Field');
-  caja___.grantTameAsRead(opensocial.IdSpec, 'GroupId');
-  caja___.grantTameAsRead(opensocial.IdSpec, 'PersonId');
-  caja___.grantTameAsRead(opensocial.MediaItem, 'Field');
-  caja___.grantTameAsRead(opensocial.MediaItem, 'Type');
-  caja___.grantTameAsRead(opensocial.Message, 'Field');
-  caja___.grantTameAsRead(opensocial.Message, 'Type');
-  caja___.grantTameAsRead(opensocial.MessageCollection, 'Field');
-  caja___.grantTameAsRead(opensocial.Name, 'Field');
-  caja___.grantTameAsRead(opensocial.NavigationParameters, 'DestinationType');
-  caja___.grantTameAsRead(opensocial.NavigationParameters, 'Field');
-  caja___.grantTameAsRead(opensocial.Organization, 'Field');
-  caja___.grantTameAsRead(opensocial.Person, 'Field');
-  caja___.grantTameAsRead(opensocial.Phone, 'Field');
-  caja___.grantTameAsRead(opensocial.ResponseItem, 'Error');
-  caja___.grantTameAsRead(opensocial.Url, 'Field');
+  caja___.whitelistProps([
+    [opensocial, 'CreateActivityPriority'],
+    [opensocial, 'EscapeType'],
+    [opensocial.Activity, 'Field'],
+    [opensocial.Address, 'Field'],
+    [opensocial.Album, 'Field'],
+    [opensocial.BodyType, 'Field'],
+    [opensocial.DataRequest, 'ActivityRequestFields'],
+    [opensocial.DataRequest, 'DataRequestFields'],
+    [opensocial.DataRequest, 'FilterType'],
+    [opensocial.DataRequest, 'Group'],
+    [opensocial.DataRequest, 'PeopleRequestFields'],
+    [opensocial.DataRequest, 'SortOrder'],
+    [opensocial.Email, 'Field'],
+    [opensocial.Enum, 'Smoker'],
+    [opensocial.Enum, 'Drinker'],
+    [opensocial.Enum, 'Gender'],
+    [opensocial.Enum, 'LookingFor'],
+    [opensocial.Enum, 'Presence'],
+    [opensocial.Environment, 'ObjectType'],
+    [opensocial.IdSpec, 'Field'],
+    [opensocial.IdSpec, 'GroupId'],
+    [opensocial.IdSpec, 'PersonId'],
+    [opensocial.MediaItem, 'Field'],
+    [opensocial.MediaItem, 'Type'],
+    [opensocial.Message, 'Field'],
+    [opensocial.Message, 'Type'],
+    [opensocial.MessageCollection, 'Field'],
+    [opensocial.Name, 'Field'],
+    [opensocial.NavigationParameters, 'DestinationType'],
+    [opensocial.NavigationParameters, 'Field'],
+    [opensocial.Organization, 'Field'],
+    [opensocial.Person, 'Field'],
+    [opensocial.Phone, 'Field'],
+    [opensocial.ResponseItem, 'Error'],
+    [opensocial.Url, 'Field']
+  ]);
 
   // TODO(jasvir): The following object *is* exposed to gadget
   // code because its returned by opensocial.DataRequest.*
   // but isn't documented in gadget API.
-  // TODO(felix8a): tame these
-  //caja___.grantTameAsRead(JsonRpcRequestItem, 'rpc');
-  //caja___.grantTameAsRead(JsonRpcRequestItem, 'processData');
-  //caja___.grantTameAsRead(JsonRpcRequestItem, 'processResponse');
-  //caja___.grantTameAsRead(JsonRpcRequestItem, 'errors');
+  caja___.grantTameAsRead(JsonRpcRequestItem, 'rpc');
+  caja___.grantTameAsRead(JsonRpcRequestItem, 'processData');
+  caja___.grantTameAsRead(JsonRpcRequestItem, 'processResponse');
+  caja___.grantTameAsRead(JsonRpcRequestItem, 'errors');
 
 });

Modified: 
shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js 
(original)
+++ shindig/trunk/features/src/main/javascript/features/osapi.base/taming.js 
Thu May 12 23:53:55 2011
@@ -22,15 +22,13 @@
  * Tame and expose core osapi.* API to cajoled gadgets
  */
 tamings___.push(function(imports) {
-  // TODO(felix8a): tame osapi
-  // ___.tamesTo(osapi.newBatch, ___.markFuncFreeze(function() {
-  //   var result = osapi.newBatch();
-  //   ___.markFunc(result['add'], 'add');
-  //   ___.markFunc(result['execute'], 'execute');
-  //   return ___.tame(result);
-  // }));
-  // 
-  // // OSAPI functions are marked as simple funcs as they are registered
-  // imports.outers.osapi = ___.tame(osapi);
-  // ___.grantTameAsRead(imports.outers, 'osapi');
+  caja___.tamesTo(osapi.newBatch, caja___.markTameAsFunction(function() {
+    var batch = osapi.newBatch();
+    caja___.whitelistFuncs([
+      [batch, 'add'],
+      [batch, 'execute']
+    ]);
+    var t = caja___.tame(batch);
+    return t;
+  }, 'newBatch'));
 });

Modified: shindig/trunk/features/src/main/javascript/features/osapi/taming.js
URL: 
http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/osapi/taming.js?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/osapi/taming.js 
(original)
+++ shindig/trunk/features/src/main/javascript/features/osapi/taming.js Thu May 
12 23:53:55 2011
@@ -34,13 +34,6 @@ tamings___.push(function(imports) {
         [osapi.people, 'getOwner'],
         [osapi.people, 'getOwnerFriends']
       ]);
-      // Careful not to clobber osapi.people which already has tamed functions 
on it
-      // TODO(felix8a): tame these
-      //savedImports.outers.osapi.people.getViewer = 
___.tame(osapi.people.getViewer);
-      //savedImports.outers.osapi.people.getViewerFriends = 
___.tame(osapi.people.getViewerFriends);
-      //savedImports.outers.osapi.people.getOwner = 
___.tame(osapi.people.getOwner);
-      //savedImports.outers.osapi.people.getOwnerFriends = 
___.tame(osapi.people.getOwnerFriends);
     }
   });
-
 });

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java?rev=1102514&r1=1102513&r2=1102514&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentRewriter.java
 Thu May 12 23:53:55 2011
@@ -259,10 +259,9 @@ public class CajaContentRewriter impleme
         /* invisible */ false);
     cajoledOutput.appendChild(messagesNode);
 
-    // TODO(felix8a): style boxing
     Element outerDiv = doc.createElement("div");
     outerDiv.setAttribute("id", "caja_outerContainer___");
-    outerDiv.setAttribute("style", "position: relative;");
+    outerDiv.setAttribute("style", "position: relative; overflow: hidden;");
     cajoledOutput.appendChild(outerDiv);
 
     Element innerDiv = doc.createElement("div");
@@ -273,7 +272,7 @@ public class CajaContentRewriter impleme
     innerDiv.appendChild(doc.adoptNode(result.html));
 
     String cajoledJs = renderJs(result.js, debug);
-    cajoledOutput.appendChild(cajaStart(doc, cajoledJs));
+    cajoledOutput.appendChild(cajaStart(doc, cajoledJs, debug));
 
     createContainerFor(doc, cajoledOutput);
     mc.documentChanged();
@@ -395,13 +394,15 @@ public class CajaContentRewriter impleme
     return rendered.toString();
   }
 
-  private Element cajaStart(Document doc, String cajoledJs) {
+  private Element cajaStart(Document doc, String cajoledJs, boolean debug) {
     Element scriptElement = doc.createElement("script");
     scriptElement.setAttribute("type", "text/javascript");
     StringBuilder start = new StringBuilder();
     start.append("caja___.start(\n'");
     Escaping.escapeJsString(cajoledJs, true, true, start);
-    start.append("');\n");
+    start.append("', ");
+    start.append(debug ? "true" : "false");
+    start.append(");\n");
     scriptElement.appendChild(doc.createTextNode(start.toString()));
     return scriptElement;
   }


Reply via email to