Reviewers: chirag,

Description:
* filters out caja properties from native json.stringify
* tames methods created using osapi.registerMethod_
  - the latter should be reviewed particularly carefully

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

Affected files:
  M     features/src/main/javascript/features/core.json/json.js
  M     features/src/main/javascript/features/osapi/osapi.js
M java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java


Index: java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java
===================================================================
--- java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java (revision 918319) +++ java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java (working copy)
@@ -238,6 +238,13 @@
   }

   @Test
+  public void testOsapiCaja() throws Exception {
+    executeAllPageTests("osapi/personTest", true /* caja */);
+    executeAllPageTests("osapi/appdataTest", true /* caja */);
+    executeAllPageTests("osapi/batchTest", true /* caja */);
+  }
+
+  @Test
   public void testTemplateRewrite() throws Exception {
     HtmlPage page = executePageTest("templateRewriter", null);

Index: features/src/main/javascript/features/core.json/json.js
===================================================================
--- features/src/main/javascript/features/core.json/json.js (revision 918319)
+++ features/src/main/javascript/features/core.json/json.js     (working copy)
@@ -52,7 +52,10 @@
     },
     'stringify': function(obj) {
       try {
-        return window.JSON.stringify(obj);
+        return window.JSON.stringify(obj, function(k,v) {
+          if (!/___$/.test(k))
+            return v;
+        });
       } catch (e) {
         return null;
       }
Index: features/src/main/javascript/features/osapi/osapi.js
===================================================================
--- features/src/main/javascript/features/osapi/osapi.js        (revision 
918319)
+++ features/src/main/javascript/features/osapi/osapi.js        (working copy)
@@ -17,9 +17,7 @@
  */

 var osapi = osapi || {};
-var tamings___ = tamings___ || [];
 (function() {
-
   /**
    * Called by the transports for each service method that they expose
    * @param {string} method  The method to expose e.g. "people.get"
@@ -38,16 +36,20 @@
       var batch = osapi.newBatch();
       var boundCall = {};
       boundCall.execute = function(callback) {
+        var feralCallback = window.___ ? ___.untame(callback) : callback;
+        var that = window.___ ? ___.USELESS : this;
         batch.add(method, this);
         batch.execute(function(batchResult) {
           if (batchResult.error) {
-            callback(batchResult.error);
+            feralCallback.call(that, batchResult.error);
           } else {
-            callback(batchResult[method]);
+            feralCallback.call(that, batchResult[method]);
           }
         });
       }
-
+      if (window.___) {
+          ___.markInnocent(boundCall.execute, 'execute');
+      }
// TODO: This shouldnt really be necessary. The spec should be clear enough about
       // defaults that we dont have to populate this.
       rpc = rpc || {};


Reply via email to