diff pydershell/test.py @ 24:dace90a7f5e3

Added a 'jsexposed' decorator and, for security purposes, required that __jsexposed__ be True on all callables passed into JS-land as well.
author Atul Varma <varmaa@toolness.com>
date Mon, 07 Sep 2009 16:53:41 -0700
parents 9413bebf2ee6
children b7037cd0f375
line wrap: on
line diff
--- a/pydershell/test.py	Mon Sep 07 16:25:58 2009 -0700
+++ b/pydershell/test.py	Mon Sep 07 16:53:41 2009 -0700
@@ -5,38 +5,38 @@
 import sys
 
 import pydermonkey
-from pydershell import JsSandbox, JsExposedObject
+from pydershell import JsSandbox, JsExposedObject, jsexposed
 
 if __name__ == '__main__':
     sandbox = JsSandbox()
 
     class Baz(JsExposedObject):
+        @jsexposed
         def woozle(self, blap):
             return blap + 5
-        woozle.__jsexposed__ = True
 
+    @jsexposed(on=sandbox.root)
     def baz():
         return Baz()
-    sandbox.root.baz = baz
 
+    @jsexposed(on=sandbox.root)
     def bar(obj):
         print obj.bar()
-    sandbox.root.bar = bar
 
+    @jsexposed(on=sandbox.root)
     def foo(callback):
         return callback()
-    sandbox.root.foo = foo
 
+    @jsexposed(on=sandbox.root)
     def ensureBaz(baz):
         if not isinstance(baz, Baz):
             print "Uhoh"
         else:
             print "ok"
-    sandbox.root.ensureBaz = ensureBaz
 
+    @jsexposed(name="print", on=sandbox.root)
     def jsprint(string):
         print string
-    sandbox.root['print'] = jsprint
 
     retval = sandbox.run_script('test.js')